<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CustomerSearchRowBasic StructType
 * @subpackage Structs
 */
class CustomerSearchRowBasic 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 altContact
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $altContact;
    /**
     * 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 assignedSite
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $assignedSite;
    /**
     * The assignedSiteId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $assignedSiteId;
    /**
     * The attention
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $attention;
    /**
     * The availableOffline
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $availableOffline;
    /**
     * The balance
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $balance;
    /**
     * 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 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 buyingReason
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $buyingReason;
    /**
     * The buyingTimeFrame
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $buyingTimeFrame;
    /**
     * The category
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $category;
    /**
     * The ccCustomerCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $ccCustomerCode;
    /**
     * The ccDefault
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $ccDefault;
    /**
     * The ccExpDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $ccExpDate;
    /**
     * The ccHolderName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $ccHolderName;
    /**
     * The ccInternalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $ccInternalId;
    /**
     * The ccNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $ccNumber;
    /**
     * The ccState
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $ccState;
    /**
     * The ccStateFrom
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $ccStateFrom;
    /**
     * The ccType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $ccType;
    /**
     * The city
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $city;
    /**
     * The comments
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $comments;
    /**
     * The companyName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $companyName;
    /**
     * The consolBalance
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $consolBalance;
    /**
     * The consolDaysOverdue
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $consolDaysOverdue;
    /**
     * The consolDepositBalance
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $consolDepositBalance;
    /**
     * The consolOverdueBalance
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $consolOverdueBalance;
    /**
     * The consolUnbilledOrders
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $consolUnbilledOrders;
    /**
     * The contact
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $contact;
    /**
     * The contribution
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $contribution;
    /**
     * The contributionPrimary
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $contributionPrimary;
    /**
     * The conversionDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $conversionDate;
    /**
     * 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 creditHold
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $creditHold;
    /**
     * The creditHoldOverride
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $creditHoldOverride;
    /**
     * The creditLimit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $creditLimit;
    /**
     * The currency
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $currency;
    /**
     * The dateClosed
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $dateClosed;
    /**
     * The dateCreated
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $dateCreated;
    /**
     * The daysOverdue
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $daysOverdue;
    /**
     * The defaultOrderPriority
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $defaultOrderPriority;
    /**
     * The defaultTaxReg
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $defaultTaxReg;
    /**
     * The depositBalance
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $depositBalance;
    /**
     * The drAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $drAccount;
    /**
     * The email
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $email;
    /**
     * The emailPreference
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $emailPreference;
    /**
     * The emailTransactions
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $emailTransactions;
    /**
     * The endDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $endDate;
    /**
     * 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 entityStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $entityStatus;
    /**
     * The estimatedBudget
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedBudget;
    /**
     * The explicitConversion
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $explicitConversion;
    /**
     * 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 faxTransactions
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $faxTransactions;
    /**
     * The firstName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $firstName;
    /**
     * The firstOrderDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $firstOrderDate;
    /**
     * The firstSaleDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $firstSaleDate;
    /**
     * The fxAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $fxAccount;
    /**
     * The fxBalance
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $fxBalance;
    /**
     * The fxConsolBalance
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $fxConsolBalance;
    /**
     * The fxConsolUnbilledOrders
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $fxConsolUnbilledOrders;
    /**
     * The fxUnbilledOrders
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $fxUnbilledOrders;
    /**
     * 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 groupPricingLevel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $groupPricingLevel;
    /**
     * The hasDuplicates
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $hasDuplicates;
    /**
     * The homePhone
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $homePhone;
    /**
     * 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 isBudgetApproved
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isBudgetApproved;
    /**
     * 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 isPerson
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isPerson;
    /**
     * The isShipAddress
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isShipAddress;
    /**
     * The itemPricingLevel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $itemPricingLevel;
    /**
     * The itemPricingUnitPrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $itemPricingUnitPrice;
    /**
     * The jobEndDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $jobEndDate;
    /**
     * The jobProjectedEnd
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $jobProjectedEnd;
    /**
     * The jobStartDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $jobStartDate;
    /**
     * The jobType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $jobType;
    /**
     * 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 lastOrderDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastOrderDate;
    /**
     * The lastSaleDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastSaleDate;
    /**
     * The leadDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $leadDate;
    /**
     * The leadSource
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $leadSource;
    /**
     * The level
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $level;
    /**
     * The manualCreditHold
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $manualCreditHold;
    /**
     * 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 monthlyClosing
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $monthlyClosing;
    /**
     * The onCreditHold
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $onCreditHold;
    /**
     * The overdueBalance
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $overdueBalance;
    /**
     * The parent
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $parent;
    /**
     * The partner
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $partner;
    /**
     * The partnerContribution
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $partnerContribution;
    /**
     * The partnerRole
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $partnerRole;
    /**
     * The partnerTeamMember
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $partnerTeamMember;
    /**
     * The pec
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $pec;
    /**
     * The permission
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $permission;
    /**
     * 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 prefCCProcessor
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $prefCCProcessor;
    /**
     * The priceLevel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $priceLevel;
    /**
     * The pricingGroup
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $pricingGroup;
    /**
     * The pricingItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $pricingItem;
    /**
     * The printTransactions
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $printTransactions;
    /**
     * The prospectDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $prospectDate;
    /**
     * The receivablesAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $receivablesAccount;
    /**
     * The reminderDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $reminderDays;
    /**
     * The resaleNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $resaleNumber;
    /**
     * The role
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $role;
    /**
     * The salesReadiness
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $salesReadiness;
    /**
     * The salesRep
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $salesRep;
    /**
     * The salesTeamMember
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $salesTeamMember;
    /**
     * The salesTeamRole
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $salesTeamRole;
    /**
     * The salutation
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $salutation;
    /**
     * The shipAddress
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipAddress;
    /**
     * 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 shipComplete
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $shipComplete;
    /**
     * 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 shippingItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $shippingItem;
    /**
     * 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 sourceSite
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $sourceSite;
    /**
     * The sourceSiteId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $sourceSiteId;
    /**
     * The stage
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $stage;
    /**
     * The startDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $startDate;
    /**
     * The state
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    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 taxable
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $taxable;
    /**
     * The taxItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $taxItem;
    /**
     * The terms
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $terms;
    /**
     * The territory
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $territory;
    /**
     * The title
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $title;
    /**
     * The unbilledOrders
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $unbilledOrders;
    /**
     * The url
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $url;
    /**
     * The vatRegNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $vatRegNumber;
    /**
     * The webLead
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $webLead;
    /**
     * 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 CustomerSearchRowBasic
     * @uses CustomerSearchRowBasic::setAccountNumber()
     * @uses CustomerSearchRowBasic::setAddress()
     * @uses CustomerSearchRowBasic::setAddress1()
     * @uses CustomerSearchRowBasic::setAddress2()
     * @uses CustomerSearchRowBasic::setAddress3()
     * @uses CustomerSearchRowBasic::setAddressee()
     * @uses CustomerSearchRowBasic::setAddressInternalId()
     * @uses CustomerSearchRowBasic::setAddressLabel()
     * @uses CustomerSearchRowBasic::setAddressPhone()
     * @uses CustomerSearchRowBasic::setAltContact()
     * @uses CustomerSearchRowBasic::setAltEmail()
     * @uses CustomerSearchRowBasic::setAltName()
     * @uses CustomerSearchRowBasic::setAltPhone()
     * @uses CustomerSearchRowBasic::setAssignedSite()
     * @uses CustomerSearchRowBasic::setAssignedSiteId()
     * @uses CustomerSearchRowBasic::setAttention()
     * @uses CustomerSearchRowBasic::setAvailableOffline()
     * @uses CustomerSearchRowBasic::setBalance()
     * @uses CustomerSearchRowBasic::setBillAddress()
     * @uses CustomerSearchRowBasic::setBillAddress1()
     * @uses CustomerSearchRowBasic::setBillAddress2()
     * @uses CustomerSearchRowBasic::setBillAddress3()
     * @uses CustomerSearchRowBasic::setBillAddressee()
     * @uses CustomerSearchRowBasic::setBillAttention()
     * @uses CustomerSearchRowBasic::setBillCity()
     * @uses CustomerSearchRowBasic::setBillCountry()
     * @uses CustomerSearchRowBasic::setBillCountryCode()
     * @uses CustomerSearchRowBasic::setBillPhone()
     * @uses CustomerSearchRowBasic::setBillState()
     * @uses CustomerSearchRowBasic::setBillZipCode()
     * @uses CustomerSearchRowBasic::setBuyingReason()
     * @uses CustomerSearchRowBasic::setBuyingTimeFrame()
     * @uses CustomerSearchRowBasic::setCategory()
     * @uses CustomerSearchRowBasic::setCcCustomerCode()
     * @uses CustomerSearchRowBasic::setCcDefault()
     * @uses CustomerSearchRowBasic::setCcExpDate()
     * @uses CustomerSearchRowBasic::setCcHolderName()
     * @uses CustomerSearchRowBasic::setCcInternalId()
     * @uses CustomerSearchRowBasic::setCcNumber()
     * @uses CustomerSearchRowBasic::setCcState()
     * @uses CustomerSearchRowBasic::setCcStateFrom()
     * @uses CustomerSearchRowBasic::setCcType()
     * @uses CustomerSearchRowBasic::setCity()
     * @uses CustomerSearchRowBasic::setComments()
     * @uses CustomerSearchRowBasic::setCompanyName()
     * @uses CustomerSearchRowBasic::setConsolBalance()
     * @uses CustomerSearchRowBasic::setConsolDaysOverdue()
     * @uses CustomerSearchRowBasic::setConsolDepositBalance()
     * @uses CustomerSearchRowBasic::setConsolOverdueBalance()
     * @uses CustomerSearchRowBasic::setConsolUnbilledOrders()
     * @uses CustomerSearchRowBasic::setContact()
     * @uses CustomerSearchRowBasic::setContribution()
     * @uses CustomerSearchRowBasic::setContributionPrimary()
     * @uses CustomerSearchRowBasic::setConversionDate()
     * @uses CustomerSearchRowBasic::setCountry()
     * @uses CustomerSearchRowBasic::setCountryCode()
     * @uses CustomerSearchRowBasic::setCreditHold()
     * @uses CustomerSearchRowBasic::setCreditHoldOverride()
     * @uses CustomerSearchRowBasic::setCreditLimit()
     * @uses CustomerSearchRowBasic::setCurrency()
     * @uses CustomerSearchRowBasic::setDateClosed()
     * @uses CustomerSearchRowBasic::setDateCreated()
     * @uses CustomerSearchRowBasic::setDaysOverdue()
     * @uses CustomerSearchRowBasic::setDefaultOrderPriority()
     * @uses CustomerSearchRowBasic::setDefaultTaxReg()
     * @uses CustomerSearchRowBasic::setDepositBalance()
     * @uses CustomerSearchRowBasic::setDrAccount()
     * @uses CustomerSearchRowBasic::setEmail()
     * @uses CustomerSearchRowBasic::setEmailPreference()
     * @uses CustomerSearchRowBasic::setEmailTransactions()
     * @uses CustomerSearchRowBasic::setEndDate()
     * @uses CustomerSearchRowBasic::setEntityId()
     * @uses CustomerSearchRowBasic::setEntityNumber()
     * @uses CustomerSearchRowBasic::setEntityStatus()
     * @uses CustomerSearchRowBasic::setEstimatedBudget()
     * @uses CustomerSearchRowBasic::setExplicitConversion()
     * @uses CustomerSearchRowBasic::setExternalId()
     * @uses CustomerSearchRowBasic::setFax()
     * @uses CustomerSearchRowBasic::setFaxTransactions()
     * @uses CustomerSearchRowBasic::setFirstName()
     * @uses CustomerSearchRowBasic::setFirstOrderDate()
     * @uses CustomerSearchRowBasic::setFirstSaleDate()
     * @uses CustomerSearchRowBasic::setFxAccount()
     * @uses CustomerSearchRowBasic::setFxBalance()
     * @uses CustomerSearchRowBasic::setFxConsolBalance()
     * @uses CustomerSearchRowBasic::setFxConsolUnbilledOrders()
     * @uses CustomerSearchRowBasic::setFxUnbilledOrders()
     * @uses CustomerSearchRowBasic::setGiveAccess()
     * @uses CustomerSearchRowBasic::setGlobalSubscriptionStatus()
     * @uses CustomerSearchRowBasic::setGroupPricingLevel()
     * @uses CustomerSearchRowBasic::setHasDuplicates()
     * @uses CustomerSearchRowBasic::setHomePhone()
     * @uses CustomerSearchRowBasic::setImage()
     * @uses CustomerSearchRowBasic::setInternalId()
     * @uses CustomerSearchRowBasic::setIsBudgetApproved()
     * @uses CustomerSearchRowBasic::setIsDefaultBilling()
     * @uses CustomerSearchRowBasic::setIsDefaultShipping()
     * @uses CustomerSearchRowBasic::setIsInactive()
     * @uses CustomerSearchRowBasic::setIsPerson()
     * @uses CustomerSearchRowBasic::setIsShipAddress()
     * @uses CustomerSearchRowBasic::setItemPricingLevel()
     * @uses CustomerSearchRowBasic::setItemPricingUnitPrice()
     * @uses CustomerSearchRowBasic::setJobEndDate()
     * @uses CustomerSearchRowBasic::setJobProjectedEnd()
     * @uses CustomerSearchRowBasic::setJobStartDate()
     * @uses CustomerSearchRowBasic::setJobType()
     * @uses CustomerSearchRowBasic::setLanguage()
     * @uses CustomerSearchRowBasic::setLastModifiedDate()
     * @uses CustomerSearchRowBasic::setLastName()
     * @uses CustomerSearchRowBasic::setLastOrderDate()
     * @uses CustomerSearchRowBasic::setLastSaleDate()
     * @uses CustomerSearchRowBasic::setLeadDate()
     * @uses CustomerSearchRowBasic::setLeadSource()
     * @uses CustomerSearchRowBasic::setLevel()
     * @uses CustomerSearchRowBasic::setManualCreditHold()
     * @uses CustomerSearchRowBasic::setMiddleName()
     * @uses CustomerSearchRowBasic::setMobilePhone()
     * @uses CustomerSearchRowBasic::setMonthlyClosing()
     * @uses CustomerSearchRowBasic::setOnCreditHold()
     * @uses CustomerSearchRowBasic::setOverdueBalance()
     * @uses CustomerSearchRowBasic::setParent()
     * @uses CustomerSearchRowBasic::setPartner()
     * @uses CustomerSearchRowBasic::setPartnerContribution()
     * @uses CustomerSearchRowBasic::setPartnerRole()
     * @uses CustomerSearchRowBasic::setPartnerTeamMember()
     * @uses CustomerSearchRowBasic::setPec()
     * @uses CustomerSearchRowBasic::setPermission()
     * @uses CustomerSearchRowBasic::setPhone()
     * @uses CustomerSearchRowBasic::setPhoneticName()
     * @uses CustomerSearchRowBasic::setPrefCCProcessor()
     * @uses CustomerSearchRowBasic::setPriceLevel()
     * @uses CustomerSearchRowBasic::setPricingGroup()
     * @uses CustomerSearchRowBasic::setPricingItem()
     * @uses CustomerSearchRowBasic::setPrintTransactions()
     * @uses CustomerSearchRowBasic::setProspectDate()
     * @uses CustomerSearchRowBasic::setReceivablesAccount()
     * @uses CustomerSearchRowBasic::setReminderDays()
     * @uses CustomerSearchRowBasic::setResaleNumber()
     * @uses CustomerSearchRowBasic::setRole()
     * @uses CustomerSearchRowBasic::setSalesReadiness()
     * @uses CustomerSearchRowBasic::setSalesRep()
     * @uses CustomerSearchRowBasic::setSalesTeamMember()
     * @uses CustomerSearchRowBasic::setSalesTeamRole()
     * @uses CustomerSearchRowBasic::setSalutation()
     * @uses CustomerSearchRowBasic::setShipAddress()
     * @uses CustomerSearchRowBasic::setShipAddress1()
     * @uses CustomerSearchRowBasic::setShipAddress2()
     * @uses CustomerSearchRowBasic::setShipAddress3()
     * @uses CustomerSearchRowBasic::setShipAddressee()
     * @uses CustomerSearchRowBasic::setShipAttention()
     * @uses CustomerSearchRowBasic::setShipCity()
     * @uses CustomerSearchRowBasic::setShipComplete()
     * @uses CustomerSearchRowBasic::setShipCountry()
     * @uses CustomerSearchRowBasic::setShipCountryCode()
     * @uses CustomerSearchRowBasic::setShipPhone()
     * @uses CustomerSearchRowBasic::setShippingItem()
     * @uses CustomerSearchRowBasic::setShipState()
     * @uses CustomerSearchRowBasic::setShipZip()
     * @uses CustomerSearchRowBasic::setSourceSite()
     * @uses CustomerSearchRowBasic::setSourceSiteId()
     * @uses CustomerSearchRowBasic::setStage()
     * @uses CustomerSearchRowBasic::setStartDate()
     * @uses CustomerSearchRowBasic::setState()
     * @uses CustomerSearchRowBasic::setSubscription()
     * @uses CustomerSearchRowBasic::setSubscriptionDate()
     * @uses CustomerSearchRowBasic::setSubscriptionStatus()
     * @uses CustomerSearchRowBasic::setSubsidiary()
     * @uses CustomerSearchRowBasic::setTaxable()
     * @uses CustomerSearchRowBasic::setTaxItem()
     * @uses CustomerSearchRowBasic::setTerms()
     * @uses CustomerSearchRowBasic::setTerritory()
     * @uses CustomerSearchRowBasic::setTitle()
     * @uses CustomerSearchRowBasic::setUnbilledOrders()
     * @uses CustomerSearchRowBasic::setUrl()
     * @uses CustomerSearchRowBasic::setVatRegNumber()
     * @uses CustomerSearchRowBasic::setWebLead()
     * @uses CustomerSearchRowBasic::setZipCode()
     * @uses CustomerSearchRowBasic::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[] $altContact
     * @param \StructType\SearchColumnStringField[] $altEmail
     * @param \StructType\SearchColumnStringField[] $altName
     * @param \StructType\SearchColumnStringField[] $altPhone
     * @param \StructType\SearchColumnSelectField[] $assignedSite
     * @param \StructType\SearchColumnLongField[] $assignedSiteId
     * @param \StructType\SearchColumnStringField[] $attention
     * @param \StructType\SearchColumnBooleanField[] $availableOffline
     * @param \StructType\SearchColumnDoubleField[] $balance
     * @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\SearchColumnStringField[] $billPhone
     * @param \StructType\SearchColumnStringField[] $billState
     * @param \StructType\SearchColumnStringField[] $billZipCode
     * @param \StructType\SearchColumnStringField[] $buyingReason
     * @param \StructType\SearchColumnStringField[] $buyingTimeFrame
     * @param \StructType\SearchColumnSelectField[] $category
     * @param \StructType\SearchColumnStringField[] $ccCustomerCode
     * @param \StructType\SearchColumnBooleanField[] $ccDefault
     * @param \StructType\SearchColumnDateField[] $ccExpDate
     * @param \StructType\SearchColumnStringField[] $ccHolderName
     * @param \StructType\SearchColumnStringField[] $ccInternalId
     * @param \StructType\SearchColumnStringField[] $ccNumber
     * @param \StructType\SearchColumnSelectField[] $ccState
     * @param \StructType\SearchColumnDateField[] $ccStateFrom
     * @param \StructType\SearchColumnSelectField[] $ccType
     * @param \StructType\SearchColumnStringField[] $city
     * @param \StructType\SearchColumnStringField[] $comments
     * @param \StructType\SearchColumnStringField[] $companyName
     * @param \StructType\SearchColumnDoubleField[] $consolBalance
     * @param \StructType\SearchColumnLongField[] $consolDaysOverdue
     * @param \StructType\SearchColumnDoubleField[] $consolDepositBalance
     * @param \StructType\SearchColumnDoubleField[] $consolOverdueBalance
     * @param \StructType\SearchColumnDoubleField[] $consolUnbilledOrders
     * @param \StructType\SearchColumnStringField[] $contact
     * @param \StructType\SearchColumnDoubleField[] $contribution
     * @param \StructType\SearchColumnDoubleField[] $contributionPrimary
     * @param \StructType\SearchColumnDateField[] $conversionDate
     * @param \StructType\SearchColumnEnumSelectField[] $country
     * @param \StructType\SearchColumnStringField[] $countryCode
     * @param \StructType\SearchColumnEnumSelectField[] $creditHold
     * @param \StructType\SearchColumnBooleanField[] $creditHoldOverride
     * @param \StructType\SearchColumnDoubleField[] $creditLimit
     * @param \StructType\SearchColumnSelectField[] $currency
     * @param \StructType\SearchColumnDateField[] $dateClosed
     * @param \StructType\SearchColumnDateField[] $dateCreated
     * @param \StructType\SearchColumnLongField[] $daysOverdue
     * @param \StructType\SearchColumnDoubleField[] $defaultOrderPriority
     * @param \StructType\SearchColumnStringField[] $defaultTaxReg
     * @param \StructType\SearchColumnDoubleField[] $depositBalance
     * @param \StructType\SearchColumnStringField[] $drAccount
     * @param \StructType\SearchColumnStringField[] $email
     * @param \StructType\SearchColumnEnumSelectField[] $emailPreference
     * @param \StructType\SearchColumnBooleanField[] $emailTransactions
     * @param \StructType\SearchColumnDateField[] $endDate
     * @param \StructType\SearchColumnStringField[] $entityId
     * @param \StructType\SearchColumnLongField[] $entityNumber
     * @param \StructType\SearchColumnSelectField[] $entityStatus
     * @param \StructType\SearchColumnDoubleField[] $estimatedBudget
     * @param \StructType\SearchColumnBooleanField[] $explicitConversion
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @param \StructType\SearchColumnStringField[] $fax
     * @param \StructType\SearchColumnBooleanField[] $faxTransactions
     * @param \StructType\SearchColumnStringField[] $firstName
     * @param \StructType\SearchColumnDateField[] $firstOrderDate
     * @param \StructType\SearchColumnDateField[] $firstSaleDate
     * @param \StructType\SearchColumnStringField[] $fxAccount
     * @param \StructType\SearchColumnDoubleField[] $fxBalance
     * @param \StructType\SearchColumnDoubleField[] $fxConsolBalance
     * @param \StructType\SearchColumnDoubleField[] $fxConsolUnbilledOrders
     * @param \StructType\SearchColumnDoubleField[] $fxUnbilledOrders
     * @param \StructType\SearchColumnBooleanField[] $giveAccess
     * @param \StructType\SearchColumnEnumSelectField[] $globalSubscriptionStatus
     * @param \StructType\SearchColumnStringField[] $groupPricingLevel
     * @param \StructType\SearchColumnBooleanField[] $hasDuplicates
     * @param \StructType\SearchColumnStringField[] $homePhone
     * @param \StructType\SearchColumnSelectField[] $image
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @param \StructType\SearchColumnBooleanField[] $isBudgetApproved
     * @param \StructType\SearchColumnBooleanField[] $isDefaultBilling
     * @param \StructType\SearchColumnBooleanField[] $isDefaultShipping
     * @param \StructType\SearchColumnBooleanField[] $isInactive
     * @param \StructType\SearchColumnBooleanField[] $isPerson
     * @param \StructType\SearchColumnBooleanField[] $isShipAddress
     * @param \StructType\SearchColumnStringField[] $itemPricingLevel
     * @param \StructType\SearchColumnDoubleField[] $itemPricingUnitPrice
     * @param \StructType\SearchColumnDateField[] $jobEndDate
     * @param \StructType\SearchColumnDateField[] $jobProjectedEnd
     * @param \StructType\SearchColumnDateField[] $jobStartDate
     * @param \StructType\SearchColumnSelectField[] $jobType
     * @param \StructType\SearchColumnEnumSelectField[] $language
     * @param \StructType\SearchColumnDateField[] $lastModifiedDate
     * @param \StructType\SearchColumnStringField[] $lastName
     * @param \StructType\SearchColumnDateField[] $lastOrderDate
     * @param \StructType\SearchColumnDateField[] $lastSaleDate
     * @param \StructType\SearchColumnDateField[] $leadDate
     * @param \StructType\SearchColumnSelectField[] $leadSource
     * @param \StructType\SearchColumnEnumSelectField[] $level
     * @param \StructType\SearchColumnBooleanField[] $manualCreditHold
     * @param \StructType\SearchColumnStringField[] $middleName
     * @param \StructType\SearchColumnStringField[] $mobilePhone
     * @param \StructType\SearchColumnEnumSelectField[] $monthlyClosing
     * @param \StructType\SearchColumnBooleanField[] $onCreditHold
     * @param \StructType\SearchColumnDoubleField[] $overdueBalance
     * @param \StructType\SearchColumnSelectField[] $parent
     * @param \StructType\SearchColumnSelectField[] $partner
     * @param \StructType\SearchColumnDoubleField[] $partnerContribution
     * @param \StructType\SearchColumnStringField[] $partnerRole
     * @param \StructType\SearchColumnSelectField[] $partnerTeamMember
     * @param \StructType\SearchColumnStringField[] $pec
     * @param \StructType\SearchColumnEnumSelectField[] $permission
     * @param \StructType\SearchColumnStringField[] $phone
     * @param \StructType\SearchColumnStringField[] $phoneticName
     * @param \StructType\SearchColumnSelectField[] $prefCCProcessor
     * @param \StructType\SearchColumnSelectField[] $priceLevel
     * @param \StructType\SearchColumnStringField[] $pricingGroup
     * @param \StructType\SearchColumnStringField[] $pricingItem
     * @param \StructType\SearchColumnBooleanField[] $printTransactions
     * @param \StructType\SearchColumnDateField[] $prospectDate
     * @param \StructType\SearchColumnStringField[] $receivablesAccount
     * @param \StructType\SearchColumnLongField[] $reminderDays
     * @param \StructType\SearchColumnStringField[] $resaleNumber
     * @param \StructType\SearchColumnStringField[] $role
     * @param \StructType\SearchColumnStringField[] $salesReadiness
     * @param \StructType\SearchColumnSelectField[] $salesRep
     * @param \StructType\SearchColumnSelectField[] $salesTeamMember
     * @param \StructType\SearchColumnSelectField[] $salesTeamRole
     * @param \StructType\SearchColumnStringField[] $salutation
     * @param \StructType\SearchColumnStringField[] $shipAddress
     * @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\SearchColumnBooleanField[] $shipComplete
     * @param \StructType\SearchColumnEnumSelectField[] $shipCountry
     * @param \StructType\SearchColumnStringField[] $shipCountryCode
     * @param \StructType\SearchColumnStringField[] $shipPhone
     * @param \StructType\SearchColumnSelectField[] $shippingItem
     * @param \StructType\SearchColumnStringField[] $shipState
     * @param \StructType\SearchColumnStringField[] $shipZip
     * @param \StructType\SearchColumnSelectField[] $sourceSite
     * @param \StructType\SearchColumnLongField[] $sourceSiteId
     * @param \StructType\SearchColumnEnumSelectField[] $stage
     * @param \StructType\SearchColumnDateField[] $startDate
     * @param \StructType\SearchColumnStringField[] $state
     * @param \StructType\SearchColumnSelectField[] $subscription
     * @param \StructType\SearchColumnDateField[] $subscriptionDate
     * @param \StructType\SearchColumnBooleanField[] $subscriptionStatus
     * @param \StructType\SearchColumnSelectField[] $subsidiary
     * @param \StructType\SearchColumnBooleanField[] $taxable
     * @param \StructType\SearchColumnSelectField[] $taxItem
     * @param \StructType\SearchColumnSelectField[] $terms
     * @param \StructType\SearchColumnSelectField[] $territory
     * @param \StructType\SearchColumnStringField[] $title
     * @param \StructType\SearchColumnDoubleField[] $unbilledOrders
     * @param \StructType\SearchColumnStringField[] $url
     * @param \StructType\SearchColumnStringField[] $vatRegNumber
     * @param \StructType\SearchColumnBooleanField[] $webLead
     * @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 $altContact = array(), array $altEmail = array(), array $altName = array(), array $altPhone = array(), array $assignedSite = array(), array $assignedSiteId = array(), array $attention = array(), array $availableOffline = array(), array $balance = 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 $billPhone = array(), array $billState = array(), array $billZipCode = array(), array $buyingReason = array(), array $buyingTimeFrame = array(), array $category = array(), array $ccCustomerCode = array(), array $ccDefault = array(), array $ccExpDate = array(), array $ccHolderName = array(), array $ccInternalId = array(), array $ccNumber = array(), array $ccState = array(), array $ccStateFrom = array(), array $ccType = array(), array $city = array(), array $comments = array(), array $companyName = array(), array $consolBalance = array(), array $consolDaysOverdue = array(), array $consolDepositBalance = array(), array $consolOverdueBalance = array(), array $consolUnbilledOrders = array(), array $contact = array(), array $contribution = array(), array $contributionPrimary = array(), array $conversionDate = array(), array $country = array(), array $countryCode = array(), array $creditHold = array(), array $creditHoldOverride = array(), array $creditLimit = array(), array $currency = array(), array $dateClosed = array(), array $dateCreated = array(), array $daysOverdue = array(), array $defaultOrderPriority = array(), array $defaultTaxReg = array(), array $depositBalance = array(), array $drAccount = array(), array $email = array(), array $emailPreference = array(), array $emailTransactions = array(), array $endDate = array(), array $entityId = array(), array $entityNumber = array(), array $entityStatus = array(), array $estimatedBudget = array(), array $explicitConversion = array(), array $externalId = array(), array $fax = array(), array $faxTransactions = array(), array $firstName = array(), array $firstOrderDate = array(), array $firstSaleDate = array(), array $fxAccount = array(), array $fxBalance = array(), array $fxConsolBalance = array(), array $fxConsolUnbilledOrders = array(), array $fxUnbilledOrders = array(), array $giveAccess = array(), array $globalSubscriptionStatus = array(), array $groupPricingLevel = array(), array $hasDuplicates = array(), array $homePhone = array(), array $image = array(), array $internalId = array(), array $isBudgetApproved = array(), array $isDefaultBilling = array(), array $isDefaultShipping = array(), array $isInactive = array(), array $isPerson = array(), array $isShipAddress = array(), array $itemPricingLevel = array(), array $itemPricingUnitPrice = array(), array $jobEndDate = array(), array $jobProjectedEnd = array(), array $jobStartDate = array(), array $jobType = array(), array $language = array(), array $lastModifiedDate = array(), array $lastName = array(), array $lastOrderDate = array(), array $lastSaleDate = array(), array $leadDate = array(), array $leadSource = array(), array $level = array(), array $manualCreditHold = array(), array $middleName = array(), array $mobilePhone = array(), array $monthlyClosing = array(), array $onCreditHold = array(), array $overdueBalance = array(), array $parent = array(), array $partner = array(), array $partnerContribution = array(), array $partnerRole = array(), array $partnerTeamMember = array(), array $pec = array(), array $permission = array(), array $phone = array(), array $phoneticName = array(), array $prefCCProcessor = array(), array $priceLevel = array(), array $pricingGroup = array(), array $pricingItem = array(), array $printTransactions = array(), array $prospectDate = array(), array $receivablesAccount = array(), array $reminderDays = array(), array $resaleNumber = array(), array $role = array(), array $salesReadiness = array(), array $salesRep = array(), array $salesTeamMember = array(), array $salesTeamRole = array(), array $salutation = array(), array $shipAddress = array(), array $shipAddress1 = array(), array $shipAddress2 = array(), array $shipAddress3 = array(), array $shipAddressee = array(), array $shipAttention = array(), array $shipCity = array(), array $shipComplete = array(), array $shipCountry = array(), array $shipCountryCode = array(), array $shipPhone = array(), array $shippingItem = array(), array $shipState = array(), array $shipZip = array(), array $sourceSite = array(), array $sourceSiteId = array(), array $stage = array(), array $startDate = array(), array $state = array(), array $subscription = array(), array $subscriptionDate = array(), array $subscriptionStatus = array(), array $subsidiary = array(), array $taxable = array(), array $taxItem = array(), array $terms = array(), array $territory = array(), array $title = array(), array $unbilledOrders = array(), array $url = array(), array $vatRegNumber = array(), array $webLead = 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)
            ->setAltContact($altContact)
            ->setAltEmail($altEmail)
            ->setAltName($altName)
            ->setAltPhone($altPhone)
            ->setAssignedSite($assignedSite)
            ->setAssignedSiteId($assignedSiteId)
            ->setAttention($attention)
            ->setAvailableOffline($availableOffline)
            ->setBalance($balance)
            ->setBillAddress($billAddress)
            ->setBillAddress1($billAddress1)
            ->setBillAddress2($billAddress2)
            ->setBillAddress3($billAddress3)
            ->setBillAddressee($billAddressee)
            ->setBillAttention($billAttention)
            ->setBillCity($billCity)
            ->setBillCountry($billCountry)
            ->setBillCountryCode($billCountryCode)
            ->setBillPhone($billPhone)
            ->setBillState($billState)
            ->setBillZipCode($billZipCode)
            ->setBuyingReason($buyingReason)
            ->setBuyingTimeFrame($buyingTimeFrame)
            ->setCategory($category)
            ->setCcCustomerCode($ccCustomerCode)
            ->setCcDefault($ccDefault)
            ->setCcExpDate($ccExpDate)
            ->setCcHolderName($ccHolderName)
            ->setCcInternalId($ccInternalId)
            ->setCcNumber($ccNumber)
            ->setCcState($ccState)
            ->setCcStateFrom($ccStateFrom)
            ->setCcType($ccType)
            ->setCity($city)
            ->setComments($comments)
            ->setCompanyName($companyName)
            ->setConsolBalance($consolBalance)
            ->setConsolDaysOverdue($consolDaysOverdue)
            ->setConsolDepositBalance($consolDepositBalance)
            ->setConsolOverdueBalance($consolOverdueBalance)
            ->setConsolUnbilledOrders($consolUnbilledOrders)
            ->setContact($contact)
            ->setContribution($contribution)
            ->setContributionPrimary($contributionPrimary)
            ->setConversionDate($conversionDate)
            ->setCountry($country)
            ->setCountryCode($countryCode)
            ->setCreditHold($creditHold)
            ->setCreditHoldOverride($creditHoldOverride)
            ->setCreditLimit($creditLimit)
            ->setCurrency($currency)
            ->setDateClosed($dateClosed)
            ->setDateCreated($dateCreated)
            ->setDaysOverdue($daysOverdue)
            ->setDefaultOrderPriority($defaultOrderPriority)
            ->setDefaultTaxReg($defaultTaxReg)
            ->setDepositBalance($depositBalance)
            ->setDrAccount($drAccount)
            ->setEmail($email)
            ->setEmailPreference($emailPreference)
            ->setEmailTransactions($emailTransactions)
            ->setEndDate($endDate)
            ->setEntityId($entityId)
            ->setEntityNumber($entityNumber)
            ->setEntityStatus($entityStatus)
            ->setEstimatedBudget($estimatedBudget)
            ->setExplicitConversion($explicitConversion)
            ->setExternalId($externalId)
            ->setFax($fax)
            ->setFaxTransactions($faxTransactions)
            ->setFirstName($firstName)
            ->setFirstOrderDate($firstOrderDate)
            ->setFirstSaleDate($firstSaleDate)
            ->setFxAccount($fxAccount)
            ->setFxBalance($fxBalance)
            ->setFxConsolBalance($fxConsolBalance)
            ->setFxConsolUnbilledOrders($fxConsolUnbilledOrders)
            ->setFxUnbilledOrders($fxUnbilledOrders)
            ->setGiveAccess($giveAccess)
            ->setGlobalSubscriptionStatus($globalSubscriptionStatus)
            ->setGroupPricingLevel($groupPricingLevel)
            ->setHasDuplicates($hasDuplicates)
            ->setHomePhone($homePhone)
            ->setImage($image)
            ->setInternalId($internalId)
            ->setIsBudgetApproved($isBudgetApproved)
            ->setIsDefaultBilling($isDefaultBilling)
            ->setIsDefaultShipping($isDefaultShipping)
            ->setIsInactive($isInactive)
            ->setIsPerson($isPerson)
            ->setIsShipAddress($isShipAddress)
            ->setItemPricingLevel($itemPricingLevel)
            ->setItemPricingUnitPrice($itemPricingUnitPrice)
            ->setJobEndDate($jobEndDate)
            ->setJobProjectedEnd($jobProjectedEnd)
            ->setJobStartDate($jobStartDate)
            ->setJobType($jobType)
            ->setLanguage($language)
            ->setLastModifiedDate($lastModifiedDate)
            ->setLastName($lastName)
            ->setLastOrderDate($lastOrderDate)
            ->setLastSaleDate($lastSaleDate)
            ->setLeadDate($leadDate)
            ->setLeadSource($leadSource)
            ->setLevel($level)
            ->setManualCreditHold($manualCreditHold)
            ->setMiddleName($middleName)
            ->setMobilePhone($mobilePhone)
            ->setMonthlyClosing($monthlyClosing)
            ->setOnCreditHold($onCreditHold)
            ->setOverdueBalance($overdueBalance)
            ->setParent($parent)
            ->setPartner($partner)
            ->setPartnerContribution($partnerContribution)
            ->setPartnerRole($partnerRole)
            ->setPartnerTeamMember($partnerTeamMember)
            ->setPec($pec)
            ->setPermission($permission)
            ->setPhone($phone)
            ->setPhoneticName($phoneticName)
            ->setPrefCCProcessor($prefCCProcessor)
            ->setPriceLevel($priceLevel)
            ->setPricingGroup($pricingGroup)
            ->setPricingItem($pricingItem)
            ->setPrintTransactions($printTransactions)
            ->setProspectDate($prospectDate)
            ->setReceivablesAccount($receivablesAccount)
            ->setReminderDays($reminderDays)
            ->setResaleNumber($resaleNumber)
            ->setRole($role)
            ->setSalesReadiness($salesReadiness)
            ->setSalesRep($salesRep)
            ->setSalesTeamMember($salesTeamMember)
            ->setSalesTeamRole($salesTeamRole)
            ->setSalutation($salutation)
            ->setShipAddress($shipAddress)
            ->setShipAddress1($shipAddress1)
            ->setShipAddress2($shipAddress2)
            ->setShipAddress3($shipAddress3)
            ->setShipAddressee($shipAddressee)
            ->setShipAttention($shipAttention)
            ->setShipCity($shipCity)
            ->setShipComplete($shipComplete)
            ->setShipCountry($shipCountry)
            ->setShipCountryCode($shipCountryCode)
            ->setShipPhone($shipPhone)
            ->setShippingItem($shippingItem)
            ->setShipState($shipState)
            ->setShipZip($shipZip)
            ->setSourceSite($sourceSite)
            ->setSourceSiteId($sourceSiteId)
            ->setStage($stage)
            ->setStartDate($startDate)
            ->setState($state)
            ->setSubscription($subscription)
            ->setSubscriptionDate($subscriptionDate)
            ->setSubscriptionStatus($subscriptionStatus)
            ->setSubsidiary($subsidiary)
            ->setTaxable($taxable)
            ->setTaxItem($taxItem)
            ->setTerms($terms)
            ->setTerritory($territory)
            ->setTitle($title)
            ->setUnbilledOrders($unbilledOrders)
            ->setUrl($url)
            ->setVatRegNumber($vatRegNumber)
            ->setWebLead($webLead)
            ->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 $customerSearchRowBasicAccountNumberItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAccountNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAccountNumberItem) ? get_class($customerSearchRowBasicAccountNumberItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAccountNumberItem), var_export($customerSearchRowBasicAccountNumberItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicAddressItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAddressItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAddressItem) ? get_class($customerSearchRowBasicAddressItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAddressItem), var_export($customerSearchRowBasicAddressItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicAddress1Item) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAddress1Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAddress1Item) ? get_class($customerSearchRowBasicAddress1Item) : sprintf('%s(%s)', gettype($customerSearchRowBasicAddress1Item), var_export($customerSearchRowBasicAddress1Item, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicAddress2Item) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAddress2Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAddress2Item) ? get_class($customerSearchRowBasicAddress2Item) : sprintf('%s(%s)', gettype($customerSearchRowBasicAddress2Item), var_export($customerSearchRowBasicAddress2Item, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicAddress3Item) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAddress3Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAddress3Item) ? get_class($customerSearchRowBasicAddress3Item) : sprintf('%s(%s)', gettype($customerSearchRowBasicAddress3Item), var_export($customerSearchRowBasicAddress3Item, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicAddresseeItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAddresseeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAddresseeItem) ? get_class($customerSearchRowBasicAddresseeItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAddresseeItem), var_export($customerSearchRowBasicAddresseeItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicAddressInternalIdItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAddressInternalIdItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAddressInternalIdItem) ? get_class($customerSearchRowBasicAddressInternalIdItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAddressInternalIdItem), var_export($customerSearchRowBasicAddressInternalIdItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicAddressLabelItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAddressLabelItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAddressLabelItem) ? get_class($customerSearchRowBasicAddressLabelItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAddressLabelItem), var_export($customerSearchRowBasicAddressLabelItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicAddressPhoneItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAddressPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAddressPhoneItem) ? get_class($customerSearchRowBasicAddressPhoneItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAddressPhoneItem), var_export($customerSearchRowBasicAddressPhoneItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 altContact value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAltContact()
    {
        return $this->altContact;
    }
    /**
     * This method is responsible for validating the values passed to the setAltContact method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAltContact method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAltContactForArrayConstraintsFromSetAltContact(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicAltContactItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAltContactItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAltContactItem) ? get_class($customerSearchRowBasicAltContactItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAltContactItem), var_export($customerSearchRowBasicAltContactItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The altContact 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 altContact value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $altContact
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setAltContact(array $altContact = array())
    {
        // validation for constraint: array
        if ('' !== ($altContactArrayErrorMessage = self::validateAltContactForArrayConstraintsFromSetAltContact($altContact))) {
            throw new \InvalidArgumentException($altContactArrayErrorMessage, __LINE__);
        }
        $this->altContact = $altContact;
        return $this;
    }
    /**
     * Add item to altContact value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToAltContact(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The altContact 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->altContact[] = $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 $customerSearchRowBasicAltEmailItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAltEmailItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAltEmailItem) ? get_class($customerSearchRowBasicAltEmailItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAltEmailItem), var_export($customerSearchRowBasicAltEmailItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicAltNameItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAltNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAltNameItem) ? get_class($customerSearchRowBasicAltNameItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAltNameItem), var_export($customerSearchRowBasicAltNameItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicAltPhoneItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAltPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAltPhoneItem) ? get_class($customerSearchRowBasicAltPhoneItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAltPhoneItem), var_export($customerSearchRowBasicAltPhoneItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 assignedSite value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAssignedSite()
    {
        return $this->assignedSite;
    }
    /**
     * This method is responsible for validating the values passed to the setAssignedSite method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAssignedSite method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAssignedSiteForArrayConstraintsFromSetAssignedSite(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicAssignedSiteItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAssignedSiteItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicAssignedSiteItem) ? get_class($customerSearchRowBasicAssignedSiteItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAssignedSiteItem), var_export($customerSearchRowBasicAssignedSiteItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The assignedSite 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 assignedSite value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $assignedSite
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setAssignedSite(array $assignedSite = array())
    {
        // validation for constraint: array
        if ('' !== ($assignedSiteArrayErrorMessage = self::validateAssignedSiteForArrayConstraintsFromSetAssignedSite($assignedSite))) {
            throw new \InvalidArgumentException($assignedSiteArrayErrorMessage, __LINE__);
        }
        $this->assignedSite = $assignedSite;
        return $this;
    }
    /**
     * Add item to assignedSite value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToAssignedSite(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The assignedSite 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->assignedSite[] = $item;
        return $this;
    }
    /**
     * Get assignedSiteId value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getAssignedSiteId()
    {
        return $this->assignedSiteId;
    }
    /**
     * This method is responsible for validating the values passed to the setAssignedSiteId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAssignedSiteId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAssignedSiteIdForArrayConstraintsFromSetAssignedSiteId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicAssignedSiteIdItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAssignedSiteIdItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($customerSearchRowBasicAssignedSiteIdItem) ? get_class($customerSearchRowBasicAssignedSiteIdItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAssignedSiteIdItem), var_export($customerSearchRowBasicAssignedSiteIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The assignedSiteId 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 assignedSiteId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $assignedSiteId
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setAssignedSiteId(array $assignedSiteId = array())
    {
        // validation for constraint: array
        if ('' !== ($assignedSiteIdArrayErrorMessage = self::validateAssignedSiteIdForArrayConstraintsFromSetAssignedSiteId($assignedSiteId))) {
            throw new \InvalidArgumentException($assignedSiteIdArrayErrorMessage, __LINE__);
        }
        $this->assignedSiteId = $assignedSiteId;
        return $this;
    }
    /**
     * Add item to assignedSiteId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToAssignedSiteId(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The assignedSiteId 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->assignedSiteId[] = $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 $customerSearchRowBasicAttentionItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAttentionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicAttentionItem) ? get_class($customerSearchRowBasicAttentionItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAttentionItem), var_export($customerSearchRowBasicAttentionItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 availableOffline value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getAvailableOffline()
    {
        return $this->availableOffline;
    }
    /**
     * This method is responsible for validating the values passed to the setAvailableOffline method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAvailableOffline method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAvailableOfflineForArrayConstraintsFromSetAvailableOffline(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicAvailableOfflineItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicAvailableOfflineItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicAvailableOfflineItem) ? get_class($customerSearchRowBasicAvailableOfflineItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicAvailableOfflineItem), var_export($customerSearchRowBasicAvailableOfflineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The availableOffline 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 availableOffline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $availableOffline
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setAvailableOffline(array $availableOffline = array())
    {
        // validation for constraint: array
        if ('' !== ($availableOfflineArrayErrorMessage = self::validateAvailableOfflineForArrayConstraintsFromSetAvailableOffline($availableOffline))) {
            throw new \InvalidArgumentException($availableOfflineArrayErrorMessage, __LINE__);
        }
        $this->availableOffline = $availableOffline;
        return $this;
    }
    /**
     * Add item to availableOffline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToAvailableOffline(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The availableOffline 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->availableOffline[] = $item;
        return $this;
    }
    /**
     * Get balance value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getBalance()
    {
        return $this->balance;
    }
    /**
     * This method is responsible for validating the values passed to the setBalance method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBalance method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBalanceForArrayConstraintsFromSetBalance(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicBalanceItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBalanceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicBalanceItem) ? get_class($customerSearchRowBasicBalanceItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBalanceItem), var_export($customerSearchRowBasicBalanceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The balance 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 balance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $balance
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setBalance(array $balance = array())
    {
        // validation for constraint: array
        if ('' !== ($balanceArrayErrorMessage = self::validateBalanceForArrayConstraintsFromSetBalance($balance))) {
            throw new \InvalidArgumentException($balanceArrayErrorMessage, __LINE__);
        }
        $this->balance = $balance;
        return $this;
    }
    /**
     * Add item to balance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToBalance(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The balance 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->balance[] = $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 $customerSearchRowBasicBillAddressItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillAddressItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillAddressItem) ? get_class($customerSearchRowBasicBillAddressItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillAddressItem), var_export($customerSearchRowBasicBillAddressItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicBillAddress1Item) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillAddress1Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillAddress1Item) ? get_class($customerSearchRowBasicBillAddress1Item) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillAddress1Item), var_export($customerSearchRowBasicBillAddress1Item, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicBillAddress2Item) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillAddress2Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillAddress2Item) ? get_class($customerSearchRowBasicBillAddress2Item) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillAddress2Item), var_export($customerSearchRowBasicBillAddress2Item, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicBillAddress3Item) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillAddress3Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillAddress3Item) ? get_class($customerSearchRowBasicBillAddress3Item) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillAddress3Item), var_export($customerSearchRowBasicBillAddress3Item, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicBillAddresseeItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillAddresseeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillAddresseeItem) ? get_class($customerSearchRowBasicBillAddresseeItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillAddresseeItem), var_export($customerSearchRowBasicBillAddresseeItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicBillAttentionItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillAttentionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillAttentionItem) ? get_class($customerSearchRowBasicBillAttentionItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillAttentionItem), var_export($customerSearchRowBasicBillAttentionItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicBillCityItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillCityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillCityItem) ? get_class($customerSearchRowBasicBillCityItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillCityItem), var_export($customerSearchRowBasicBillCityItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicBillCountryItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillCountryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillCountryItem) ? get_class($customerSearchRowBasicBillCountryItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillCountryItem), var_export($customerSearchRowBasicBillCountryItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicBillCountryCodeItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillCountryCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillCountryCodeItem) ? get_class($customerSearchRowBasicBillCountryCodeItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillCountryCodeItem), var_export($customerSearchRowBasicBillCountryCodeItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 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 $customerSearchRowBasicBillPhoneItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillPhoneItem) ? get_class($customerSearchRowBasicBillPhoneItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillPhoneItem), var_export($customerSearchRowBasicBillPhoneItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicBillStateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillStateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillStateItem) ? get_class($customerSearchRowBasicBillStateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillStateItem), var_export($customerSearchRowBasicBillStateItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicBillZipCodeItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBillZipCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBillZipCodeItem) ? get_class($customerSearchRowBasicBillZipCodeItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBillZipCodeItem), var_export($customerSearchRowBasicBillZipCodeItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 buyingReason value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBuyingReason()
    {
        return $this->buyingReason;
    }
    /**
     * This method is responsible for validating the values passed to the setBuyingReason method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBuyingReason method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBuyingReasonForArrayConstraintsFromSetBuyingReason(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicBuyingReasonItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBuyingReasonItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBuyingReasonItem) ? get_class($customerSearchRowBasicBuyingReasonItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBuyingReasonItem), var_export($customerSearchRowBasicBuyingReasonItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The buyingReason 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 buyingReason value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $buyingReason
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setBuyingReason(array $buyingReason = array())
    {
        // validation for constraint: array
        if ('' !== ($buyingReasonArrayErrorMessage = self::validateBuyingReasonForArrayConstraintsFromSetBuyingReason($buyingReason))) {
            throw new \InvalidArgumentException($buyingReasonArrayErrorMessage, __LINE__);
        }
        $this->buyingReason = $buyingReason;
        return $this;
    }
    /**
     * Add item to buyingReason value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToBuyingReason(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The buyingReason 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->buyingReason[] = $item;
        return $this;
    }
    /**
     * Get buyingTimeFrame value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBuyingTimeFrame()
    {
        return $this->buyingTimeFrame;
    }
    /**
     * This method is responsible for validating the values passed to the setBuyingTimeFrame method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBuyingTimeFrame method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBuyingTimeFrameForArrayConstraintsFromSetBuyingTimeFrame(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicBuyingTimeFrameItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicBuyingTimeFrameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicBuyingTimeFrameItem) ? get_class($customerSearchRowBasicBuyingTimeFrameItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicBuyingTimeFrameItem), var_export($customerSearchRowBasicBuyingTimeFrameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The buyingTimeFrame 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 buyingTimeFrame value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $buyingTimeFrame
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setBuyingTimeFrame(array $buyingTimeFrame = array())
    {
        // validation for constraint: array
        if ('' !== ($buyingTimeFrameArrayErrorMessage = self::validateBuyingTimeFrameForArrayConstraintsFromSetBuyingTimeFrame($buyingTimeFrame))) {
            throw new \InvalidArgumentException($buyingTimeFrameArrayErrorMessage, __LINE__);
        }
        $this->buyingTimeFrame = $buyingTimeFrame;
        return $this;
    }
    /**
     * Add item to buyingTimeFrame value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToBuyingTimeFrame(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The buyingTimeFrame 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->buyingTimeFrame[] = $item;
        return $this;
    }
    /**
     * Get category value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCategory()
    {
        return $this->category;
    }
    /**
     * This method is responsible for validating the values passed to the setCategory method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCategory method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCategoryForArrayConstraintsFromSetCategory(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCategoryItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCategoryItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicCategoryItem) ? get_class($customerSearchRowBasicCategoryItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCategoryItem), var_export($customerSearchRowBasicCategoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The category 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 category value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $category
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCategory(array $category = array())
    {
        // validation for constraint: array
        if ('' !== ($categoryArrayErrorMessage = self::validateCategoryForArrayConstraintsFromSetCategory($category))) {
            throw new \InvalidArgumentException($categoryArrayErrorMessage, __LINE__);
        }
        $this->category = $category;
        return $this;
    }
    /**
     * Add item to category value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCategory(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The category 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->category[] = $item;
        return $this;
    }
    /**
     * Get ccCustomerCode value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCcCustomerCode()
    {
        return $this->ccCustomerCode;
    }
    /**
     * This method is responsible for validating the values passed to the setCcCustomerCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCcCustomerCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCcCustomerCodeForArrayConstraintsFromSetCcCustomerCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCcCustomerCodeItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCcCustomerCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicCcCustomerCodeItem) ? get_class($customerSearchRowBasicCcCustomerCodeItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCcCustomerCodeItem), var_export($customerSearchRowBasicCcCustomerCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The ccCustomerCode 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 ccCustomerCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $ccCustomerCode
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCcCustomerCode(array $ccCustomerCode = array())
    {
        // validation for constraint: array
        if ('' !== ($ccCustomerCodeArrayErrorMessage = self::validateCcCustomerCodeForArrayConstraintsFromSetCcCustomerCode($ccCustomerCode))) {
            throw new \InvalidArgumentException($ccCustomerCodeArrayErrorMessage, __LINE__);
        }
        $this->ccCustomerCode = $ccCustomerCode;
        return $this;
    }
    /**
     * Add item to ccCustomerCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCcCustomerCode(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The ccCustomerCode 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->ccCustomerCode[] = $item;
        return $this;
    }
    /**
     * Get ccDefault value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getCcDefault()
    {
        return $this->ccDefault;
    }
    /**
     * This method is responsible for validating the values passed to the setCcDefault method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCcDefault method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCcDefaultForArrayConstraintsFromSetCcDefault(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCcDefaultItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCcDefaultItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicCcDefaultItem) ? get_class($customerSearchRowBasicCcDefaultItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCcDefaultItem), var_export($customerSearchRowBasicCcDefaultItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The ccDefault 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 ccDefault value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $ccDefault
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCcDefault(array $ccDefault = array())
    {
        // validation for constraint: array
        if ('' !== ($ccDefaultArrayErrorMessage = self::validateCcDefaultForArrayConstraintsFromSetCcDefault($ccDefault))) {
            throw new \InvalidArgumentException($ccDefaultArrayErrorMessage, __LINE__);
        }
        $this->ccDefault = $ccDefault;
        return $this;
    }
    /**
     * Add item to ccDefault value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCcDefault(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The ccDefault 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->ccDefault[] = $item;
        return $this;
    }
    /**
     * Get ccExpDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getCcExpDate()
    {
        return $this->ccExpDate;
    }
    /**
     * This method is responsible for validating the values passed to the setCcExpDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCcExpDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCcExpDateForArrayConstraintsFromSetCcExpDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCcExpDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCcExpDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicCcExpDateItem) ? get_class($customerSearchRowBasicCcExpDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCcExpDateItem), var_export($customerSearchRowBasicCcExpDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The ccExpDate 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 ccExpDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $ccExpDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCcExpDate(array $ccExpDate = array())
    {
        // validation for constraint: array
        if ('' !== ($ccExpDateArrayErrorMessage = self::validateCcExpDateForArrayConstraintsFromSetCcExpDate($ccExpDate))) {
            throw new \InvalidArgumentException($ccExpDateArrayErrorMessage, __LINE__);
        }
        $this->ccExpDate = $ccExpDate;
        return $this;
    }
    /**
     * Add item to ccExpDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCcExpDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The ccExpDate 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->ccExpDate[] = $item;
        return $this;
    }
    /**
     * Get ccHolderName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCcHolderName()
    {
        return $this->ccHolderName;
    }
    /**
     * This method is responsible for validating the values passed to the setCcHolderName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCcHolderName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCcHolderNameForArrayConstraintsFromSetCcHolderName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCcHolderNameItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCcHolderNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicCcHolderNameItem) ? get_class($customerSearchRowBasicCcHolderNameItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCcHolderNameItem), var_export($customerSearchRowBasicCcHolderNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The ccHolderName 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 ccHolderName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $ccHolderName
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCcHolderName(array $ccHolderName = array())
    {
        // validation for constraint: array
        if ('' !== ($ccHolderNameArrayErrorMessage = self::validateCcHolderNameForArrayConstraintsFromSetCcHolderName($ccHolderName))) {
            throw new \InvalidArgumentException($ccHolderNameArrayErrorMessage, __LINE__);
        }
        $this->ccHolderName = $ccHolderName;
        return $this;
    }
    /**
     * Add item to ccHolderName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCcHolderName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The ccHolderName 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->ccHolderName[] = $item;
        return $this;
    }
    /**
     * Get ccInternalId value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCcInternalId()
    {
        return $this->ccInternalId;
    }
    /**
     * This method is responsible for validating the values passed to the setCcInternalId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCcInternalId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCcInternalIdForArrayConstraintsFromSetCcInternalId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCcInternalIdItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCcInternalIdItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicCcInternalIdItem) ? get_class($customerSearchRowBasicCcInternalIdItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCcInternalIdItem), var_export($customerSearchRowBasicCcInternalIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The ccInternalId 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 ccInternalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $ccInternalId
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCcInternalId(array $ccInternalId = array())
    {
        // validation for constraint: array
        if ('' !== ($ccInternalIdArrayErrorMessage = self::validateCcInternalIdForArrayConstraintsFromSetCcInternalId($ccInternalId))) {
            throw new \InvalidArgumentException($ccInternalIdArrayErrorMessage, __LINE__);
        }
        $this->ccInternalId = $ccInternalId;
        return $this;
    }
    /**
     * Add item to ccInternalId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCcInternalId(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The ccInternalId 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->ccInternalId[] = $item;
        return $this;
    }
    /**
     * Get ccNumber value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCcNumber()
    {
        return $this->ccNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setCcNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCcNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCcNumberForArrayConstraintsFromSetCcNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCcNumberItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCcNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicCcNumberItem) ? get_class($customerSearchRowBasicCcNumberItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCcNumberItem), var_export($customerSearchRowBasicCcNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The ccNumber 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 ccNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $ccNumber
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCcNumber(array $ccNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($ccNumberArrayErrorMessage = self::validateCcNumberForArrayConstraintsFromSetCcNumber($ccNumber))) {
            throw new \InvalidArgumentException($ccNumberArrayErrorMessage, __LINE__);
        }
        $this->ccNumber = $ccNumber;
        return $this;
    }
    /**
     * Add item to ccNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCcNumber(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The ccNumber 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->ccNumber[] = $item;
        return $this;
    }
    /**
     * Get ccState value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCcState()
    {
        return $this->ccState;
    }
    /**
     * This method is responsible for validating the values passed to the setCcState method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCcState method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCcStateForArrayConstraintsFromSetCcState(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCcStateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCcStateItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicCcStateItem) ? get_class($customerSearchRowBasicCcStateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCcStateItem), var_export($customerSearchRowBasicCcStateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The ccState 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 ccState value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $ccState
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCcState(array $ccState = array())
    {
        // validation for constraint: array
        if ('' !== ($ccStateArrayErrorMessage = self::validateCcStateForArrayConstraintsFromSetCcState($ccState))) {
            throw new \InvalidArgumentException($ccStateArrayErrorMessage, __LINE__);
        }
        $this->ccState = $ccState;
        return $this;
    }
    /**
     * Add item to ccState value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCcState(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The ccState 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->ccState[] = $item;
        return $this;
    }
    /**
     * Get ccStateFrom value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getCcStateFrom()
    {
        return $this->ccStateFrom;
    }
    /**
     * This method is responsible for validating the values passed to the setCcStateFrom method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCcStateFrom method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCcStateFromForArrayConstraintsFromSetCcStateFrom(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCcStateFromItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCcStateFromItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicCcStateFromItem) ? get_class($customerSearchRowBasicCcStateFromItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCcStateFromItem), var_export($customerSearchRowBasicCcStateFromItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The ccStateFrom 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 ccStateFrom value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $ccStateFrom
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCcStateFrom(array $ccStateFrom = array())
    {
        // validation for constraint: array
        if ('' !== ($ccStateFromArrayErrorMessage = self::validateCcStateFromForArrayConstraintsFromSetCcStateFrom($ccStateFrom))) {
            throw new \InvalidArgumentException($ccStateFromArrayErrorMessage, __LINE__);
        }
        $this->ccStateFrom = $ccStateFrom;
        return $this;
    }
    /**
     * Add item to ccStateFrom value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCcStateFrom(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The ccStateFrom 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->ccStateFrom[] = $item;
        return $this;
    }
    /**
     * Get ccType value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCcType()
    {
        return $this->ccType;
    }
    /**
     * This method is responsible for validating the values passed to the setCcType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCcType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCcTypeForArrayConstraintsFromSetCcType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCcTypeItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCcTypeItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicCcTypeItem) ? get_class($customerSearchRowBasicCcTypeItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCcTypeItem), var_export($customerSearchRowBasicCcTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The ccType 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 ccType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $ccType
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCcType(array $ccType = array())
    {
        // validation for constraint: array
        if ('' !== ($ccTypeArrayErrorMessage = self::validateCcTypeForArrayConstraintsFromSetCcType($ccType))) {
            throw new \InvalidArgumentException($ccTypeArrayErrorMessage, __LINE__);
        }
        $this->ccType = $ccType;
        return $this;
    }
    /**
     * Add item to ccType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCcType(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The ccType 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->ccType[] = $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 $customerSearchRowBasicCityItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicCityItem) ? get_class($customerSearchRowBasicCityItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCityItem), var_export($customerSearchRowBasicCityItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 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 $customerSearchRowBasicCommentsItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCommentsItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicCommentsItem) ? get_class($customerSearchRowBasicCommentsItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCommentsItem), var_export($customerSearchRowBasicCommentsItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 companyName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCompanyName()
    {
        return $this->companyName;
    }
    /**
     * This method is responsible for validating the values passed to the setCompanyName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCompanyName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCompanyNameForArrayConstraintsFromSetCompanyName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCompanyNameItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCompanyNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicCompanyNameItem) ? get_class($customerSearchRowBasicCompanyNameItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCompanyNameItem), var_export($customerSearchRowBasicCompanyNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The companyName 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 companyName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $companyName
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCompanyName(array $companyName = array())
    {
        // validation for constraint: array
        if ('' !== ($companyNameArrayErrorMessage = self::validateCompanyNameForArrayConstraintsFromSetCompanyName($companyName))) {
            throw new \InvalidArgumentException($companyNameArrayErrorMessage, __LINE__);
        }
        $this->companyName = $companyName;
        return $this;
    }
    /**
     * Add item to companyName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCompanyName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The companyName 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->companyName[] = $item;
        return $this;
    }
    /**
     * Get consolBalance value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getConsolBalance()
    {
        return $this->consolBalance;
    }
    /**
     * This method is responsible for validating the values passed to the setConsolBalance method
     * This method is willingly generated in order to preserve the one-line inline validation within the setConsolBalance method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateConsolBalanceForArrayConstraintsFromSetConsolBalance(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicConsolBalanceItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicConsolBalanceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicConsolBalanceItem) ? get_class($customerSearchRowBasicConsolBalanceItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicConsolBalanceItem), var_export($customerSearchRowBasicConsolBalanceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The consolBalance 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 consolBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $consolBalance
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setConsolBalance(array $consolBalance = array())
    {
        // validation for constraint: array
        if ('' !== ($consolBalanceArrayErrorMessage = self::validateConsolBalanceForArrayConstraintsFromSetConsolBalance($consolBalance))) {
            throw new \InvalidArgumentException($consolBalanceArrayErrorMessage, __LINE__);
        }
        $this->consolBalance = $consolBalance;
        return $this;
    }
    /**
     * Add item to consolBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToConsolBalance(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The consolBalance 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->consolBalance[] = $item;
        return $this;
    }
    /**
     * Get consolDaysOverdue value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getConsolDaysOverdue()
    {
        return $this->consolDaysOverdue;
    }
    /**
     * This method is responsible for validating the values passed to the setConsolDaysOverdue method
     * This method is willingly generated in order to preserve the one-line inline validation within the setConsolDaysOverdue method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateConsolDaysOverdueForArrayConstraintsFromSetConsolDaysOverdue(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicConsolDaysOverdueItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicConsolDaysOverdueItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($customerSearchRowBasicConsolDaysOverdueItem) ? get_class($customerSearchRowBasicConsolDaysOverdueItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicConsolDaysOverdueItem), var_export($customerSearchRowBasicConsolDaysOverdueItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The consolDaysOverdue 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 consolDaysOverdue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $consolDaysOverdue
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setConsolDaysOverdue(array $consolDaysOverdue = array())
    {
        // validation for constraint: array
        if ('' !== ($consolDaysOverdueArrayErrorMessage = self::validateConsolDaysOverdueForArrayConstraintsFromSetConsolDaysOverdue($consolDaysOverdue))) {
            throw new \InvalidArgumentException($consolDaysOverdueArrayErrorMessage, __LINE__);
        }
        $this->consolDaysOverdue = $consolDaysOverdue;
        return $this;
    }
    /**
     * Add item to consolDaysOverdue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToConsolDaysOverdue(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The consolDaysOverdue 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->consolDaysOverdue[] = $item;
        return $this;
    }
    /**
     * Get consolDepositBalance value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getConsolDepositBalance()
    {
        return $this->consolDepositBalance;
    }
    /**
     * This method is responsible for validating the values passed to the setConsolDepositBalance method
     * This method is willingly generated in order to preserve the one-line inline validation within the setConsolDepositBalance method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateConsolDepositBalanceForArrayConstraintsFromSetConsolDepositBalance(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicConsolDepositBalanceItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicConsolDepositBalanceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicConsolDepositBalanceItem) ? get_class($customerSearchRowBasicConsolDepositBalanceItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicConsolDepositBalanceItem), var_export($customerSearchRowBasicConsolDepositBalanceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The consolDepositBalance 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 consolDepositBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $consolDepositBalance
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setConsolDepositBalance(array $consolDepositBalance = array())
    {
        // validation for constraint: array
        if ('' !== ($consolDepositBalanceArrayErrorMessage = self::validateConsolDepositBalanceForArrayConstraintsFromSetConsolDepositBalance($consolDepositBalance))) {
            throw new \InvalidArgumentException($consolDepositBalanceArrayErrorMessage, __LINE__);
        }
        $this->consolDepositBalance = $consolDepositBalance;
        return $this;
    }
    /**
     * Add item to consolDepositBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToConsolDepositBalance(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The consolDepositBalance 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->consolDepositBalance[] = $item;
        return $this;
    }
    /**
     * Get consolOverdueBalance value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getConsolOverdueBalance()
    {
        return $this->consolOverdueBalance;
    }
    /**
     * This method is responsible for validating the values passed to the setConsolOverdueBalance method
     * This method is willingly generated in order to preserve the one-line inline validation within the setConsolOverdueBalance method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateConsolOverdueBalanceForArrayConstraintsFromSetConsolOverdueBalance(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicConsolOverdueBalanceItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicConsolOverdueBalanceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicConsolOverdueBalanceItem) ? get_class($customerSearchRowBasicConsolOverdueBalanceItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicConsolOverdueBalanceItem), var_export($customerSearchRowBasicConsolOverdueBalanceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The consolOverdueBalance 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 consolOverdueBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $consolOverdueBalance
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setConsolOverdueBalance(array $consolOverdueBalance = array())
    {
        // validation for constraint: array
        if ('' !== ($consolOverdueBalanceArrayErrorMessage = self::validateConsolOverdueBalanceForArrayConstraintsFromSetConsolOverdueBalance($consolOverdueBalance))) {
            throw new \InvalidArgumentException($consolOverdueBalanceArrayErrorMessage, __LINE__);
        }
        $this->consolOverdueBalance = $consolOverdueBalance;
        return $this;
    }
    /**
     * Add item to consolOverdueBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToConsolOverdueBalance(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The consolOverdueBalance 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->consolOverdueBalance[] = $item;
        return $this;
    }
    /**
     * Get consolUnbilledOrders value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getConsolUnbilledOrders()
    {
        return $this->consolUnbilledOrders;
    }
    /**
     * This method is responsible for validating the values passed to the setConsolUnbilledOrders method
     * This method is willingly generated in order to preserve the one-line inline validation within the setConsolUnbilledOrders method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateConsolUnbilledOrdersForArrayConstraintsFromSetConsolUnbilledOrders(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicConsolUnbilledOrdersItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicConsolUnbilledOrdersItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicConsolUnbilledOrdersItem) ? get_class($customerSearchRowBasicConsolUnbilledOrdersItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicConsolUnbilledOrdersItem), var_export($customerSearchRowBasicConsolUnbilledOrdersItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The consolUnbilledOrders 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 consolUnbilledOrders value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $consolUnbilledOrders
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setConsolUnbilledOrders(array $consolUnbilledOrders = array())
    {
        // validation for constraint: array
        if ('' !== ($consolUnbilledOrdersArrayErrorMessage = self::validateConsolUnbilledOrdersForArrayConstraintsFromSetConsolUnbilledOrders($consolUnbilledOrders))) {
            throw new \InvalidArgumentException($consolUnbilledOrdersArrayErrorMessage, __LINE__);
        }
        $this->consolUnbilledOrders = $consolUnbilledOrders;
        return $this;
    }
    /**
     * Add item to consolUnbilledOrders value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToConsolUnbilledOrders(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The consolUnbilledOrders 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->consolUnbilledOrders[] = $item;
        return $this;
    }
    /**
     * Get contact value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getContact()
    {
        return $this->contact;
    }
    /**
     * This method is responsible for validating the values passed to the setContact method
     * This method is willingly generated in order to preserve the one-line inline validation within the setContact method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateContactForArrayConstraintsFromSetContact(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicContactItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicContactItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicContactItem) ? get_class($customerSearchRowBasicContactItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicContactItem), var_export($customerSearchRowBasicContactItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The contact 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 contact value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $contact
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setContact(array $contact = array())
    {
        // validation for constraint: array
        if ('' !== ($contactArrayErrorMessage = self::validateContactForArrayConstraintsFromSetContact($contact))) {
            throw new \InvalidArgumentException($contactArrayErrorMessage, __LINE__);
        }
        $this->contact = $contact;
        return $this;
    }
    /**
     * Add item to contact value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToContact(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The contact 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->contact[] = $item;
        return $this;
    }
    /**
     * Get contribution value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getContribution()
    {
        return $this->contribution;
    }
    /**
     * This method is responsible for validating the values passed to the setContribution method
     * This method is willingly generated in order to preserve the one-line inline validation within the setContribution method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateContributionForArrayConstraintsFromSetContribution(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicContributionItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicContributionItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicContributionItem) ? get_class($customerSearchRowBasicContributionItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicContributionItem), var_export($customerSearchRowBasicContributionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The contribution 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 contribution value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $contribution
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setContribution(array $contribution = array())
    {
        // validation for constraint: array
        if ('' !== ($contributionArrayErrorMessage = self::validateContributionForArrayConstraintsFromSetContribution($contribution))) {
            throw new \InvalidArgumentException($contributionArrayErrorMessage, __LINE__);
        }
        $this->contribution = $contribution;
        return $this;
    }
    /**
     * Add item to contribution value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToContribution(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The contribution 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->contribution[] = $item;
        return $this;
    }
    /**
     * Get contributionPrimary value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getContributionPrimary()
    {
        return $this->contributionPrimary;
    }
    /**
     * This method is responsible for validating the values passed to the setContributionPrimary method
     * This method is willingly generated in order to preserve the one-line inline validation within the setContributionPrimary method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateContributionPrimaryForArrayConstraintsFromSetContributionPrimary(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicContributionPrimaryItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicContributionPrimaryItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicContributionPrimaryItem) ? get_class($customerSearchRowBasicContributionPrimaryItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicContributionPrimaryItem), var_export($customerSearchRowBasicContributionPrimaryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The contributionPrimary 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 contributionPrimary value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $contributionPrimary
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setContributionPrimary(array $contributionPrimary = array())
    {
        // validation for constraint: array
        if ('' !== ($contributionPrimaryArrayErrorMessage = self::validateContributionPrimaryForArrayConstraintsFromSetContributionPrimary($contributionPrimary))) {
            throw new \InvalidArgumentException($contributionPrimaryArrayErrorMessage, __LINE__);
        }
        $this->contributionPrimary = $contributionPrimary;
        return $this;
    }
    /**
     * Add item to contributionPrimary value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToContributionPrimary(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The contributionPrimary 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->contributionPrimary[] = $item;
        return $this;
    }
    /**
     * Get conversionDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getConversionDate()
    {
        return $this->conversionDate;
    }
    /**
     * This method is responsible for validating the values passed to the setConversionDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setConversionDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateConversionDateForArrayConstraintsFromSetConversionDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicConversionDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicConversionDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicConversionDateItem) ? get_class($customerSearchRowBasicConversionDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicConversionDateItem), var_export($customerSearchRowBasicConversionDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The conversionDate 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 conversionDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $conversionDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setConversionDate(array $conversionDate = array())
    {
        // validation for constraint: array
        if ('' !== ($conversionDateArrayErrorMessage = self::validateConversionDateForArrayConstraintsFromSetConversionDate($conversionDate))) {
            throw new \InvalidArgumentException($conversionDateArrayErrorMessage, __LINE__);
        }
        $this->conversionDate = $conversionDate;
        return $this;
    }
    /**
     * Add item to conversionDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToConversionDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The conversionDate 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->conversionDate[] = $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 $customerSearchRowBasicCountryItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCountryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicCountryItem) ? get_class($customerSearchRowBasicCountryItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCountryItem), var_export($customerSearchRowBasicCountryItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicCountryCodeItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCountryCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicCountryCodeItem) ? get_class($customerSearchRowBasicCountryCodeItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCountryCodeItem), var_export($customerSearchRowBasicCountryCodeItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 creditHold value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getCreditHold()
    {
        return $this->creditHold;
    }
    /**
     * This method is responsible for validating the values passed to the setCreditHold method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCreditHold method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCreditHoldForArrayConstraintsFromSetCreditHold(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCreditHoldItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCreditHoldItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicCreditHoldItem) ? get_class($customerSearchRowBasicCreditHoldItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCreditHoldItem), var_export($customerSearchRowBasicCreditHoldItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The creditHold 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 creditHold value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $creditHold
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCreditHold(array $creditHold = array())
    {
        // validation for constraint: array
        if ('' !== ($creditHoldArrayErrorMessage = self::validateCreditHoldForArrayConstraintsFromSetCreditHold($creditHold))) {
            throw new \InvalidArgumentException($creditHoldArrayErrorMessage, __LINE__);
        }
        $this->creditHold = $creditHold;
        return $this;
    }
    /**
     * Add item to creditHold value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCreditHold(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The creditHold 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->creditHold[] = $item;
        return $this;
    }
    /**
     * Get creditHoldOverride value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getCreditHoldOverride()
    {
        return $this->creditHoldOverride;
    }
    /**
     * This method is responsible for validating the values passed to the setCreditHoldOverride method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCreditHoldOverride method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCreditHoldOverrideForArrayConstraintsFromSetCreditHoldOverride(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCreditHoldOverrideItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCreditHoldOverrideItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicCreditHoldOverrideItem) ? get_class($customerSearchRowBasicCreditHoldOverrideItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCreditHoldOverrideItem), var_export($customerSearchRowBasicCreditHoldOverrideItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The creditHoldOverride 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 creditHoldOverride value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $creditHoldOverride
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCreditHoldOverride(array $creditHoldOverride = array())
    {
        // validation for constraint: array
        if ('' !== ($creditHoldOverrideArrayErrorMessage = self::validateCreditHoldOverrideForArrayConstraintsFromSetCreditHoldOverride($creditHoldOverride))) {
            throw new \InvalidArgumentException($creditHoldOverrideArrayErrorMessage, __LINE__);
        }
        $this->creditHoldOverride = $creditHoldOverride;
        return $this;
    }
    /**
     * Add item to creditHoldOverride value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCreditHoldOverride(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The creditHoldOverride 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->creditHoldOverride[] = $item;
        return $this;
    }
    /**
     * Get creditLimit value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getCreditLimit()
    {
        return $this->creditLimit;
    }
    /**
     * This method is responsible for validating the values passed to the setCreditLimit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCreditLimit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCreditLimitForArrayConstraintsFromSetCreditLimit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCreditLimitItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCreditLimitItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicCreditLimitItem) ? get_class($customerSearchRowBasicCreditLimitItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCreditLimitItem), var_export($customerSearchRowBasicCreditLimitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The creditLimit 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 creditLimit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $creditLimit
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCreditLimit(array $creditLimit = array())
    {
        // validation for constraint: array
        if ('' !== ($creditLimitArrayErrorMessage = self::validateCreditLimitForArrayConstraintsFromSetCreditLimit($creditLimit))) {
            throw new \InvalidArgumentException($creditLimitArrayErrorMessage, __LINE__);
        }
        $this->creditLimit = $creditLimit;
        return $this;
    }
    /**
     * Add item to creditLimit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCreditLimit(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The creditLimit 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->creditLimit[] = $item;
        return $this;
    }
    /**
     * Get currency value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCurrency()
    {
        return $this->currency;
    }
    /**
     * This method is responsible for validating the values passed to the setCurrency method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCurrency method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCurrencyForArrayConstraintsFromSetCurrency(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicCurrencyItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicCurrencyItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicCurrencyItem) ? get_class($customerSearchRowBasicCurrencyItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicCurrencyItem), var_export($customerSearchRowBasicCurrencyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The currency property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set currency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $currency
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setCurrency(array $currency = array())
    {
        // validation for constraint: array
        if ('' !== ($currencyArrayErrorMessage = self::validateCurrencyForArrayConstraintsFromSetCurrency($currency))) {
            throw new \InvalidArgumentException($currencyArrayErrorMessage, __LINE__);
        }
        $this->currency = $currency;
        return $this;
    }
    /**
     * Add item to currency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToCurrency(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The currency property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->currency[] = $item;
        return $this;
    }
    /**
     * Get dateClosed value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getDateClosed()
    {
        return $this->dateClosed;
    }
    /**
     * This method is responsible for validating the values passed to the setDateClosed method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDateClosed method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDateClosedForArrayConstraintsFromSetDateClosed(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicDateClosedItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicDateClosedItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicDateClosedItem) ? get_class($customerSearchRowBasicDateClosedItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicDateClosedItem), var_export($customerSearchRowBasicDateClosedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The dateClosed 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 dateClosed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $dateClosed
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setDateClosed(array $dateClosed = array())
    {
        // validation for constraint: array
        if ('' !== ($dateClosedArrayErrorMessage = self::validateDateClosedForArrayConstraintsFromSetDateClosed($dateClosed))) {
            throw new \InvalidArgumentException($dateClosedArrayErrorMessage, __LINE__);
        }
        $this->dateClosed = $dateClosed;
        return $this;
    }
    /**
     * Add item to dateClosed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToDateClosed(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The dateClosed 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->dateClosed[] = $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 $customerSearchRowBasicDateCreatedItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicDateCreatedItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicDateCreatedItem) ? get_class($customerSearchRowBasicDateCreatedItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicDateCreatedItem), var_export($customerSearchRowBasicDateCreatedItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 daysOverdue value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getDaysOverdue()
    {
        return $this->daysOverdue;
    }
    /**
     * This method is responsible for validating the values passed to the setDaysOverdue method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDaysOverdue method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDaysOverdueForArrayConstraintsFromSetDaysOverdue(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicDaysOverdueItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicDaysOverdueItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($customerSearchRowBasicDaysOverdueItem) ? get_class($customerSearchRowBasicDaysOverdueItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicDaysOverdueItem), var_export($customerSearchRowBasicDaysOverdueItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The daysOverdue 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 daysOverdue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $daysOverdue
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setDaysOverdue(array $daysOverdue = array())
    {
        // validation for constraint: array
        if ('' !== ($daysOverdueArrayErrorMessage = self::validateDaysOverdueForArrayConstraintsFromSetDaysOverdue($daysOverdue))) {
            throw new \InvalidArgumentException($daysOverdueArrayErrorMessage, __LINE__);
        }
        $this->daysOverdue = $daysOverdue;
        return $this;
    }
    /**
     * Add item to daysOverdue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToDaysOverdue(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The daysOverdue 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->daysOverdue[] = $item;
        return $this;
    }
    /**
     * Get defaultOrderPriority value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getDefaultOrderPriority()
    {
        return $this->defaultOrderPriority;
    }
    /**
     * This method is responsible for validating the values passed to the setDefaultOrderPriority method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDefaultOrderPriority method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDefaultOrderPriorityForArrayConstraintsFromSetDefaultOrderPriority(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicDefaultOrderPriorityItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicDefaultOrderPriorityItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicDefaultOrderPriorityItem) ? get_class($customerSearchRowBasicDefaultOrderPriorityItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicDefaultOrderPriorityItem), var_export($customerSearchRowBasicDefaultOrderPriorityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The defaultOrderPriority 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 defaultOrderPriority value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $defaultOrderPriority
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setDefaultOrderPriority(array $defaultOrderPriority = array())
    {
        // validation for constraint: array
        if ('' !== ($defaultOrderPriorityArrayErrorMessage = self::validateDefaultOrderPriorityForArrayConstraintsFromSetDefaultOrderPriority($defaultOrderPriority))) {
            throw new \InvalidArgumentException($defaultOrderPriorityArrayErrorMessage, __LINE__);
        }
        $this->defaultOrderPriority = $defaultOrderPriority;
        return $this;
    }
    /**
     * Add item to defaultOrderPriority value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToDefaultOrderPriority(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The defaultOrderPriority 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->defaultOrderPriority[] = $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 $customerSearchRowBasicDefaultTaxRegItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicDefaultTaxRegItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicDefaultTaxRegItem) ? get_class($customerSearchRowBasicDefaultTaxRegItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicDefaultTaxRegItem), var_export($customerSearchRowBasicDefaultTaxRegItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 depositBalance value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getDepositBalance()
    {
        return $this->depositBalance;
    }
    /**
     * This method is responsible for validating the values passed to the setDepositBalance method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDepositBalance method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDepositBalanceForArrayConstraintsFromSetDepositBalance(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicDepositBalanceItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicDepositBalanceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicDepositBalanceItem) ? get_class($customerSearchRowBasicDepositBalanceItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicDepositBalanceItem), var_export($customerSearchRowBasicDepositBalanceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The depositBalance 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 depositBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $depositBalance
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setDepositBalance(array $depositBalance = array())
    {
        // validation for constraint: array
        if ('' !== ($depositBalanceArrayErrorMessage = self::validateDepositBalanceForArrayConstraintsFromSetDepositBalance($depositBalance))) {
            throw new \InvalidArgumentException($depositBalanceArrayErrorMessage, __LINE__);
        }
        $this->depositBalance = $depositBalance;
        return $this;
    }
    /**
     * Add item to depositBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToDepositBalance(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The depositBalance 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->depositBalance[] = $item;
        return $this;
    }
    /**
     * Get drAccount value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getDrAccount()
    {
        return $this->drAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setDrAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDrAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDrAccountForArrayConstraintsFromSetDrAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicDrAccountItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicDrAccountItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicDrAccountItem) ? get_class($customerSearchRowBasicDrAccountItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicDrAccountItem), var_export($customerSearchRowBasicDrAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The drAccount 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 drAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $drAccount
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setDrAccount(array $drAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($drAccountArrayErrorMessage = self::validateDrAccountForArrayConstraintsFromSetDrAccount($drAccount))) {
            throw new \InvalidArgumentException($drAccountArrayErrorMessage, __LINE__);
        }
        $this->drAccount = $drAccount;
        return $this;
    }
    /**
     * Add item to drAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToDrAccount(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The drAccount 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->drAccount[] = $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 $customerSearchRowBasicEmailItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicEmailItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicEmailItem) ? get_class($customerSearchRowBasicEmailItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicEmailItem), var_export($customerSearchRowBasicEmailItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 emailPreference value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getEmailPreference()
    {
        return $this->emailPreference;
    }
    /**
     * This method is responsible for validating the values passed to the setEmailPreference method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEmailPreference method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEmailPreferenceForArrayConstraintsFromSetEmailPreference(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicEmailPreferenceItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicEmailPreferenceItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicEmailPreferenceItem) ? get_class($customerSearchRowBasicEmailPreferenceItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicEmailPreferenceItem), var_export($customerSearchRowBasicEmailPreferenceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The emailPreference 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 emailPreference value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $emailPreference
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setEmailPreference(array $emailPreference = array())
    {
        // validation for constraint: array
        if ('' !== ($emailPreferenceArrayErrorMessage = self::validateEmailPreferenceForArrayConstraintsFromSetEmailPreference($emailPreference))) {
            throw new \InvalidArgumentException($emailPreferenceArrayErrorMessage, __LINE__);
        }
        $this->emailPreference = $emailPreference;
        return $this;
    }
    /**
     * Add item to emailPreference value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToEmailPreference(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The emailPreference 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->emailPreference[] = $item;
        return $this;
    }
    /**
     * Get emailTransactions value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getEmailTransactions()
    {
        return $this->emailTransactions;
    }
    /**
     * This method is responsible for validating the values passed to the setEmailTransactions method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEmailTransactions method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEmailTransactionsForArrayConstraintsFromSetEmailTransactions(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicEmailTransactionsItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicEmailTransactionsItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicEmailTransactionsItem) ? get_class($customerSearchRowBasicEmailTransactionsItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicEmailTransactionsItem), var_export($customerSearchRowBasicEmailTransactionsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The emailTransactions 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 emailTransactions value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $emailTransactions
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setEmailTransactions(array $emailTransactions = array())
    {
        // validation for constraint: array
        if ('' !== ($emailTransactionsArrayErrorMessage = self::validateEmailTransactionsForArrayConstraintsFromSetEmailTransactions($emailTransactions))) {
            throw new \InvalidArgumentException($emailTransactionsArrayErrorMessage, __LINE__);
        }
        $this->emailTransactions = $emailTransactions;
        return $this;
    }
    /**
     * Add item to emailTransactions value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToEmailTransactions(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The emailTransactions 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->emailTransactions[] = $item;
        return $this;
    }
    /**
     * Get endDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getEndDate()
    {
        return $this->endDate;
    }
    /**
     * This method is responsible for validating the values passed to the setEndDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEndDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEndDateForArrayConstraintsFromSetEndDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicEndDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicEndDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicEndDateItem) ? get_class($customerSearchRowBasicEndDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicEndDateItem), var_export($customerSearchRowBasicEndDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The endDate 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 endDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $endDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setEndDate(array $endDate = array())
    {
        // validation for constraint: array
        if ('' !== ($endDateArrayErrorMessage = self::validateEndDateForArrayConstraintsFromSetEndDate($endDate))) {
            throw new \InvalidArgumentException($endDateArrayErrorMessage, __LINE__);
        }
        $this->endDate = $endDate;
        return $this;
    }
    /**
     * Add item to endDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToEndDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The endDate 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->endDate[] = $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 $customerSearchRowBasicEntityIdItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicEntityIdItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicEntityIdItem) ? get_class($customerSearchRowBasicEntityIdItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicEntityIdItem), var_export($customerSearchRowBasicEntityIdItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicEntityNumberItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicEntityNumberItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($customerSearchRowBasicEntityNumberItem) ? get_class($customerSearchRowBasicEntityNumberItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicEntityNumberItem), var_export($customerSearchRowBasicEntityNumberItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 entityStatus value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getEntityStatus()
    {
        return $this->entityStatus;
    }
    /**
     * This method is responsible for validating the values passed to the setEntityStatus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEntityStatus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEntityStatusForArrayConstraintsFromSetEntityStatus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicEntityStatusItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicEntityStatusItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicEntityStatusItem) ? get_class($customerSearchRowBasicEntityStatusItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicEntityStatusItem), var_export($customerSearchRowBasicEntityStatusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The entityStatus 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 entityStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $entityStatus
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setEntityStatus(array $entityStatus = array())
    {
        // validation for constraint: array
        if ('' !== ($entityStatusArrayErrorMessage = self::validateEntityStatusForArrayConstraintsFromSetEntityStatus($entityStatus))) {
            throw new \InvalidArgumentException($entityStatusArrayErrorMessage, __LINE__);
        }
        $this->entityStatus = $entityStatus;
        return $this;
    }
    /**
     * Add item to entityStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToEntityStatus(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The entityStatus 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->entityStatus[] = $item;
        return $this;
    }
    /**
     * Get estimatedBudget value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedBudget()
    {
        return $this->estimatedBudget;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedBudget method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedBudget method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedBudgetForArrayConstraintsFromSetEstimatedBudget(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicEstimatedBudgetItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicEstimatedBudgetItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicEstimatedBudgetItem) ? get_class($customerSearchRowBasicEstimatedBudgetItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicEstimatedBudgetItem), var_export($customerSearchRowBasicEstimatedBudgetItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedBudget 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 estimatedBudget value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedBudget
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setEstimatedBudget(array $estimatedBudget = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedBudgetArrayErrorMessage = self::validateEstimatedBudgetForArrayConstraintsFromSetEstimatedBudget($estimatedBudget))) {
            throw new \InvalidArgumentException($estimatedBudgetArrayErrorMessage, __LINE__);
        }
        $this->estimatedBudget = $estimatedBudget;
        return $this;
    }
    /**
     * Add item to estimatedBudget value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToEstimatedBudget(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedBudget 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->estimatedBudget[] = $item;
        return $this;
    }
    /**
     * Get explicitConversion value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getExplicitConversion()
    {
        return $this->explicitConversion;
    }
    /**
     * This method is responsible for validating the values passed to the setExplicitConversion method
     * This method is willingly generated in order to preserve the one-line inline validation within the setExplicitConversion method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateExplicitConversionForArrayConstraintsFromSetExplicitConversion(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicExplicitConversionItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicExplicitConversionItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicExplicitConversionItem) ? get_class($customerSearchRowBasicExplicitConversionItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicExplicitConversionItem), var_export($customerSearchRowBasicExplicitConversionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The explicitConversion 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 explicitConversion value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $explicitConversion
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setExplicitConversion(array $explicitConversion = array())
    {
        // validation for constraint: array
        if ('' !== ($explicitConversionArrayErrorMessage = self::validateExplicitConversionForArrayConstraintsFromSetExplicitConversion($explicitConversion))) {
            throw new \InvalidArgumentException($explicitConversionArrayErrorMessage, __LINE__);
        }
        $this->explicitConversion = $explicitConversion;
        return $this;
    }
    /**
     * Add item to explicitConversion value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToExplicitConversion(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The explicitConversion 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->explicitConversion[] = $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 $customerSearchRowBasicExternalIdItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicExternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicExternalIdItem) ? get_class($customerSearchRowBasicExternalIdItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicExternalIdItem), var_export($customerSearchRowBasicExternalIdItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicFaxItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicFaxItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicFaxItem) ? get_class($customerSearchRowBasicFaxItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicFaxItem), var_export($customerSearchRowBasicFaxItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 faxTransactions value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getFaxTransactions()
    {
        return $this->faxTransactions;
    }
    /**
     * This method is responsible for validating the values passed to the setFaxTransactions method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFaxTransactions method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFaxTransactionsForArrayConstraintsFromSetFaxTransactions(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicFaxTransactionsItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicFaxTransactionsItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicFaxTransactionsItem) ? get_class($customerSearchRowBasicFaxTransactionsItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicFaxTransactionsItem), var_export($customerSearchRowBasicFaxTransactionsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The faxTransactions 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 faxTransactions value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $faxTransactions
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setFaxTransactions(array $faxTransactions = array())
    {
        // validation for constraint: array
        if ('' !== ($faxTransactionsArrayErrorMessage = self::validateFaxTransactionsForArrayConstraintsFromSetFaxTransactions($faxTransactions))) {
            throw new \InvalidArgumentException($faxTransactionsArrayErrorMessage, __LINE__);
        }
        $this->faxTransactions = $faxTransactions;
        return $this;
    }
    /**
     * Add item to faxTransactions value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToFaxTransactions(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The faxTransactions 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->faxTransactions[] = $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 $customerSearchRowBasicFirstNameItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicFirstNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicFirstNameItem) ? get_class($customerSearchRowBasicFirstNameItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicFirstNameItem), var_export($customerSearchRowBasicFirstNameItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 firstOrderDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getFirstOrderDate()
    {
        return $this->firstOrderDate;
    }
    /**
     * This method is responsible for validating the values passed to the setFirstOrderDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFirstOrderDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFirstOrderDateForArrayConstraintsFromSetFirstOrderDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicFirstOrderDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicFirstOrderDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicFirstOrderDateItem) ? get_class($customerSearchRowBasicFirstOrderDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicFirstOrderDateItem), var_export($customerSearchRowBasicFirstOrderDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The firstOrderDate 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 firstOrderDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $firstOrderDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setFirstOrderDate(array $firstOrderDate = array())
    {
        // validation for constraint: array
        if ('' !== ($firstOrderDateArrayErrorMessage = self::validateFirstOrderDateForArrayConstraintsFromSetFirstOrderDate($firstOrderDate))) {
            throw new \InvalidArgumentException($firstOrderDateArrayErrorMessage, __LINE__);
        }
        $this->firstOrderDate = $firstOrderDate;
        return $this;
    }
    /**
     * Add item to firstOrderDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToFirstOrderDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The firstOrderDate 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->firstOrderDate[] = $item;
        return $this;
    }
    /**
     * Get firstSaleDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getFirstSaleDate()
    {
        return $this->firstSaleDate;
    }
    /**
     * This method is responsible for validating the values passed to the setFirstSaleDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFirstSaleDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFirstSaleDateForArrayConstraintsFromSetFirstSaleDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicFirstSaleDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicFirstSaleDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicFirstSaleDateItem) ? get_class($customerSearchRowBasicFirstSaleDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicFirstSaleDateItem), var_export($customerSearchRowBasicFirstSaleDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The firstSaleDate 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 firstSaleDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $firstSaleDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setFirstSaleDate(array $firstSaleDate = array())
    {
        // validation for constraint: array
        if ('' !== ($firstSaleDateArrayErrorMessage = self::validateFirstSaleDateForArrayConstraintsFromSetFirstSaleDate($firstSaleDate))) {
            throw new \InvalidArgumentException($firstSaleDateArrayErrorMessage, __LINE__);
        }
        $this->firstSaleDate = $firstSaleDate;
        return $this;
    }
    /**
     * Add item to firstSaleDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToFirstSaleDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The firstSaleDate 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->firstSaleDate[] = $item;
        return $this;
    }
    /**
     * Get fxAccount value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getFxAccount()
    {
        return $this->fxAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setFxAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFxAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFxAccountForArrayConstraintsFromSetFxAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicFxAccountItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicFxAccountItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicFxAccountItem) ? get_class($customerSearchRowBasicFxAccountItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicFxAccountItem), var_export($customerSearchRowBasicFxAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The fxAccount 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 fxAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $fxAccount
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setFxAccount(array $fxAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($fxAccountArrayErrorMessage = self::validateFxAccountForArrayConstraintsFromSetFxAccount($fxAccount))) {
            throw new \InvalidArgumentException($fxAccountArrayErrorMessage, __LINE__);
        }
        $this->fxAccount = $fxAccount;
        return $this;
    }
    /**
     * Add item to fxAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToFxAccount(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The fxAccount 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->fxAccount[] = $item;
        return $this;
    }
    /**
     * Get fxBalance value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getFxBalance()
    {
        return $this->fxBalance;
    }
    /**
     * This method is responsible for validating the values passed to the setFxBalance method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFxBalance method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFxBalanceForArrayConstraintsFromSetFxBalance(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicFxBalanceItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicFxBalanceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicFxBalanceItem) ? get_class($customerSearchRowBasicFxBalanceItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicFxBalanceItem), var_export($customerSearchRowBasicFxBalanceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The fxBalance 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 fxBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $fxBalance
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setFxBalance(array $fxBalance = array())
    {
        // validation for constraint: array
        if ('' !== ($fxBalanceArrayErrorMessage = self::validateFxBalanceForArrayConstraintsFromSetFxBalance($fxBalance))) {
            throw new \InvalidArgumentException($fxBalanceArrayErrorMessage, __LINE__);
        }
        $this->fxBalance = $fxBalance;
        return $this;
    }
    /**
     * Add item to fxBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToFxBalance(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The fxBalance 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->fxBalance[] = $item;
        return $this;
    }
    /**
     * Get fxConsolBalance value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getFxConsolBalance()
    {
        return $this->fxConsolBalance;
    }
    /**
     * This method is responsible for validating the values passed to the setFxConsolBalance method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFxConsolBalance method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFxConsolBalanceForArrayConstraintsFromSetFxConsolBalance(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicFxConsolBalanceItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicFxConsolBalanceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicFxConsolBalanceItem) ? get_class($customerSearchRowBasicFxConsolBalanceItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicFxConsolBalanceItem), var_export($customerSearchRowBasicFxConsolBalanceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The fxConsolBalance 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 fxConsolBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $fxConsolBalance
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setFxConsolBalance(array $fxConsolBalance = array())
    {
        // validation for constraint: array
        if ('' !== ($fxConsolBalanceArrayErrorMessage = self::validateFxConsolBalanceForArrayConstraintsFromSetFxConsolBalance($fxConsolBalance))) {
            throw new \InvalidArgumentException($fxConsolBalanceArrayErrorMessage, __LINE__);
        }
        $this->fxConsolBalance = $fxConsolBalance;
        return $this;
    }
    /**
     * Add item to fxConsolBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToFxConsolBalance(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The fxConsolBalance 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->fxConsolBalance[] = $item;
        return $this;
    }
    /**
     * Get fxConsolUnbilledOrders value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getFxConsolUnbilledOrders()
    {
        return $this->fxConsolUnbilledOrders;
    }
    /**
     * This method is responsible for validating the values passed to the setFxConsolUnbilledOrders method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFxConsolUnbilledOrders method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFxConsolUnbilledOrdersForArrayConstraintsFromSetFxConsolUnbilledOrders(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicFxConsolUnbilledOrdersItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicFxConsolUnbilledOrdersItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicFxConsolUnbilledOrdersItem) ? get_class($customerSearchRowBasicFxConsolUnbilledOrdersItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicFxConsolUnbilledOrdersItem), var_export($customerSearchRowBasicFxConsolUnbilledOrdersItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The fxConsolUnbilledOrders 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 fxConsolUnbilledOrders value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $fxConsolUnbilledOrders
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setFxConsolUnbilledOrders(array $fxConsolUnbilledOrders = array())
    {
        // validation for constraint: array
        if ('' !== ($fxConsolUnbilledOrdersArrayErrorMessage = self::validateFxConsolUnbilledOrdersForArrayConstraintsFromSetFxConsolUnbilledOrders($fxConsolUnbilledOrders))) {
            throw new \InvalidArgumentException($fxConsolUnbilledOrdersArrayErrorMessage, __LINE__);
        }
        $this->fxConsolUnbilledOrders = $fxConsolUnbilledOrders;
        return $this;
    }
    /**
     * Add item to fxConsolUnbilledOrders value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToFxConsolUnbilledOrders(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The fxConsolUnbilledOrders 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->fxConsolUnbilledOrders[] = $item;
        return $this;
    }
    /**
     * Get fxUnbilledOrders value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getFxUnbilledOrders()
    {
        return $this->fxUnbilledOrders;
    }
    /**
     * This method is responsible for validating the values passed to the setFxUnbilledOrders method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFxUnbilledOrders method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFxUnbilledOrdersForArrayConstraintsFromSetFxUnbilledOrders(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicFxUnbilledOrdersItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicFxUnbilledOrdersItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicFxUnbilledOrdersItem) ? get_class($customerSearchRowBasicFxUnbilledOrdersItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicFxUnbilledOrdersItem), var_export($customerSearchRowBasicFxUnbilledOrdersItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The fxUnbilledOrders 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 fxUnbilledOrders value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $fxUnbilledOrders
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setFxUnbilledOrders(array $fxUnbilledOrders = array())
    {
        // validation for constraint: array
        if ('' !== ($fxUnbilledOrdersArrayErrorMessage = self::validateFxUnbilledOrdersForArrayConstraintsFromSetFxUnbilledOrders($fxUnbilledOrders))) {
            throw new \InvalidArgumentException($fxUnbilledOrdersArrayErrorMessage, __LINE__);
        }
        $this->fxUnbilledOrders = $fxUnbilledOrders;
        return $this;
    }
    /**
     * Add item to fxUnbilledOrders value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToFxUnbilledOrders(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The fxUnbilledOrders 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->fxUnbilledOrders[] = $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 $customerSearchRowBasicGiveAccessItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicGiveAccessItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicGiveAccessItem) ? get_class($customerSearchRowBasicGiveAccessItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicGiveAccessItem), var_export($customerSearchRowBasicGiveAccessItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicGlobalSubscriptionStatusItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicGlobalSubscriptionStatusItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicGlobalSubscriptionStatusItem) ? get_class($customerSearchRowBasicGlobalSubscriptionStatusItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicGlobalSubscriptionStatusItem), var_export($customerSearchRowBasicGlobalSubscriptionStatusItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 groupPricingLevel value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getGroupPricingLevel()
    {
        return $this->groupPricingLevel;
    }
    /**
     * This method is responsible for validating the values passed to the setGroupPricingLevel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGroupPricingLevel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGroupPricingLevelForArrayConstraintsFromSetGroupPricingLevel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicGroupPricingLevelItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicGroupPricingLevelItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicGroupPricingLevelItem) ? get_class($customerSearchRowBasicGroupPricingLevelItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicGroupPricingLevelItem), var_export($customerSearchRowBasicGroupPricingLevelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The groupPricingLevel 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 groupPricingLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $groupPricingLevel
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setGroupPricingLevel(array $groupPricingLevel = array())
    {
        // validation for constraint: array
        if ('' !== ($groupPricingLevelArrayErrorMessage = self::validateGroupPricingLevelForArrayConstraintsFromSetGroupPricingLevel($groupPricingLevel))) {
            throw new \InvalidArgumentException($groupPricingLevelArrayErrorMessage, __LINE__);
        }
        $this->groupPricingLevel = $groupPricingLevel;
        return $this;
    }
    /**
     * Add item to groupPricingLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToGroupPricingLevel(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The groupPricingLevel 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->groupPricingLevel[] = $item;
        return $this;
    }
    /**
     * Get hasDuplicates value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getHasDuplicates()
    {
        return $this->hasDuplicates;
    }
    /**
     * This method is responsible for validating the values passed to the setHasDuplicates method
     * This method is willingly generated in order to preserve the one-line inline validation within the setHasDuplicates method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateHasDuplicatesForArrayConstraintsFromSetHasDuplicates(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicHasDuplicatesItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicHasDuplicatesItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicHasDuplicatesItem) ? get_class($customerSearchRowBasicHasDuplicatesItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicHasDuplicatesItem), var_export($customerSearchRowBasicHasDuplicatesItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The hasDuplicates 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 hasDuplicates value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $hasDuplicates
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setHasDuplicates(array $hasDuplicates = array())
    {
        // validation for constraint: array
        if ('' !== ($hasDuplicatesArrayErrorMessage = self::validateHasDuplicatesForArrayConstraintsFromSetHasDuplicates($hasDuplicates))) {
            throw new \InvalidArgumentException($hasDuplicatesArrayErrorMessage, __LINE__);
        }
        $this->hasDuplicates = $hasDuplicates;
        return $this;
    }
    /**
     * Add item to hasDuplicates value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToHasDuplicates(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The hasDuplicates 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->hasDuplicates[] = $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 $customerSearchRowBasicHomePhoneItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicHomePhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicHomePhoneItem) ? get_class($customerSearchRowBasicHomePhoneItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicHomePhoneItem), var_export($customerSearchRowBasicHomePhoneItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 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 $customerSearchRowBasicImageItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicImageItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicImageItem) ? get_class($customerSearchRowBasicImageItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicImageItem), var_export($customerSearchRowBasicImageItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicInternalIdItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicInternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicInternalIdItem) ? get_class($customerSearchRowBasicInternalIdItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicInternalIdItem), var_export($customerSearchRowBasicInternalIdItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 isBudgetApproved value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsBudgetApproved()
    {
        return $this->isBudgetApproved;
    }
    /**
     * This method is responsible for validating the values passed to the setIsBudgetApproved method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsBudgetApproved method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsBudgetApprovedForArrayConstraintsFromSetIsBudgetApproved(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicIsBudgetApprovedItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicIsBudgetApprovedItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicIsBudgetApprovedItem) ? get_class($customerSearchRowBasicIsBudgetApprovedItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicIsBudgetApprovedItem), var_export($customerSearchRowBasicIsBudgetApprovedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isBudgetApproved 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 isBudgetApproved value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isBudgetApproved
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setIsBudgetApproved(array $isBudgetApproved = array())
    {
        // validation for constraint: array
        if ('' !== ($isBudgetApprovedArrayErrorMessage = self::validateIsBudgetApprovedForArrayConstraintsFromSetIsBudgetApproved($isBudgetApproved))) {
            throw new \InvalidArgumentException($isBudgetApprovedArrayErrorMessage, __LINE__);
        }
        $this->isBudgetApproved = $isBudgetApproved;
        return $this;
    }
    /**
     * Add item to isBudgetApproved value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToIsBudgetApproved(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isBudgetApproved 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->isBudgetApproved[] = $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 $customerSearchRowBasicIsDefaultBillingItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicIsDefaultBillingItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicIsDefaultBillingItem) ? get_class($customerSearchRowBasicIsDefaultBillingItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicIsDefaultBillingItem), var_export($customerSearchRowBasicIsDefaultBillingItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicIsDefaultShippingItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicIsDefaultShippingItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicIsDefaultShippingItem) ? get_class($customerSearchRowBasicIsDefaultShippingItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicIsDefaultShippingItem), var_export($customerSearchRowBasicIsDefaultShippingItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicIsInactiveItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicIsInactiveItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicIsInactiveItem) ? get_class($customerSearchRowBasicIsInactiveItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicIsInactiveItem), var_export($customerSearchRowBasicIsInactiveItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 isPerson value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsPerson()
    {
        return $this->isPerson;
    }
    /**
     * This method is responsible for validating the values passed to the setIsPerson method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsPerson method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsPersonForArrayConstraintsFromSetIsPerson(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicIsPersonItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicIsPersonItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicIsPersonItem) ? get_class($customerSearchRowBasicIsPersonItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicIsPersonItem), var_export($customerSearchRowBasicIsPersonItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isPerson 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 isPerson value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isPerson
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setIsPerson(array $isPerson = array())
    {
        // validation for constraint: array
        if ('' !== ($isPersonArrayErrorMessage = self::validateIsPersonForArrayConstraintsFromSetIsPerson($isPerson))) {
            throw new \InvalidArgumentException($isPersonArrayErrorMessage, __LINE__);
        }
        $this->isPerson = $isPerson;
        return $this;
    }
    /**
     * Add item to isPerson value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToIsPerson(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isPerson 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->isPerson[] = $item;
        return $this;
    }
    /**
     * Get isShipAddress value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsShipAddress()
    {
        return $this->isShipAddress;
    }
    /**
     * This method is responsible for validating the values passed to the setIsShipAddress method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsShipAddress method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsShipAddressForArrayConstraintsFromSetIsShipAddress(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicIsShipAddressItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicIsShipAddressItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicIsShipAddressItem) ? get_class($customerSearchRowBasicIsShipAddressItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicIsShipAddressItem), var_export($customerSearchRowBasicIsShipAddressItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isShipAddress 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 isShipAddress value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isShipAddress
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setIsShipAddress(array $isShipAddress = array())
    {
        // validation for constraint: array
        if ('' !== ($isShipAddressArrayErrorMessage = self::validateIsShipAddressForArrayConstraintsFromSetIsShipAddress($isShipAddress))) {
            throw new \InvalidArgumentException($isShipAddressArrayErrorMessage, __LINE__);
        }
        $this->isShipAddress = $isShipAddress;
        return $this;
    }
    /**
     * Add item to isShipAddress value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToIsShipAddress(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isShipAddress 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->isShipAddress[] = $item;
        return $this;
    }
    /**
     * Get itemPricingLevel value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getItemPricingLevel()
    {
        return $this->itemPricingLevel;
    }
    /**
     * This method is responsible for validating the values passed to the setItemPricingLevel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setItemPricingLevel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateItemPricingLevelForArrayConstraintsFromSetItemPricingLevel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicItemPricingLevelItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicItemPricingLevelItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicItemPricingLevelItem) ? get_class($customerSearchRowBasicItemPricingLevelItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicItemPricingLevelItem), var_export($customerSearchRowBasicItemPricingLevelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The itemPricingLevel 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 itemPricingLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $itemPricingLevel
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setItemPricingLevel(array $itemPricingLevel = array())
    {
        // validation for constraint: array
        if ('' !== ($itemPricingLevelArrayErrorMessage = self::validateItemPricingLevelForArrayConstraintsFromSetItemPricingLevel($itemPricingLevel))) {
            throw new \InvalidArgumentException($itemPricingLevelArrayErrorMessage, __LINE__);
        }
        $this->itemPricingLevel = $itemPricingLevel;
        return $this;
    }
    /**
     * Add item to itemPricingLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToItemPricingLevel(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The itemPricingLevel 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->itemPricingLevel[] = $item;
        return $this;
    }
    /**
     * Get itemPricingUnitPrice value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getItemPricingUnitPrice()
    {
        return $this->itemPricingUnitPrice;
    }
    /**
     * This method is responsible for validating the values passed to the setItemPricingUnitPrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setItemPricingUnitPrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateItemPricingUnitPriceForArrayConstraintsFromSetItemPricingUnitPrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicItemPricingUnitPriceItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicItemPricingUnitPriceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicItemPricingUnitPriceItem) ? get_class($customerSearchRowBasicItemPricingUnitPriceItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicItemPricingUnitPriceItem), var_export($customerSearchRowBasicItemPricingUnitPriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The itemPricingUnitPrice 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 itemPricingUnitPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $itemPricingUnitPrice
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setItemPricingUnitPrice(array $itemPricingUnitPrice = array())
    {
        // validation for constraint: array
        if ('' !== ($itemPricingUnitPriceArrayErrorMessage = self::validateItemPricingUnitPriceForArrayConstraintsFromSetItemPricingUnitPrice($itemPricingUnitPrice))) {
            throw new \InvalidArgumentException($itemPricingUnitPriceArrayErrorMessage, __LINE__);
        }
        $this->itemPricingUnitPrice = $itemPricingUnitPrice;
        return $this;
    }
    /**
     * Add item to itemPricingUnitPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToItemPricingUnitPrice(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The itemPricingUnitPrice 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->itemPricingUnitPrice[] = $item;
        return $this;
    }
    /**
     * Get jobEndDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getJobEndDate()
    {
        return $this->jobEndDate;
    }
    /**
     * This method is responsible for validating the values passed to the setJobEndDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setJobEndDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateJobEndDateForArrayConstraintsFromSetJobEndDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicJobEndDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicJobEndDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicJobEndDateItem) ? get_class($customerSearchRowBasicJobEndDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicJobEndDateItem), var_export($customerSearchRowBasicJobEndDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The jobEndDate 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 jobEndDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $jobEndDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setJobEndDate(array $jobEndDate = array())
    {
        // validation for constraint: array
        if ('' !== ($jobEndDateArrayErrorMessage = self::validateJobEndDateForArrayConstraintsFromSetJobEndDate($jobEndDate))) {
            throw new \InvalidArgumentException($jobEndDateArrayErrorMessage, __LINE__);
        }
        $this->jobEndDate = $jobEndDate;
        return $this;
    }
    /**
     * Add item to jobEndDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToJobEndDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The jobEndDate 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->jobEndDate[] = $item;
        return $this;
    }
    /**
     * Get jobProjectedEnd value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getJobProjectedEnd()
    {
        return $this->jobProjectedEnd;
    }
    /**
     * This method is responsible for validating the values passed to the setJobProjectedEnd method
     * This method is willingly generated in order to preserve the one-line inline validation within the setJobProjectedEnd method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateJobProjectedEndForArrayConstraintsFromSetJobProjectedEnd(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicJobProjectedEndItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicJobProjectedEndItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicJobProjectedEndItem) ? get_class($customerSearchRowBasicJobProjectedEndItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicJobProjectedEndItem), var_export($customerSearchRowBasicJobProjectedEndItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The jobProjectedEnd 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 jobProjectedEnd value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $jobProjectedEnd
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setJobProjectedEnd(array $jobProjectedEnd = array())
    {
        // validation for constraint: array
        if ('' !== ($jobProjectedEndArrayErrorMessage = self::validateJobProjectedEndForArrayConstraintsFromSetJobProjectedEnd($jobProjectedEnd))) {
            throw new \InvalidArgumentException($jobProjectedEndArrayErrorMessage, __LINE__);
        }
        $this->jobProjectedEnd = $jobProjectedEnd;
        return $this;
    }
    /**
     * Add item to jobProjectedEnd value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToJobProjectedEnd(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The jobProjectedEnd 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->jobProjectedEnd[] = $item;
        return $this;
    }
    /**
     * Get jobStartDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getJobStartDate()
    {
        return $this->jobStartDate;
    }
    /**
     * This method is responsible for validating the values passed to the setJobStartDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setJobStartDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateJobStartDateForArrayConstraintsFromSetJobStartDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicJobStartDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicJobStartDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicJobStartDateItem) ? get_class($customerSearchRowBasicJobStartDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicJobStartDateItem), var_export($customerSearchRowBasicJobStartDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The jobStartDate 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 jobStartDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $jobStartDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setJobStartDate(array $jobStartDate = array())
    {
        // validation for constraint: array
        if ('' !== ($jobStartDateArrayErrorMessage = self::validateJobStartDateForArrayConstraintsFromSetJobStartDate($jobStartDate))) {
            throw new \InvalidArgumentException($jobStartDateArrayErrorMessage, __LINE__);
        }
        $this->jobStartDate = $jobStartDate;
        return $this;
    }
    /**
     * Add item to jobStartDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToJobStartDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The jobStartDate 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->jobStartDate[] = $item;
        return $this;
    }
    /**
     * Get jobType value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getJobType()
    {
        return $this->jobType;
    }
    /**
     * This method is responsible for validating the values passed to the setJobType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setJobType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateJobTypeForArrayConstraintsFromSetJobType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicJobTypeItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicJobTypeItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicJobTypeItem) ? get_class($customerSearchRowBasicJobTypeItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicJobTypeItem), var_export($customerSearchRowBasicJobTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The jobType 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 jobType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $jobType
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setJobType(array $jobType = array())
    {
        // validation for constraint: array
        if ('' !== ($jobTypeArrayErrorMessage = self::validateJobTypeForArrayConstraintsFromSetJobType($jobType))) {
            throw new \InvalidArgumentException($jobTypeArrayErrorMessage, __LINE__);
        }
        $this->jobType = $jobType;
        return $this;
    }
    /**
     * Add item to jobType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToJobType(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The jobType 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->jobType[] = $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 $customerSearchRowBasicLanguageItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicLanguageItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicLanguageItem) ? get_class($customerSearchRowBasicLanguageItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicLanguageItem), var_export($customerSearchRowBasicLanguageItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicLastModifiedDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicLastModifiedDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicLastModifiedDateItem) ? get_class($customerSearchRowBasicLastModifiedDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicLastModifiedDateItem), var_export($customerSearchRowBasicLastModifiedDateItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicLastNameItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicLastNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicLastNameItem) ? get_class($customerSearchRowBasicLastNameItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicLastNameItem), var_export($customerSearchRowBasicLastNameItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 lastOrderDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLastOrderDate()
    {
        return $this->lastOrderDate;
    }
    /**
     * This method is responsible for validating the values passed to the setLastOrderDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLastOrderDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLastOrderDateForArrayConstraintsFromSetLastOrderDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicLastOrderDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicLastOrderDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicLastOrderDateItem) ? get_class($customerSearchRowBasicLastOrderDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicLastOrderDateItem), var_export($customerSearchRowBasicLastOrderDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lastOrderDate 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 lastOrderDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $lastOrderDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setLastOrderDate(array $lastOrderDate = array())
    {
        // validation for constraint: array
        if ('' !== ($lastOrderDateArrayErrorMessage = self::validateLastOrderDateForArrayConstraintsFromSetLastOrderDate($lastOrderDate))) {
            throw new \InvalidArgumentException($lastOrderDateArrayErrorMessage, __LINE__);
        }
        $this->lastOrderDate = $lastOrderDate;
        return $this;
    }
    /**
     * Add item to lastOrderDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToLastOrderDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The lastOrderDate 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->lastOrderDate[] = $item;
        return $this;
    }
    /**
     * Get lastSaleDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLastSaleDate()
    {
        return $this->lastSaleDate;
    }
    /**
     * This method is responsible for validating the values passed to the setLastSaleDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLastSaleDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLastSaleDateForArrayConstraintsFromSetLastSaleDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicLastSaleDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicLastSaleDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicLastSaleDateItem) ? get_class($customerSearchRowBasicLastSaleDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicLastSaleDateItem), var_export($customerSearchRowBasicLastSaleDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lastSaleDate 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 lastSaleDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $lastSaleDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setLastSaleDate(array $lastSaleDate = array())
    {
        // validation for constraint: array
        if ('' !== ($lastSaleDateArrayErrorMessage = self::validateLastSaleDateForArrayConstraintsFromSetLastSaleDate($lastSaleDate))) {
            throw new \InvalidArgumentException($lastSaleDateArrayErrorMessage, __LINE__);
        }
        $this->lastSaleDate = $lastSaleDate;
        return $this;
    }
    /**
     * Add item to lastSaleDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToLastSaleDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The lastSaleDate 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->lastSaleDate[] = $item;
        return $this;
    }
    /**
     * Get leadDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLeadDate()
    {
        return $this->leadDate;
    }
    /**
     * This method is responsible for validating the values passed to the setLeadDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLeadDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLeadDateForArrayConstraintsFromSetLeadDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicLeadDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicLeadDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicLeadDateItem) ? get_class($customerSearchRowBasicLeadDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicLeadDateItem), var_export($customerSearchRowBasicLeadDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The leadDate 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 leadDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $leadDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setLeadDate(array $leadDate = array())
    {
        // validation for constraint: array
        if ('' !== ($leadDateArrayErrorMessage = self::validateLeadDateForArrayConstraintsFromSetLeadDate($leadDate))) {
            throw new \InvalidArgumentException($leadDateArrayErrorMessage, __LINE__);
        }
        $this->leadDate = $leadDate;
        return $this;
    }
    /**
     * Add item to leadDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToLeadDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The leadDate 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->leadDate[] = $item;
        return $this;
    }
    /**
     * Get leadSource value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getLeadSource()
    {
        return $this->leadSource;
    }
    /**
     * This method is responsible for validating the values passed to the setLeadSource method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLeadSource method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLeadSourceForArrayConstraintsFromSetLeadSource(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicLeadSourceItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicLeadSourceItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicLeadSourceItem) ? get_class($customerSearchRowBasicLeadSourceItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicLeadSourceItem), var_export($customerSearchRowBasicLeadSourceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The leadSource 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 leadSource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $leadSource
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setLeadSource(array $leadSource = array())
    {
        // validation for constraint: array
        if ('' !== ($leadSourceArrayErrorMessage = self::validateLeadSourceForArrayConstraintsFromSetLeadSource($leadSource))) {
            throw new \InvalidArgumentException($leadSourceArrayErrorMessage, __LINE__);
        }
        $this->leadSource = $leadSource;
        return $this;
    }
    /**
     * Add item to leadSource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToLeadSource(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The leadSource 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->leadSource[] = $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 $customerSearchRowBasicLevelItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicLevelItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicLevelItem) ? get_class($customerSearchRowBasicLevelItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicLevelItem), var_export($customerSearchRowBasicLevelItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 manualCreditHold value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getManualCreditHold()
    {
        return $this->manualCreditHold;
    }
    /**
     * This method is responsible for validating the values passed to the setManualCreditHold method
     * This method is willingly generated in order to preserve the one-line inline validation within the setManualCreditHold method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateManualCreditHoldForArrayConstraintsFromSetManualCreditHold(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicManualCreditHoldItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicManualCreditHoldItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicManualCreditHoldItem) ? get_class($customerSearchRowBasicManualCreditHoldItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicManualCreditHoldItem), var_export($customerSearchRowBasicManualCreditHoldItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The manualCreditHold 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 manualCreditHold value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $manualCreditHold
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setManualCreditHold(array $manualCreditHold = array())
    {
        // validation for constraint: array
        if ('' !== ($manualCreditHoldArrayErrorMessage = self::validateManualCreditHoldForArrayConstraintsFromSetManualCreditHold($manualCreditHold))) {
            throw new \InvalidArgumentException($manualCreditHoldArrayErrorMessage, __LINE__);
        }
        $this->manualCreditHold = $manualCreditHold;
        return $this;
    }
    /**
     * Add item to manualCreditHold value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToManualCreditHold(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The manualCreditHold 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->manualCreditHold[] = $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 $customerSearchRowBasicMiddleNameItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicMiddleNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicMiddleNameItem) ? get_class($customerSearchRowBasicMiddleNameItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicMiddleNameItem), var_export($customerSearchRowBasicMiddleNameItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicMobilePhoneItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicMobilePhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicMobilePhoneItem) ? get_class($customerSearchRowBasicMobilePhoneItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicMobilePhoneItem), var_export($customerSearchRowBasicMobilePhoneItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 monthlyClosing value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getMonthlyClosing()
    {
        return $this->monthlyClosing;
    }
    /**
     * This method is responsible for validating the values passed to the setMonthlyClosing method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMonthlyClosing method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMonthlyClosingForArrayConstraintsFromSetMonthlyClosing(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicMonthlyClosingItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicMonthlyClosingItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicMonthlyClosingItem) ? get_class($customerSearchRowBasicMonthlyClosingItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicMonthlyClosingItem), var_export($customerSearchRowBasicMonthlyClosingItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The monthlyClosing 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 monthlyClosing value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $monthlyClosing
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setMonthlyClosing(array $monthlyClosing = array())
    {
        // validation for constraint: array
        if ('' !== ($monthlyClosingArrayErrorMessage = self::validateMonthlyClosingForArrayConstraintsFromSetMonthlyClosing($monthlyClosing))) {
            throw new \InvalidArgumentException($monthlyClosingArrayErrorMessage, __LINE__);
        }
        $this->monthlyClosing = $monthlyClosing;
        return $this;
    }
    /**
     * Add item to monthlyClosing value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToMonthlyClosing(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The monthlyClosing 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->monthlyClosing[] = $item;
        return $this;
    }
    /**
     * Get onCreditHold value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getOnCreditHold()
    {
        return $this->onCreditHold;
    }
    /**
     * This method is responsible for validating the values passed to the setOnCreditHold method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOnCreditHold method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOnCreditHoldForArrayConstraintsFromSetOnCreditHold(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicOnCreditHoldItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicOnCreditHoldItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicOnCreditHoldItem) ? get_class($customerSearchRowBasicOnCreditHoldItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicOnCreditHoldItem), var_export($customerSearchRowBasicOnCreditHoldItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The onCreditHold 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 onCreditHold value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $onCreditHold
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setOnCreditHold(array $onCreditHold = array())
    {
        // validation for constraint: array
        if ('' !== ($onCreditHoldArrayErrorMessage = self::validateOnCreditHoldForArrayConstraintsFromSetOnCreditHold($onCreditHold))) {
            throw new \InvalidArgumentException($onCreditHoldArrayErrorMessage, __LINE__);
        }
        $this->onCreditHold = $onCreditHold;
        return $this;
    }
    /**
     * Add item to onCreditHold value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToOnCreditHold(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The onCreditHold 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->onCreditHold[] = $item;
        return $this;
    }
    /**
     * Get overdueBalance value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getOverdueBalance()
    {
        return $this->overdueBalance;
    }
    /**
     * This method is responsible for validating the values passed to the setOverdueBalance method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOverdueBalance method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOverdueBalanceForArrayConstraintsFromSetOverdueBalance(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicOverdueBalanceItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicOverdueBalanceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicOverdueBalanceItem) ? get_class($customerSearchRowBasicOverdueBalanceItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicOverdueBalanceItem), var_export($customerSearchRowBasicOverdueBalanceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The overdueBalance 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 overdueBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $overdueBalance
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setOverdueBalance(array $overdueBalance = array())
    {
        // validation for constraint: array
        if ('' !== ($overdueBalanceArrayErrorMessage = self::validateOverdueBalanceForArrayConstraintsFromSetOverdueBalance($overdueBalance))) {
            throw new \InvalidArgumentException($overdueBalanceArrayErrorMessage, __LINE__);
        }
        $this->overdueBalance = $overdueBalance;
        return $this;
    }
    /**
     * Add item to overdueBalance value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToOverdueBalance(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The overdueBalance 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->overdueBalance[] = $item;
        return $this;
    }
    /**
     * Get parent value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getParent()
    {
        return $this->parent;
    }
    /**
     * This method is responsible for validating the values passed to the setParent method
     * This method is willingly generated in order to preserve the one-line inline validation within the setParent method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateParentForArrayConstraintsFromSetParent(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicParentItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicParentItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicParentItem) ? get_class($customerSearchRowBasicParentItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicParentItem), var_export($customerSearchRowBasicParentItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The parent 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 parent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $parent
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setParent(array $parent = array())
    {
        // validation for constraint: array
        if ('' !== ($parentArrayErrorMessage = self::validateParentForArrayConstraintsFromSetParent($parent))) {
            throw new \InvalidArgumentException($parentArrayErrorMessage, __LINE__);
        }
        $this->parent = $parent;
        return $this;
    }
    /**
     * Add item to parent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToParent(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The parent 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->parent[] = $item;
        return $this;
    }
    /**
     * Get partner value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPartner()
    {
        return $this->partner;
    }
    /**
     * This method is responsible for validating the values passed to the setPartner method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPartner method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePartnerForArrayConstraintsFromSetPartner(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicPartnerItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPartnerItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicPartnerItem) ? get_class($customerSearchRowBasicPartnerItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPartnerItem), var_export($customerSearchRowBasicPartnerItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The partner 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 partner value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $partner
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setPartner(array $partner = array())
    {
        // validation for constraint: array
        if ('' !== ($partnerArrayErrorMessage = self::validatePartnerForArrayConstraintsFromSetPartner($partner))) {
            throw new \InvalidArgumentException($partnerArrayErrorMessage, __LINE__);
        }
        $this->partner = $partner;
        return $this;
    }
    /**
     * Add item to partner value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToPartner(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The partner 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->partner[] = $item;
        return $this;
    }
    /**
     * Get partnerContribution value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPartnerContribution()
    {
        return $this->partnerContribution;
    }
    /**
     * This method is responsible for validating the values passed to the setPartnerContribution method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPartnerContribution method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePartnerContributionForArrayConstraintsFromSetPartnerContribution(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicPartnerContributionItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPartnerContributionItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicPartnerContributionItem) ? get_class($customerSearchRowBasicPartnerContributionItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPartnerContributionItem), var_export($customerSearchRowBasicPartnerContributionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The partnerContribution 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 partnerContribution value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $partnerContribution
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setPartnerContribution(array $partnerContribution = array())
    {
        // validation for constraint: array
        if ('' !== ($partnerContributionArrayErrorMessage = self::validatePartnerContributionForArrayConstraintsFromSetPartnerContribution($partnerContribution))) {
            throw new \InvalidArgumentException($partnerContributionArrayErrorMessage, __LINE__);
        }
        $this->partnerContribution = $partnerContribution;
        return $this;
    }
    /**
     * Add item to partnerContribution value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToPartnerContribution(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The partnerContribution 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->partnerContribution[] = $item;
        return $this;
    }
    /**
     * Get partnerRole value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPartnerRole()
    {
        return $this->partnerRole;
    }
    /**
     * This method is responsible for validating the values passed to the setPartnerRole method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPartnerRole method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePartnerRoleForArrayConstraintsFromSetPartnerRole(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicPartnerRoleItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPartnerRoleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicPartnerRoleItem) ? get_class($customerSearchRowBasicPartnerRoleItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPartnerRoleItem), var_export($customerSearchRowBasicPartnerRoleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The partnerRole 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 partnerRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $partnerRole
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setPartnerRole(array $partnerRole = array())
    {
        // validation for constraint: array
        if ('' !== ($partnerRoleArrayErrorMessage = self::validatePartnerRoleForArrayConstraintsFromSetPartnerRole($partnerRole))) {
            throw new \InvalidArgumentException($partnerRoleArrayErrorMessage, __LINE__);
        }
        $this->partnerRole = $partnerRole;
        return $this;
    }
    /**
     * Add item to partnerRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToPartnerRole(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The partnerRole 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->partnerRole[] = $item;
        return $this;
    }
    /**
     * Get partnerTeamMember value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPartnerTeamMember()
    {
        return $this->partnerTeamMember;
    }
    /**
     * This method is responsible for validating the values passed to the setPartnerTeamMember method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPartnerTeamMember method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePartnerTeamMemberForArrayConstraintsFromSetPartnerTeamMember(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicPartnerTeamMemberItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPartnerTeamMemberItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicPartnerTeamMemberItem) ? get_class($customerSearchRowBasicPartnerTeamMemberItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPartnerTeamMemberItem), var_export($customerSearchRowBasicPartnerTeamMemberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The partnerTeamMember 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 partnerTeamMember value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $partnerTeamMember
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setPartnerTeamMember(array $partnerTeamMember = array())
    {
        // validation for constraint: array
        if ('' !== ($partnerTeamMemberArrayErrorMessage = self::validatePartnerTeamMemberForArrayConstraintsFromSetPartnerTeamMember($partnerTeamMember))) {
            throw new \InvalidArgumentException($partnerTeamMemberArrayErrorMessage, __LINE__);
        }
        $this->partnerTeamMember = $partnerTeamMember;
        return $this;
    }
    /**
     * Add item to partnerTeamMember value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToPartnerTeamMember(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The partnerTeamMember 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->partnerTeamMember[] = $item;
        return $this;
    }
    /**
     * Get pec value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPec()
    {
        return $this->pec;
    }
    /**
     * This method is responsible for validating the values passed to the setPec method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPec method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePecForArrayConstraintsFromSetPec(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicPecItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPecItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicPecItem) ? get_class($customerSearchRowBasicPecItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPecItem), var_export($customerSearchRowBasicPecItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The pec 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 pec value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $pec
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setPec(array $pec = array())
    {
        // validation for constraint: array
        if ('' !== ($pecArrayErrorMessage = self::validatePecForArrayConstraintsFromSetPec($pec))) {
            throw new \InvalidArgumentException($pecArrayErrorMessage, __LINE__);
        }
        $this->pec = $pec;
        return $this;
    }
    /**
     * Add item to pec value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToPec(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The pec 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->pec[] = $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 $customerSearchRowBasicPermissionItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPermissionItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicPermissionItem) ? get_class($customerSearchRowBasicPermissionItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPermissionItem), var_export($customerSearchRowBasicPermissionItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 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 $customerSearchRowBasicPhoneItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicPhoneItem) ? get_class($customerSearchRowBasicPhoneItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPhoneItem), var_export($customerSearchRowBasicPhoneItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicPhoneticNameItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPhoneticNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicPhoneticNameItem) ? get_class($customerSearchRowBasicPhoneticNameItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPhoneticNameItem), var_export($customerSearchRowBasicPhoneticNameItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 prefCCProcessor value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPrefCCProcessor()
    {
        return $this->prefCCProcessor;
    }
    /**
     * This method is responsible for validating the values passed to the setPrefCCProcessor method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPrefCCProcessor method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePrefCCProcessorForArrayConstraintsFromSetPrefCCProcessor(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicPrefCCProcessorItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPrefCCProcessorItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicPrefCCProcessorItem) ? get_class($customerSearchRowBasicPrefCCProcessorItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPrefCCProcessorItem), var_export($customerSearchRowBasicPrefCCProcessorItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The prefCCProcessor 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 prefCCProcessor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $prefCCProcessor
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setPrefCCProcessor(array $prefCCProcessor = array())
    {
        // validation for constraint: array
        if ('' !== ($prefCCProcessorArrayErrorMessage = self::validatePrefCCProcessorForArrayConstraintsFromSetPrefCCProcessor($prefCCProcessor))) {
            throw new \InvalidArgumentException($prefCCProcessorArrayErrorMessage, __LINE__);
        }
        $this->prefCCProcessor = $prefCCProcessor;
        return $this;
    }
    /**
     * Add item to prefCCProcessor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToPrefCCProcessor(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The prefCCProcessor 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->prefCCProcessor[] = $item;
        return $this;
    }
    /**
     * Get priceLevel value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPriceLevel()
    {
        return $this->priceLevel;
    }
    /**
     * This method is responsible for validating the values passed to the setPriceLevel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPriceLevel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePriceLevelForArrayConstraintsFromSetPriceLevel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicPriceLevelItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPriceLevelItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicPriceLevelItem) ? get_class($customerSearchRowBasicPriceLevelItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPriceLevelItem), var_export($customerSearchRowBasicPriceLevelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The priceLevel 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 priceLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $priceLevel
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setPriceLevel(array $priceLevel = array())
    {
        // validation for constraint: array
        if ('' !== ($priceLevelArrayErrorMessage = self::validatePriceLevelForArrayConstraintsFromSetPriceLevel($priceLevel))) {
            throw new \InvalidArgumentException($priceLevelArrayErrorMessage, __LINE__);
        }
        $this->priceLevel = $priceLevel;
        return $this;
    }
    /**
     * Add item to priceLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToPriceLevel(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The priceLevel 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->priceLevel[] = $item;
        return $this;
    }
    /**
     * Get pricingGroup value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPricingGroup()
    {
        return $this->pricingGroup;
    }
    /**
     * This method is responsible for validating the values passed to the setPricingGroup method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPricingGroup method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePricingGroupForArrayConstraintsFromSetPricingGroup(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicPricingGroupItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPricingGroupItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicPricingGroupItem) ? get_class($customerSearchRowBasicPricingGroupItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPricingGroupItem), var_export($customerSearchRowBasicPricingGroupItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The pricingGroup 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 pricingGroup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $pricingGroup
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setPricingGroup(array $pricingGroup = array())
    {
        // validation for constraint: array
        if ('' !== ($pricingGroupArrayErrorMessage = self::validatePricingGroupForArrayConstraintsFromSetPricingGroup($pricingGroup))) {
            throw new \InvalidArgumentException($pricingGroupArrayErrorMessage, __LINE__);
        }
        $this->pricingGroup = $pricingGroup;
        return $this;
    }
    /**
     * Add item to pricingGroup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToPricingGroup(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The pricingGroup 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->pricingGroup[] = $item;
        return $this;
    }
    /**
     * Get pricingItem value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPricingItem()
    {
        return $this->pricingItem;
    }
    /**
     * This method is responsible for validating the values passed to the setPricingItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPricingItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePricingItemForArrayConstraintsFromSetPricingItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicPricingItemItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPricingItemItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicPricingItemItem) ? get_class($customerSearchRowBasicPricingItemItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPricingItemItem), var_export($customerSearchRowBasicPricingItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The pricingItem 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 pricingItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $pricingItem
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setPricingItem(array $pricingItem = array())
    {
        // validation for constraint: array
        if ('' !== ($pricingItemArrayErrorMessage = self::validatePricingItemForArrayConstraintsFromSetPricingItem($pricingItem))) {
            throw new \InvalidArgumentException($pricingItemArrayErrorMessage, __LINE__);
        }
        $this->pricingItem = $pricingItem;
        return $this;
    }
    /**
     * Add item to pricingItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToPricingItem(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The pricingItem 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->pricingItem[] = $item;
        return $this;
    }
    /**
     * Get printTransactions value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getPrintTransactions()
    {
        return $this->printTransactions;
    }
    /**
     * This method is responsible for validating the values passed to the setPrintTransactions method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPrintTransactions method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePrintTransactionsForArrayConstraintsFromSetPrintTransactions(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicPrintTransactionsItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicPrintTransactionsItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicPrintTransactionsItem) ? get_class($customerSearchRowBasicPrintTransactionsItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicPrintTransactionsItem), var_export($customerSearchRowBasicPrintTransactionsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The printTransactions 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 printTransactions value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $printTransactions
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setPrintTransactions(array $printTransactions = array())
    {
        // validation for constraint: array
        if ('' !== ($printTransactionsArrayErrorMessage = self::validatePrintTransactionsForArrayConstraintsFromSetPrintTransactions($printTransactions))) {
            throw new \InvalidArgumentException($printTransactionsArrayErrorMessage, __LINE__);
        }
        $this->printTransactions = $printTransactions;
        return $this;
    }
    /**
     * Add item to printTransactions value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToPrintTransactions(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The printTransactions 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->printTransactions[] = $item;
        return $this;
    }
    /**
     * Get prospectDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getProspectDate()
    {
        return $this->prospectDate;
    }
    /**
     * This method is responsible for validating the values passed to the setProspectDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setProspectDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateProspectDateForArrayConstraintsFromSetProspectDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicProspectDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicProspectDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicProspectDateItem) ? get_class($customerSearchRowBasicProspectDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicProspectDateItem), var_export($customerSearchRowBasicProspectDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The prospectDate 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 prospectDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $prospectDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setProspectDate(array $prospectDate = array())
    {
        // validation for constraint: array
        if ('' !== ($prospectDateArrayErrorMessage = self::validateProspectDateForArrayConstraintsFromSetProspectDate($prospectDate))) {
            throw new \InvalidArgumentException($prospectDateArrayErrorMessage, __LINE__);
        }
        $this->prospectDate = $prospectDate;
        return $this;
    }
    /**
     * Add item to prospectDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToProspectDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The prospectDate 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->prospectDate[] = $item;
        return $this;
    }
    /**
     * Get receivablesAccount value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getReceivablesAccount()
    {
        return $this->receivablesAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setReceivablesAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReceivablesAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReceivablesAccountForArrayConstraintsFromSetReceivablesAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicReceivablesAccountItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicReceivablesAccountItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicReceivablesAccountItem) ? get_class($customerSearchRowBasicReceivablesAccountItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicReceivablesAccountItem), var_export($customerSearchRowBasicReceivablesAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The receivablesAccount 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 receivablesAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $receivablesAccount
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setReceivablesAccount(array $receivablesAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($receivablesAccountArrayErrorMessage = self::validateReceivablesAccountForArrayConstraintsFromSetReceivablesAccount($receivablesAccount))) {
            throw new \InvalidArgumentException($receivablesAccountArrayErrorMessage, __LINE__);
        }
        $this->receivablesAccount = $receivablesAccount;
        return $this;
    }
    /**
     * Add item to receivablesAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToReceivablesAccount(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The receivablesAccount 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->receivablesAccount[] = $item;
        return $this;
    }
    /**
     * Get reminderDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getReminderDays()
    {
        return $this->reminderDays;
    }
    /**
     * This method is responsible for validating the values passed to the setReminderDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReminderDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReminderDaysForArrayConstraintsFromSetReminderDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicReminderDaysItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicReminderDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($customerSearchRowBasicReminderDaysItem) ? get_class($customerSearchRowBasicReminderDaysItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicReminderDaysItem), var_export($customerSearchRowBasicReminderDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The reminderDays 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 reminderDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $reminderDays
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setReminderDays(array $reminderDays = array())
    {
        // validation for constraint: array
        if ('' !== ($reminderDaysArrayErrorMessage = self::validateReminderDaysForArrayConstraintsFromSetReminderDays($reminderDays))) {
            throw new \InvalidArgumentException($reminderDaysArrayErrorMessage, __LINE__);
        }
        $this->reminderDays = $reminderDays;
        return $this;
    }
    /**
     * Add item to reminderDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToReminderDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The reminderDays 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->reminderDays[] = $item;
        return $this;
    }
    /**
     * Get resaleNumber value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getResaleNumber()
    {
        return $this->resaleNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setResaleNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setResaleNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateResaleNumberForArrayConstraintsFromSetResaleNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicResaleNumberItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicResaleNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicResaleNumberItem) ? get_class($customerSearchRowBasicResaleNumberItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicResaleNumberItem), var_export($customerSearchRowBasicResaleNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The resaleNumber 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 resaleNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $resaleNumber
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setResaleNumber(array $resaleNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($resaleNumberArrayErrorMessage = self::validateResaleNumberForArrayConstraintsFromSetResaleNumber($resaleNumber))) {
            throw new \InvalidArgumentException($resaleNumberArrayErrorMessage, __LINE__);
        }
        $this->resaleNumber = $resaleNumber;
        return $this;
    }
    /**
     * Add item to resaleNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToResaleNumber(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The resaleNumber 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->resaleNumber[] = $item;
        return $this;
    }
    /**
     * Get role value
     * @return \StructType\SearchColumnStringField[]|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 $customerSearchRowBasicRoleItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicRoleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicRoleItem) ? get_class($customerSearchRowBasicRoleItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicRoleItem), var_export($customerSearchRowBasicRoleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The role 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 role value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $role
     * @return \StructType\CustomerSearchRowBasic
     */
    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\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToRole(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The role 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->role[] = $item;
        return $this;
    }
    /**
     * Get salesReadiness value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSalesReadiness()
    {
        return $this->salesReadiness;
    }
    /**
     * This method is responsible for validating the values passed to the setSalesReadiness method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalesReadiness method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalesReadinessForArrayConstraintsFromSetSalesReadiness(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicSalesReadinessItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicSalesReadinessItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicSalesReadinessItem) ? get_class($customerSearchRowBasicSalesReadinessItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicSalesReadinessItem), var_export($customerSearchRowBasicSalesReadinessItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salesReadiness 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 salesReadiness value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $salesReadiness
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setSalesReadiness(array $salesReadiness = array())
    {
        // validation for constraint: array
        if ('' !== ($salesReadinessArrayErrorMessage = self::validateSalesReadinessForArrayConstraintsFromSetSalesReadiness($salesReadiness))) {
            throw new \InvalidArgumentException($salesReadinessArrayErrorMessage, __LINE__);
        }
        $this->salesReadiness = $salesReadiness;
        return $this;
    }
    /**
     * Add item to salesReadiness value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToSalesReadiness(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The salesReadiness 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->salesReadiness[] = $item;
        return $this;
    }
    /**
     * Get salesRep value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSalesRep()
    {
        return $this->salesRep;
    }
    /**
     * This method is responsible for validating the values passed to the setSalesRep method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalesRep method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalesRepForArrayConstraintsFromSetSalesRep(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicSalesRepItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicSalesRepItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicSalesRepItem) ? get_class($customerSearchRowBasicSalesRepItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicSalesRepItem), var_export($customerSearchRowBasicSalesRepItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salesRep 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 salesRep value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $salesRep
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setSalesRep(array $salesRep = array())
    {
        // validation for constraint: array
        if ('' !== ($salesRepArrayErrorMessage = self::validateSalesRepForArrayConstraintsFromSetSalesRep($salesRep))) {
            throw new \InvalidArgumentException($salesRepArrayErrorMessage, __LINE__);
        }
        $this->salesRep = $salesRep;
        return $this;
    }
    /**
     * Add item to salesRep value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToSalesRep(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The salesRep 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->salesRep[] = $item;
        return $this;
    }
    /**
     * Get salesTeamMember value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSalesTeamMember()
    {
        return $this->salesTeamMember;
    }
    /**
     * This method is responsible for validating the values passed to the setSalesTeamMember method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalesTeamMember method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalesTeamMemberForArrayConstraintsFromSetSalesTeamMember(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicSalesTeamMemberItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicSalesTeamMemberItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicSalesTeamMemberItem) ? get_class($customerSearchRowBasicSalesTeamMemberItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicSalesTeamMemberItem), var_export($customerSearchRowBasicSalesTeamMemberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salesTeamMember 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 salesTeamMember value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $salesTeamMember
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setSalesTeamMember(array $salesTeamMember = array())
    {
        // validation for constraint: array
        if ('' !== ($salesTeamMemberArrayErrorMessage = self::validateSalesTeamMemberForArrayConstraintsFromSetSalesTeamMember($salesTeamMember))) {
            throw new \InvalidArgumentException($salesTeamMemberArrayErrorMessage, __LINE__);
        }
        $this->salesTeamMember = $salesTeamMember;
        return $this;
    }
    /**
     * Add item to salesTeamMember value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToSalesTeamMember(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The salesTeamMember 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->salesTeamMember[] = $item;
        return $this;
    }
    /**
     * Get salesTeamRole value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSalesTeamRole()
    {
        return $this->salesTeamRole;
    }
    /**
     * This method is responsible for validating the values passed to the setSalesTeamRole method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalesTeamRole method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalesTeamRoleForArrayConstraintsFromSetSalesTeamRole(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicSalesTeamRoleItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicSalesTeamRoleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicSalesTeamRoleItem) ? get_class($customerSearchRowBasicSalesTeamRoleItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicSalesTeamRoleItem), var_export($customerSearchRowBasicSalesTeamRoleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salesTeamRole 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 salesTeamRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $salesTeamRole
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setSalesTeamRole(array $salesTeamRole = array())
    {
        // validation for constraint: array
        if ('' !== ($salesTeamRoleArrayErrorMessage = self::validateSalesTeamRoleForArrayConstraintsFromSetSalesTeamRole($salesTeamRole))) {
            throw new \InvalidArgumentException($salesTeamRoleArrayErrorMessage, __LINE__);
        }
        $this->salesTeamRole = $salesTeamRole;
        return $this;
    }
    /**
     * Add item to salesTeamRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToSalesTeamRole(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The salesTeamRole 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->salesTeamRole[] = $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 $customerSearchRowBasicSalutationItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicSalutationItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicSalutationItem) ? get_class($customerSearchRowBasicSalutationItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicSalutationItem), var_export($customerSearchRowBasicSalutationItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 shipAddress value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipAddress()
    {
        return $this->shipAddress;
    }
    /**
     * This method is responsible for validating the values passed to the setShipAddress method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipAddress method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipAddressForArrayConstraintsFromSetShipAddress(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicShipAddressItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipAddressItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipAddressItem) ? get_class($customerSearchRowBasicShipAddressItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipAddressItem), var_export($customerSearchRowBasicShipAddressItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipAddress 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 shipAddress value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shipAddress
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setShipAddress(array $shipAddress = array())
    {
        // validation for constraint: array
        if ('' !== ($shipAddressArrayErrorMessage = self::validateShipAddressForArrayConstraintsFromSetShipAddress($shipAddress))) {
            throw new \InvalidArgumentException($shipAddressArrayErrorMessage, __LINE__);
        }
        $this->shipAddress = $shipAddress;
        return $this;
    }
    /**
     * Add item to shipAddress value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToShipAddress(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipAddress 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->shipAddress[] = $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 $customerSearchRowBasicShipAddress1Item) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipAddress1Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipAddress1Item) ? get_class($customerSearchRowBasicShipAddress1Item) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipAddress1Item), var_export($customerSearchRowBasicShipAddress1Item, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicShipAddress2Item) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipAddress2Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipAddress2Item) ? get_class($customerSearchRowBasicShipAddress2Item) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipAddress2Item), var_export($customerSearchRowBasicShipAddress2Item, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicShipAddress3Item) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipAddress3Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipAddress3Item) ? get_class($customerSearchRowBasicShipAddress3Item) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipAddress3Item), var_export($customerSearchRowBasicShipAddress3Item, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicShipAddresseeItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipAddresseeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipAddresseeItem) ? get_class($customerSearchRowBasicShipAddresseeItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipAddresseeItem), var_export($customerSearchRowBasicShipAddresseeItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicShipAttentionItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipAttentionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipAttentionItem) ? get_class($customerSearchRowBasicShipAttentionItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipAttentionItem), var_export($customerSearchRowBasicShipAttentionItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicShipCityItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipCityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipCityItem) ? get_class($customerSearchRowBasicShipCityItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipCityItem), var_export($customerSearchRowBasicShipCityItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 shipComplete value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getShipComplete()
    {
        return $this->shipComplete;
    }
    /**
     * This method is responsible for validating the values passed to the setShipComplete method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipComplete method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipCompleteForArrayConstraintsFromSetShipComplete(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicShipCompleteItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipCompleteItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipCompleteItem) ? get_class($customerSearchRowBasicShipCompleteItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipCompleteItem), var_export($customerSearchRowBasicShipCompleteItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipComplete 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 shipComplete value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $shipComplete
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setShipComplete(array $shipComplete = array())
    {
        // validation for constraint: array
        if ('' !== ($shipCompleteArrayErrorMessage = self::validateShipCompleteForArrayConstraintsFromSetShipComplete($shipComplete))) {
            throw new \InvalidArgumentException($shipCompleteArrayErrorMessage, __LINE__);
        }
        $this->shipComplete = $shipComplete;
        return $this;
    }
    /**
     * Add item to shipComplete value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToShipComplete(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The shipComplete 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->shipComplete[] = $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 $customerSearchRowBasicShipCountryItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipCountryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipCountryItem) ? get_class($customerSearchRowBasicShipCountryItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipCountryItem), var_export($customerSearchRowBasicShipCountryItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicShipCountryCodeItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipCountryCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipCountryCodeItem) ? get_class($customerSearchRowBasicShipCountryCodeItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipCountryCodeItem), var_export($customerSearchRowBasicShipCountryCodeItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicShipPhoneItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipPhoneItem) ? get_class($customerSearchRowBasicShipPhoneItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipPhoneItem), var_export($customerSearchRowBasicShipPhoneItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 shippingItem value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getShippingItem()
    {
        return $this->shippingItem;
    }
    /**
     * This method is responsible for validating the values passed to the setShippingItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShippingItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShippingItemForArrayConstraintsFromSetShippingItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicShippingItemItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShippingItemItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicShippingItemItem) ? get_class($customerSearchRowBasicShippingItemItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicShippingItemItem), var_export($customerSearchRowBasicShippingItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shippingItem 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 shippingItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $shippingItem
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setShippingItem(array $shippingItem = array())
    {
        // validation for constraint: array
        if ('' !== ($shippingItemArrayErrorMessage = self::validateShippingItemForArrayConstraintsFromSetShippingItem($shippingItem))) {
            throw new \InvalidArgumentException($shippingItemArrayErrorMessage, __LINE__);
        }
        $this->shippingItem = $shippingItem;
        return $this;
    }
    /**
     * Add item to shippingItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToShippingItem(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The shippingItem 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->shippingItem[] = $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 $customerSearchRowBasicShipStateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipStateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipStateItem) ? get_class($customerSearchRowBasicShipStateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipStateItem), var_export($customerSearchRowBasicShipStateItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicShipZipItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicShipZipItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicShipZipItem) ? get_class($customerSearchRowBasicShipZipItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicShipZipItem), var_export($customerSearchRowBasicShipZipItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 sourceSite value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSourceSite()
    {
        return $this->sourceSite;
    }
    /**
     * This method is responsible for validating the values passed to the setSourceSite method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSourceSite method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSourceSiteForArrayConstraintsFromSetSourceSite(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicSourceSiteItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicSourceSiteItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicSourceSiteItem) ? get_class($customerSearchRowBasicSourceSiteItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicSourceSiteItem), var_export($customerSearchRowBasicSourceSiteItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The sourceSite 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 sourceSite value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $sourceSite
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setSourceSite(array $sourceSite = array())
    {
        // validation for constraint: array
        if ('' !== ($sourceSiteArrayErrorMessage = self::validateSourceSiteForArrayConstraintsFromSetSourceSite($sourceSite))) {
            throw new \InvalidArgumentException($sourceSiteArrayErrorMessage, __LINE__);
        }
        $this->sourceSite = $sourceSite;
        return $this;
    }
    /**
     * Add item to sourceSite value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToSourceSite(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The sourceSite 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->sourceSite[] = $item;
        return $this;
    }
    /**
     * Get sourceSiteId value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getSourceSiteId()
    {
        return $this->sourceSiteId;
    }
    /**
     * This method is responsible for validating the values passed to the setSourceSiteId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSourceSiteId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSourceSiteIdForArrayConstraintsFromSetSourceSiteId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicSourceSiteIdItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicSourceSiteIdItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($customerSearchRowBasicSourceSiteIdItem) ? get_class($customerSearchRowBasicSourceSiteIdItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicSourceSiteIdItem), var_export($customerSearchRowBasicSourceSiteIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The sourceSiteId 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 sourceSiteId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $sourceSiteId
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setSourceSiteId(array $sourceSiteId = array())
    {
        // validation for constraint: array
        if ('' !== ($sourceSiteIdArrayErrorMessage = self::validateSourceSiteIdForArrayConstraintsFromSetSourceSiteId($sourceSiteId))) {
            throw new \InvalidArgumentException($sourceSiteIdArrayErrorMessage, __LINE__);
        }
        $this->sourceSiteId = $sourceSiteId;
        return $this;
    }
    /**
     * Add item to sourceSiteId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToSourceSiteId(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The sourceSiteId 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->sourceSiteId[] = $item;
        return $this;
    }
    /**
     * Get stage value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getStage()
    {
        return $this->stage;
    }
    /**
     * This method is responsible for validating the values passed to the setStage method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStage method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStageForArrayConstraintsFromSetStage(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicStageItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicStageItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicStageItem) ? get_class($customerSearchRowBasicStageItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicStageItem), var_export($customerSearchRowBasicStageItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The stage 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 stage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $stage
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setStage(array $stage = array())
    {
        // validation for constraint: array
        if ('' !== ($stageArrayErrorMessage = self::validateStageForArrayConstraintsFromSetStage($stage))) {
            throw new \InvalidArgumentException($stageArrayErrorMessage, __LINE__);
        }
        $this->stage = $stage;
        return $this;
    }
    /**
     * Add item to stage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToStage(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The stage 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->stage[] = $item;
        return $this;
    }
    /**
     * Get startDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getStartDate()
    {
        return $this->startDate;
    }
    /**
     * This method is responsible for validating the values passed to the setStartDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStartDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStartDateForArrayConstraintsFromSetStartDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicStartDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicStartDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicStartDateItem) ? get_class($customerSearchRowBasicStartDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicStartDateItem), var_export($customerSearchRowBasicStartDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The startDate 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 startDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $startDate
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setStartDate(array $startDate = array())
    {
        // validation for constraint: array
        if ('' !== ($startDateArrayErrorMessage = self::validateStartDateForArrayConstraintsFromSetStartDate($startDate))) {
            throw new \InvalidArgumentException($startDateArrayErrorMessage, __LINE__);
        }
        $this->startDate = $startDate;
        return $this;
    }
    /**
     * Add item to startDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToStartDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The startDate 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->startDate[] = $item;
        return $this;
    }
    /**
     * Get state value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getState()
    {
        return $this->state;
    }
    /**
     * This method is responsible for validating the values passed to the setState method
     * This method is willingly generated in order to preserve the one-line inline validation within the setState method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStateForArrayConstraintsFromSetState(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicStateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicStateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicStateItem) ? get_class($customerSearchRowBasicStateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicStateItem), var_export($customerSearchRowBasicStateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The state property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set state value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $state
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setState(array $state = array())
    {
        // validation for constraint: array
        if ('' !== ($stateArrayErrorMessage = self::validateStateForArrayConstraintsFromSetState($state))) {
            throw new \InvalidArgumentException($stateArrayErrorMessage, __LINE__);
        }
        $this->state = $state;
        return $this;
    }
    /**
     * Add item to state value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToState(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The state property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->state[] = $item;
        return $this;
    }
    /**
     * Get 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 $customerSearchRowBasicSubscriptionItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicSubscriptionItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicSubscriptionItem) ? get_class($customerSearchRowBasicSubscriptionItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicSubscriptionItem), var_export($customerSearchRowBasicSubscriptionItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicSubscriptionDateItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicSubscriptionDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($customerSearchRowBasicSubscriptionDateItem) ? get_class($customerSearchRowBasicSubscriptionDateItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicSubscriptionDateItem), var_export($customerSearchRowBasicSubscriptionDateItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicSubscriptionStatusItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicSubscriptionStatusItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicSubscriptionStatusItem) ? get_class($customerSearchRowBasicSubscriptionStatusItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicSubscriptionStatusItem), var_export($customerSearchRowBasicSubscriptionStatusItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 $customerSearchRowBasicSubsidiaryItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicSubsidiaryItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicSubsidiaryItem) ? get_class($customerSearchRowBasicSubsidiaryItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicSubsidiaryItem), var_export($customerSearchRowBasicSubsidiaryItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 taxable value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getTaxable()
    {
        return $this->taxable;
    }
    /**
     * This method is responsible for validating the values passed to the setTaxable method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTaxable method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTaxableForArrayConstraintsFromSetTaxable(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicTaxableItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicTaxableItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicTaxableItem) ? get_class($customerSearchRowBasicTaxableItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicTaxableItem), var_export($customerSearchRowBasicTaxableItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The taxable 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 taxable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $taxable
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setTaxable(array $taxable = array())
    {
        // validation for constraint: array
        if ('' !== ($taxableArrayErrorMessage = self::validateTaxableForArrayConstraintsFromSetTaxable($taxable))) {
            throw new \InvalidArgumentException($taxableArrayErrorMessage, __LINE__);
        }
        $this->taxable = $taxable;
        return $this;
    }
    /**
     * Add item to taxable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToTaxable(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The taxable 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->taxable[] = $item;
        return $this;
    }
    /**
     * Get taxItem value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getTaxItem()
    {
        return $this->taxItem;
    }
    /**
     * This method is responsible for validating the values passed to the setTaxItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTaxItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTaxItemForArrayConstraintsFromSetTaxItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicTaxItemItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicTaxItemItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicTaxItemItem) ? get_class($customerSearchRowBasicTaxItemItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicTaxItemItem), var_export($customerSearchRowBasicTaxItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The taxItem 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 taxItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $taxItem
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setTaxItem(array $taxItem = array())
    {
        // validation for constraint: array
        if ('' !== ($taxItemArrayErrorMessage = self::validateTaxItemForArrayConstraintsFromSetTaxItem($taxItem))) {
            throw new \InvalidArgumentException($taxItemArrayErrorMessage, __LINE__);
        }
        $this->taxItem = $taxItem;
        return $this;
    }
    /**
     * Add item to taxItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToTaxItem(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The taxItem 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->taxItem[] = $item;
        return $this;
    }
    /**
     * Get terms value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getTerms()
    {
        return $this->terms;
    }
    /**
     * This method is responsible for validating the values passed to the setTerms method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTerms method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTermsForArrayConstraintsFromSetTerms(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicTermsItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicTermsItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicTermsItem) ? get_class($customerSearchRowBasicTermsItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicTermsItem), var_export($customerSearchRowBasicTermsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The terms 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 terms value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $terms
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setTerms(array $terms = array())
    {
        // validation for constraint: array
        if ('' !== ($termsArrayErrorMessage = self::validateTermsForArrayConstraintsFromSetTerms($terms))) {
            throw new \InvalidArgumentException($termsArrayErrorMessage, __LINE__);
        }
        $this->terms = $terms;
        return $this;
    }
    /**
     * Add item to terms value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToTerms(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The terms 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->terms[] = $item;
        return $this;
    }
    /**
     * Get territory value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getTerritory()
    {
        return $this->territory;
    }
    /**
     * This method is responsible for validating the values passed to the setTerritory method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTerritory method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTerritoryForArrayConstraintsFromSetTerritory(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicTerritoryItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicTerritoryItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($customerSearchRowBasicTerritoryItem) ? get_class($customerSearchRowBasicTerritoryItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicTerritoryItem), var_export($customerSearchRowBasicTerritoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The territory 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 territory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $territory
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setTerritory(array $territory = array())
    {
        // validation for constraint: array
        if ('' !== ($territoryArrayErrorMessage = self::validateTerritoryForArrayConstraintsFromSetTerritory($territory))) {
            throw new \InvalidArgumentException($territoryArrayErrorMessage, __LINE__);
        }
        $this->territory = $territory;
        return $this;
    }
    /**
     * Add item to territory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToTerritory(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The territory 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->territory[] = $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 $customerSearchRowBasicTitleItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicTitleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicTitleItem) ? get_class($customerSearchRowBasicTitleItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicTitleItem), var_export($customerSearchRowBasicTitleItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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 unbilledOrders value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getUnbilledOrders()
    {
        return $this->unbilledOrders;
    }
    /**
     * This method is responsible for validating the values passed to the setUnbilledOrders method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUnbilledOrders method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUnbilledOrdersForArrayConstraintsFromSetUnbilledOrders(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicUnbilledOrdersItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicUnbilledOrdersItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($customerSearchRowBasicUnbilledOrdersItem) ? get_class($customerSearchRowBasicUnbilledOrdersItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicUnbilledOrdersItem), var_export($customerSearchRowBasicUnbilledOrdersItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The unbilledOrders 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 unbilledOrders value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $unbilledOrders
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setUnbilledOrders(array $unbilledOrders = array())
    {
        // validation for constraint: array
        if ('' !== ($unbilledOrdersArrayErrorMessage = self::validateUnbilledOrdersForArrayConstraintsFromSetUnbilledOrders($unbilledOrders))) {
            throw new \InvalidArgumentException($unbilledOrdersArrayErrorMessage, __LINE__);
        }
        $this->unbilledOrders = $unbilledOrders;
        return $this;
    }
    /**
     * Add item to unbilledOrders value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToUnbilledOrders(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The unbilledOrders 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->unbilledOrders[] = $item;
        return $this;
    }
    /**
     * Get url value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getUrl()
    {
        return $this->url;
    }
    /**
     * This method is responsible for validating the values passed to the setUrl method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUrl method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUrlForArrayConstraintsFromSetUrl(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicUrlItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicUrlItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicUrlItem) ? get_class($customerSearchRowBasicUrlItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicUrlItem), var_export($customerSearchRowBasicUrlItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The url property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set url value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $url
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setUrl(array $url = array())
    {
        // validation for constraint: array
        if ('' !== ($urlArrayErrorMessage = self::validateUrlForArrayConstraintsFromSetUrl($url))) {
            throw new \InvalidArgumentException($urlArrayErrorMessage, __LINE__);
        }
        $this->url = $url;
        return $this;
    }
    /**
     * Add item to url value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToUrl(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The url property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->url[] = $item;
        return $this;
    }
    /**
     * Get vatRegNumber value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getVatRegNumber()
    {
        return $this->vatRegNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setVatRegNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVatRegNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVatRegNumberForArrayConstraintsFromSetVatRegNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicVatRegNumberItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicVatRegNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicVatRegNumberItem) ? get_class($customerSearchRowBasicVatRegNumberItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicVatRegNumberItem), var_export($customerSearchRowBasicVatRegNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vatRegNumber 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 vatRegNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $vatRegNumber
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setVatRegNumber(array $vatRegNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($vatRegNumberArrayErrorMessage = self::validateVatRegNumberForArrayConstraintsFromSetVatRegNumber($vatRegNumber))) {
            throw new \InvalidArgumentException($vatRegNumberArrayErrorMessage, __LINE__);
        }
        $this->vatRegNumber = $vatRegNumber;
        return $this;
    }
    /**
     * Add item to vatRegNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToVatRegNumber(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The vatRegNumber 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->vatRegNumber[] = $item;
        return $this;
    }
    /**
     * Get webLead value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getWebLead()
    {
        return $this->webLead;
    }
    /**
     * This method is responsible for validating the values passed to the setWebLead method
     * This method is willingly generated in order to preserve the one-line inline validation within the setWebLead method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateWebLeadForArrayConstraintsFromSetWebLead(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $customerSearchRowBasicWebLeadItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicWebLeadItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($customerSearchRowBasicWebLeadItem) ? get_class($customerSearchRowBasicWebLeadItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicWebLeadItem), var_export($customerSearchRowBasicWebLeadItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The webLead 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 webLead value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $webLead
     * @return \StructType\CustomerSearchRowBasic
     */
    public function setWebLead(array $webLead = array())
    {
        // validation for constraint: array
        if ('' !== ($webLeadArrayErrorMessage = self::validateWebLeadForArrayConstraintsFromSetWebLead($webLead))) {
            throw new \InvalidArgumentException($webLeadArrayErrorMessage, __LINE__);
        }
        $this->webLead = $webLead;
        return $this;
    }
    /**
     * Add item to webLead value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CustomerSearchRowBasic
     */
    public function addToWebLead(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The webLead 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->webLead[] = $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 $customerSearchRowBasicZipCodeItem) {
            // validation for constraint: itemType
            if (!$customerSearchRowBasicZipCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($customerSearchRowBasicZipCodeItem) ? get_class($customerSearchRowBasicZipCodeItem) : sprintf('%s(%s)', gettype($customerSearchRowBasicZipCodeItem), var_export($customerSearchRowBasicZipCodeItem, 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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    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\CustomerSearchRowBasic
     */
    public function setCustomFieldList(\StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this->customFieldList = $customFieldList;
        return $this;
    }
}
