<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for JobSearchRowBasic StructType
 * @subpackage Structs
 */
class JobSearchRowBasic extends SearchRowBasic
{
    /**
     * The accountNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $accountNumber;
    /**
     * The actualTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $actualTime;
    /**
     * 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 allocatePayrollExpenses
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $allocatePayrollExpenses;
    /**
     * The allowAllResourcesForTasks
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $allowAllResourcesForTasks;
    /**
     * The allowExpenses
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $allowExpenses;
    /**
     * The allowTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $allowTime;
    /**
     * 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 attention
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $attention;
    /**
     * 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 billingRateCard
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $billingRateCard;
    /**
     * The billingSchedule
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $billingSchedule;
    /**
     * 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 calculatedEndDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $calculatedEndDate;
    /**
     * The calculatedEndDateBaseline
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $calculatedEndDateBaseline;
    /**
     * The category
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $category;
    /**
     * 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 contact
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $contact;
    /**
     * 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 customer
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $customer;
    /**
     * The dateCreated
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $dateCreated;
    /**
     * The defaultTaxReg
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $defaultTaxReg;
    /**
     * The email
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $email;
    /**
     * 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 estimatedCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedCost;
    /**
     * The estimatedGrossProfit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedGrossProfit;
    /**
     * The estimatedGrossProfitPercent
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedGrossProfitPercent;
    /**
     * The estimatedLaborCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedLaborCost;
    /**
     * The estimatedLaborCostBaseline
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedLaborCostBaseline;
    /**
     * The estimatedLaborRevenue
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedLaborRevenue;
    /**
     * The estimatedRevenue
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedRevenue;
    /**
     * The estimatedTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedTime;
    /**
     * The estimatedTimeOverride
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedTimeOverride;
    /**
     * The estimatedTimeOverrideBaseline
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedTimeOverrideBaseline;
    /**
     * 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 globalSubscriptionStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $globalSubscriptionStatus;
    /**
     * The image
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $image;
    /**
     * The includeCrmTasksInTotals
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $includeCrmTasksInTotals;
    /**
     * The internalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $internalId;
    /**
     * The isDefaultBilling
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isDefaultBilling;
    /**
     * The isDefaultShipping
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isDefaultShipping;
    /**
     * The isExemptTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isExemptTime;
    /**
     * The isInactive
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isInactive;
    /**
     * The isProductiveTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isProductiveTime;
    /**
     * The isUtilizedTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isUtilizedTime;
    /**
     * The jobBillingType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $jobBillingType;
    /**
     * The jobItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $jobItem;
    /**
     * The jobPrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $jobPrice;
    /**
     * The jobResource
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $jobResource;
    /**
     * The jobResourceRole
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $jobResourceRole;
    /**
     * The language
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $language;
    /**
     * The lastBaselineDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastBaselineDate;
    /**
     * The lastModifiedDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastModifiedDate;
    /**
     * The level
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $level;
    /**
     * The limitTimeToAssignees
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $limitTimeToAssignees;
    /**
     * The materializeTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $materializeTime;
    /**
     * The percentComplete
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $percentComplete;
    /**
     * The percentTimeComplete
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $percentTimeComplete;
    /**
     * 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 plannedWork
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $plannedWork;
    /**
     * The plannedWorkBaseline
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $plannedWorkBaseline;
    /**
     * The projectedEndDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $projectedEndDate;
    /**
     * The projectedEndDateBaseline
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $projectedEndDateBaseline;
    /**
     * The projectExpenseType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $projectExpenseType;
    /**
     * The projectManager
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $projectManager;
    /**
     * The revRecForecastRule
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $revRecForecastRule;
    /**
     * The shipAddress1
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipAddress1;
    /**
     * The shipAddress2
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipAddress2;
    /**
     * The shipAddress3
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipAddress3;
    /**
     * The shipAddressee
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipAddressee;
    /**
     * The shipAttention
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipAttention;
    /**
     * The shipCity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipCity;
    /**
     * The shipCountry
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $shipCountry;
    /**
     * The shipCountryCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipCountryCode;
    /**
     * The shipPhone
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipPhone;
    /**
     * The shipState
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipState;
    /**
     * The shipZip
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shipZip;
    /**
     * The sourceServiceItemFromRateCard
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $sourceServiceItemFromRateCard;
    /**
     * The startDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $startDate;
    /**
     * The startDateBaseline
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $startDateBaseline;
    /**
     * 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 timeApproval
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $timeApproval;
    /**
     * The timeRemaining
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $timeRemaining;
    /**
     * The usePercentCompleteOverride
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $usePercentCompleteOverride;
    /**
     * 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 JobSearchRowBasic
     * @uses JobSearchRowBasic::setAccountNumber()
     * @uses JobSearchRowBasic::setActualTime()
     * @uses JobSearchRowBasic::setAddress()
     * @uses JobSearchRowBasic::setAddress1()
     * @uses JobSearchRowBasic::setAddress2()
     * @uses JobSearchRowBasic::setAddress3()
     * @uses JobSearchRowBasic::setAddressee()
     * @uses JobSearchRowBasic::setAddressInternalId()
     * @uses JobSearchRowBasic::setAddressLabel()
     * @uses JobSearchRowBasic::setAddressPhone()
     * @uses JobSearchRowBasic::setAllocatePayrollExpenses()
     * @uses JobSearchRowBasic::setAllowAllResourcesForTasks()
     * @uses JobSearchRowBasic::setAllowExpenses()
     * @uses JobSearchRowBasic::setAllowTime()
     * @uses JobSearchRowBasic::setAltContact()
     * @uses JobSearchRowBasic::setAltEmail()
     * @uses JobSearchRowBasic::setAltName()
     * @uses JobSearchRowBasic::setAltPhone()
     * @uses JobSearchRowBasic::setAttention()
     * @uses JobSearchRowBasic::setBillAddress1()
     * @uses JobSearchRowBasic::setBillAddress2()
     * @uses JobSearchRowBasic::setBillAddress3()
     * @uses JobSearchRowBasic::setBillAddressee()
     * @uses JobSearchRowBasic::setBillAttention()
     * @uses JobSearchRowBasic::setBillCity()
     * @uses JobSearchRowBasic::setBillCountry()
     * @uses JobSearchRowBasic::setBillCountryCode()
     * @uses JobSearchRowBasic::setBillingRateCard()
     * @uses JobSearchRowBasic::setBillingSchedule()
     * @uses JobSearchRowBasic::setBillPhone()
     * @uses JobSearchRowBasic::setBillState()
     * @uses JobSearchRowBasic::setBillZipCode()
     * @uses JobSearchRowBasic::setCalculatedEndDate()
     * @uses JobSearchRowBasic::setCalculatedEndDateBaseline()
     * @uses JobSearchRowBasic::setCategory()
     * @uses JobSearchRowBasic::setCity()
     * @uses JobSearchRowBasic::setComments()
     * @uses JobSearchRowBasic::setCompanyName()
     * @uses JobSearchRowBasic::setContact()
     * @uses JobSearchRowBasic::setCountry()
     * @uses JobSearchRowBasic::setCountryCode()
     * @uses JobSearchRowBasic::setCustomer()
     * @uses JobSearchRowBasic::setDateCreated()
     * @uses JobSearchRowBasic::setDefaultTaxReg()
     * @uses JobSearchRowBasic::setEmail()
     * @uses JobSearchRowBasic::setEndDate()
     * @uses JobSearchRowBasic::setEntityId()
     * @uses JobSearchRowBasic::setEntityNumber()
     * @uses JobSearchRowBasic::setEntityStatus()
     * @uses JobSearchRowBasic::setEstimatedCost()
     * @uses JobSearchRowBasic::setEstimatedGrossProfit()
     * @uses JobSearchRowBasic::setEstimatedGrossProfitPercent()
     * @uses JobSearchRowBasic::setEstimatedLaborCost()
     * @uses JobSearchRowBasic::setEstimatedLaborCostBaseline()
     * @uses JobSearchRowBasic::setEstimatedLaborRevenue()
     * @uses JobSearchRowBasic::setEstimatedRevenue()
     * @uses JobSearchRowBasic::setEstimatedTime()
     * @uses JobSearchRowBasic::setEstimatedTimeOverride()
     * @uses JobSearchRowBasic::setEstimatedTimeOverrideBaseline()
     * @uses JobSearchRowBasic::setExternalId()
     * @uses JobSearchRowBasic::setFax()
     * @uses JobSearchRowBasic::setGlobalSubscriptionStatus()
     * @uses JobSearchRowBasic::setImage()
     * @uses JobSearchRowBasic::setIncludeCrmTasksInTotals()
     * @uses JobSearchRowBasic::setInternalId()
     * @uses JobSearchRowBasic::setIsDefaultBilling()
     * @uses JobSearchRowBasic::setIsDefaultShipping()
     * @uses JobSearchRowBasic::setIsExemptTime()
     * @uses JobSearchRowBasic::setIsInactive()
     * @uses JobSearchRowBasic::setIsProductiveTime()
     * @uses JobSearchRowBasic::setIsUtilizedTime()
     * @uses JobSearchRowBasic::setJobBillingType()
     * @uses JobSearchRowBasic::setJobItem()
     * @uses JobSearchRowBasic::setJobPrice()
     * @uses JobSearchRowBasic::setJobResource()
     * @uses JobSearchRowBasic::setJobResourceRole()
     * @uses JobSearchRowBasic::setLanguage()
     * @uses JobSearchRowBasic::setLastBaselineDate()
     * @uses JobSearchRowBasic::setLastModifiedDate()
     * @uses JobSearchRowBasic::setLevel()
     * @uses JobSearchRowBasic::setLimitTimeToAssignees()
     * @uses JobSearchRowBasic::setMaterializeTime()
     * @uses JobSearchRowBasic::setPercentComplete()
     * @uses JobSearchRowBasic::setPercentTimeComplete()
     * @uses JobSearchRowBasic::setPermission()
     * @uses JobSearchRowBasic::setPhone()
     * @uses JobSearchRowBasic::setPhoneticName()
     * @uses JobSearchRowBasic::setPlannedWork()
     * @uses JobSearchRowBasic::setPlannedWorkBaseline()
     * @uses JobSearchRowBasic::setProjectedEndDate()
     * @uses JobSearchRowBasic::setProjectedEndDateBaseline()
     * @uses JobSearchRowBasic::setProjectExpenseType()
     * @uses JobSearchRowBasic::setProjectManager()
     * @uses JobSearchRowBasic::setRevRecForecastRule()
     * @uses JobSearchRowBasic::setShipAddress1()
     * @uses JobSearchRowBasic::setShipAddress2()
     * @uses JobSearchRowBasic::setShipAddress3()
     * @uses JobSearchRowBasic::setShipAddressee()
     * @uses JobSearchRowBasic::setShipAttention()
     * @uses JobSearchRowBasic::setShipCity()
     * @uses JobSearchRowBasic::setShipCountry()
     * @uses JobSearchRowBasic::setShipCountryCode()
     * @uses JobSearchRowBasic::setShipPhone()
     * @uses JobSearchRowBasic::setShipState()
     * @uses JobSearchRowBasic::setShipZip()
     * @uses JobSearchRowBasic::setSourceServiceItemFromRateCard()
     * @uses JobSearchRowBasic::setStartDate()
     * @uses JobSearchRowBasic::setStartDateBaseline()
     * @uses JobSearchRowBasic::setState()
     * @uses JobSearchRowBasic::setSubscription()
     * @uses JobSearchRowBasic::setSubscriptionDate()
     * @uses JobSearchRowBasic::setSubscriptionStatus()
     * @uses JobSearchRowBasic::setSubsidiary()
     * @uses JobSearchRowBasic::setTimeApproval()
     * @uses JobSearchRowBasic::setTimeRemaining()
     * @uses JobSearchRowBasic::setUsePercentCompleteOverride()
     * @uses JobSearchRowBasic::setZipCode()
     * @uses JobSearchRowBasic::setCustomFieldList()
     * @param \StructType\SearchColumnStringField[] $accountNumber
     * @param \StructType\SearchColumnDoubleField[] $actualTime
     * @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\SearchColumnBooleanField[] $allocatePayrollExpenses
     * @param \StructType\SearchColumnBooleanField[] $allowAllResourcesForTasks
     * @param \StructType\SearchColumnBooleanField[] $allowExpenses
     * @param \StructType\SearchColumnBooleanField[] $allowTime
     * @param \StructType\SearchColumnStringField[] $altContact
     * @param \StructType\SearchColumnStringField[] $altEmail
     * @param \StructType\SearchColumnStringField[] $altName
     * @param \StructType\SearchColumnStringField[] $altPhone
     * @param \StructType\SearchColumnStringField[] $attention
     * @param \StructType\SearchColumnStringField[] $billAddress1
     * @param \StructType\SearchColumnStringField[] $billAddress2
     * @param \StructType\SearchColumnStringField[] $billAddress3
     * @param \StructType\SearchColumnStringField[] $billAddressee
     * @param \StructType\SearchColumnStringField[] $billAttention
     * @param \StructType\SearchColumnStringField[] $billCity
     * @param \StructType\SearchColumnEnumSelectField[] $billCountry
     * @param \StructType\SearchColumnStringField[] $billCountryCode
     * @param \StructType\SearchColumnSelectField[] $billingRateCard
     * @param \StructType\SearchColumnSelectField[] $billingSchedule
     * @param \StructType\SearchColumnStringField[] $billPhone
     * @param \StructType\SearchColumnStringField[] $billState
     * @param \StructType\SearchColumnStringField[] $billZipCode
     * @param \StructType\SearchColumnDateField[] $calculatedEndDate
     * @param \StructType\SearchColumnDateField[] $calculatedEndDateBaseline
     * @param \StructType\SearchColumnSelectField[] $category
     * @param \StructType\SearchColumnStringField[] $city
     * @param \StructType\SearchColumnStringField[] $comments
     * @param \StructType\SearchColumnStringField[] $companyName
     * @param \StructType\SearchColumnStringField[] $contact
     * @param \StructType\SearchColumnEnumSelectField[] $country
     * @param \StructType\SearchColumnStringField[] $countryCode
     * @param \StructType\SearchColumnSelectField[] $customer
     * @param \StructType\SearchColumnDateField[] $dateCreated
     * @param \StructType\SearchColumnStringField[] $defaultTaxReg
     * @param \StructType\SearchColumnStringField[] $email
     * @param \StructType\SearchColumnDateField[] $endDate
     * @param \StructType\SearchColumnStringField[] $entityId
     * @param \StructType\SearchColumnLongField[] $entityNumber
     * @param \StructType\SearchColumnSelectField[] $entityStatus
     * @param \StructType\SearchColumnDoubleField[] $estimatedCost
     * @param \StructType\SearchColumnDoubleField[] $estimatedGrossProfit
     * @param \StructType\SearchColumnDoubleField[] $estimatedGrossProfitPercent
     * @param \StructType\SearchColumnDoubleField[] $estimatedLaborCost
     * @param \StructType\SearchColumnDoubleField[] $estimatedLaborCostBaseline
     * @param \StructType\SearchColumnDoubleField[] $estimatedLaborRevenue
     * @param \StructType\SearchColumnDoubleField[] $estimatedRevenue
     * @param \StructType\SearchColumnDoubleField[] $estimatedTime
     * @param \StructType\SearchColumnDoubleField[] $estimatedTimeOverride
     * @param \StructType\SearchColumnDoubleField[] $estimatedTimeOverrideBaseline
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @param \StructType\SearchColumnStringField[] $fax
     * @param \StructType\SearchColumnEnumSelectField[] $globalSubscriptionStatus
     * @param \StructType\SearchColumnSelectField[] $image
     * @param \StructType\SearchColumnBooleanField[] $includeCrmTasksInTotals
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @param \StructType\SearchColumnBooleanField[] $isDefaultBilling
     * @param \StructType\SearchColumnBooleanField[] $isDefaultShipping
     * @param \StructType\SearchColumnBooleanField[] $isExemptTime
     * @param \StructType\SearchColumnBooleanField[] $isInactive
     * @param \StructType\SearchColumnBooleanField[] $isProductiveTime
     * @param \StructType\SearchColumnBooleanField[] $isUtilizedTime
     * @param \StructType\SearchColumnEnumSelectField[] $jobBillingType
     * @param \StructType\SearchColumnSelectField[] $jobItem
     * @param \StructType\SearchColumnDoubleField[] $jobPrice
     * @param \StructType\SearchColumnSelectField[] $jobResource
     * @param \StructType\SearchColumnSelectField[] $jobResourceRole
     * @param \StructType\SearchColumnEnumSelectField[] $language
     * @param \StructType\SearchColumnDateField[] $lastBaselineDate
     * @param \StructType\SearchColumnDateField[] $lastModifiedDate
     * @param \StructType\SearchColumnEnumSelectField[] $level
     * @param \StructType\SearchColumnBooleanField[] $limitTimeToAssignees
     * @param \StructType\SearchColumnBooleanField[] $materializeTime
     * @param \StructType\SearchColumnDoubleField[] $percentComplete
     * @param \StructType\SearchColumnDoubleField[] $percentTimeComplete
     * @param \StructType\SearchColumnEnumSelectField[] $permission
     * @param \StructType\SearchColumnStringField[] $phone
     * @param \StructType\SearchColumnStringField[] $phoneticName
     * @param \StructType\SearchColumnDoubleField[] $plannedWork
     * @param \StructType\SearchColumnDoubleField[] $plannedWorkBaseline
     * @param \StructType\SearchColumnDateField[] $projectedEndDate
     * @param \StructType\SearchColumnDateField[] $projectedEndDateBaseline
     * @param \StructType\SearchColumnSelectField[] $projectExpenseType
     * @param \StructType\SearchColumnSelectField[] $projectManager
     * @param \StructType\SearchColumnSelectField[] $revRecForecastRule
     * @param \StructType\SearchColumnStringField[] $shipAddress1
     * @param \StructType\SearchColumnStringField[] $shipAddress2
     * @param \StructType\SearchColumnStringField[] $shipAddress3
     * @param \StructType\SearchColumnStringField[] $shipAddressee
     * @param \StructType\SearchColumnStringField[] $shipAttention
     * @param \StructType\SearchColumnStringField[] $shipCity
     * @param \StructType\SearchColumnEnumSelectField[] $shipCountry
     * @param \StructType\SearchColumnStringField[] $shipCountryCode
     * @param \StructType\SearchColumnStringField[] $shipPhone
     * @param \StructType\SearchColumnStringField[] $shipState
     * @param \StructType\SearchColumnStringField[] $shipZip
     * @param \StructType\SearchColumnBooleanField[] $sourceServiceItemFromRateCard
     * @param \StructType\SearchColumnDateField[] $startDate
     * @param \StructType\SearchColumnDateField[] $startDateBaseline
     * @param \StructType\SearchColumnStringField[] $state
     * @param \StructType\SearchColumnSelectField[] $subscription
     * @param \StructType\SearchColumnDateField[] $subscriptionDate
     * @param \StructType\SearchColumnBooleanField[] $subscriptionStatus
     * @param \StructType\SearchColumnSelectField[] $subsidiary
     * @param \StructType\SearchColumnSelectField[] $timeApproval
     * @param \StructType\SearchColumnDoubleField[] $timeRemaining
     * @param \StructType\SearchColumnBooleanField[] $usePercentCompleteOverride
     * @param \StructType\SearchColumnStringField[] $zipCode
     * @param \StructType\SearchColumnCustomFieldList $customFieldList
     */
    public function __construct(array $accountNumber = array(), array $actualTime = 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 $allocatePayrollExpenses = array(), array $allowAllResourcesForTasks = array(), array $allowExpenses = array(), array $allowTime = array(), array $altContact = array(), array $altEmail = array(), array $altName = array(), array $altPhone = array(), array $attention = 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 $billingRateCard = array(), array $billingSchedule = array(), array $billPhone = array(), array $billState = array(), array $billZipCode = array(), array $calculatedEndDate = array(), array $calculatedEndDateBaseline = array(), array $category = array(), array $city = array(), array $comments = array(), array $companyName = array(), array $contact = array(), array $country = array(), array $countryCode = array(), array $customer = array(), array $dateCreated = array(), array $defaultTaxReg = array(), array $email = array(), array $endDate = array(), array $entityId = array(), array $entityNumber = array(), array $entityStatus = array(), array $estimatedCost = array(), array $estimatedGrossProfit = array(), array $estimatedGrossProfitPercent = array(), array $estimatedLaborCost = array(), array $estimatedLaborCostBaseline = array(), array $estimatedLaborRevenue = array(), array $estimatedRevenue = array(), array $estimatedTime = array(), array $estimatedTimeOverride = array(), array $estimatedTimeOverrideBaseline = array(), array $externalId = array(), array $fax = array(), array $globalSubscriptionStatus = array(), array $image = array(), array $includeCrmTasksInTotals = array(), array $internalId = array(), array $isDefaultBilling = array(), array $isDefaultShipping = array(), array $isExemptTime = array(), array $isInactive = array(), array $isProductiveTime = array(), array $isUtilizedTime = array(), array $jobBillingType = array(), array $jobItem = array(), array $jobPrice = array(), array $jobResource = array(), array $jobResourceRole = array(), array $language = array(), array $lastBaselineDate = array(), array $lastModifiedDate = array(), array $level = array(), array $limitTimeToAssignees = array(), array $materializeTime = array(), array $percentComplete = array(), array $percentTimeComplete = array(), array $permission = array(), array $phone = array(), array $phoneticName = array(), array $plannedWork = array(), array $plannedWorkBaseline = array(), array $projectedEndDate = array(), array $projectedEndDateBaseline = array(), array $projectExpenseType = array(), array $projectManager = array(), array $revRecForecastRule = array(), array $shipAddress1 = array(), array $shipAddress2 = array(), array $shipAddress3 = array(), array $shipAddressee = array(), array $shipAttention = array(), array $shipCity = array(), array $shipCountry = array(), array $shipCountryCode = array(), array $shipPhone = array(), array $shipState = array(), array $shipZip = array(), array $sourceServiceItemFromRateCard = array(), array $startDate = array(), array $startDateBaseline = array(), array $state = array(), array $subscription = array(), array $subscriptionDate = array(), array $subscriptionStatus = array(), array $subsidiary = array(), array $timeApproval = array(), array $timeRemaining = array(), array $usePercentCompleteOverride = array(), array $zipCode = array(), \StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this
            ->setAccountNumber($accountNumber)
            ->setActualTime($actualTime)
            ->setAddress($address)
            ->setAddress1($address1)
            ->setAddress2($address2)
            ->setAddress3($address3)
            ->setAddressee($addressee)
            ->setAddressInternalId($addressInternalId)
            ->setAddressLabel($addressLabel)
            ->setAddressPhone($addressPhone)
            ->setAllocatePayrollExpenses($allocatePayrollExpenses)
            ->setAllowAllResourcesForTasks($allowAllResourcesForTasks)
            ->setAllowExpenses($allowExpenses)
            ->setAllowTime($allowTime)
            ->setAltContact($altContact)
            ->setAltEmail($altEmail)
            ->setAltName($altName)
            ->setAltPhone($altPhone)
            ->setAttention($attention)
            ->setBillAddress1($billAddress1)
            ->setBillAddress2($billAddress2)
            ->setBillAddress3($billAddress3)
            ->setBillAddressee($billAddressee)
            ->setBillAttention($billAttention)
            ->setBillCity($billCity)
            ->setBillCountry($billCountry)
            ->setBillCountryCode($billCountryCode)
            ->setBillingRateCard($billingRateCard)
            ->setBillingSchedule($billingSchedule)
            ->setBillPhone($billPhone)
            ->setBillState($billState)
            ->setBillZipCode($billZipCode)
            ->setCalculatedEndDate($calculatedEndDate)
            ->setCalculatedEndDateBaseline($calculatedEndDateBaseline)
            ->setCategory($category)
            ->setCity($city)
            ->setComments($comments)
            ->setCompanyName($companyName)
            ->setContact($contact)
            ->setCountry($country)
            ->setCountryCode($countryCode)
            ->setCustomer($customer)
            ->setDateCreated($dateCreated)
            ->setDefaultTaxReg($defaultTaxReg)
            ->setEmail($email)
            ->setEndDate($endDate)
            ->setEntityId($entityId)
            ->setEntityNumber($entityNumber)
            ->setEntityStatus($entityStatus)
            ->setEstimatedCost($estimatedCost)
            ->setEstimatedGrossProfit($estimatedGrossProfit)
            ->setEstimatedGrossProfitPercent($estimatedGrossProfitPercent)
            ->setEstimatedLaborCost($estimatedLaborCost)
            ->setEstimatedLaborCostBaseline($estimatedLaborCostBaseline)
            ->setEstimatedLaborRevenue($estimatedLaborRevenue)
            ->setEstimatedRevenue($estimatedRevenue)
            ->setEstimatedTime($estimatedTime)
            ->setEstimatedTimeOverride($estimatedTimeOverride)
            ->setEstimatedTimeOverrideBaseline($estimatedTimeOverrideBaseline)
            ->setExternalId($externalId)
            ->setFax($fax)
            ->setGlobalSubscriptionStatus($globalSubscriptionStatus)
            ->setImage($image)
            ->setIncludeCrmTasksInTotals($includeCrmTasksInTotals)
            ->setInternalId($internalId)
            ->setIsDefaultBilling($isDefaultBilling)
            ->setIsDefaultShipping($isDefaultShipping)
            ->setIsExemptTime($isExemptTime)
            ->setIsInactive($isInactive)
            ->setIsProductiveTime($isProductiveTime)
            ->setIsUtilizedTime($isUtilizedTime)
            ->setJobBillingType($jobBillingType)
            ->setJobItem($jobItem)
            ->setJobPrice($jobPrice)
            ->setJobResource($jobResource)
            ->setJobResourceRole($jobResourceRole)
            ->setLanguage($language)
            ->setLastBaselineDate($lastBaselineDate)
            ->setLastModifiedDate($lastModifiedDate)
            ->setLevel($level)
            ->setLimitTimeToAssignees($limitTimeToAssignees)
            ->setMaterializeTime($materializeTime)
            ->setPercentComplete($percentComplete)
            ->setPercentTimeComplete($percentTimeComplete)
            ->setPermission($permission)
            ->setPhone($phone)
            ->setPhoneticName($phoneticName)
            ->setPlannedWork($plannedWork)
            ->setPlannedWorkBaseline($plannedWorkBaseline)
            ->setProjectedEndDate($projectedEndDate)
            ->setProjectedEndDateBaseline($projectedEndDateBaseline)
            ->setProjectExpenseType($projectExpenseType)
            ->setProjectManager($projectManager)
            ->setRevRecForecastRule($revRecForecastRule)
            ->setShipAddress1($shipAddress1)
            ->setShipAddress2($shipAddress2)
            ->setShipAddress3($shipAddress3)
            ->setShipAddressee($shipAddressee)
            ->setShipAttention($shipAttention)
            ->setShipCity($shipCity)
            ->setShipCountry($shipCountry)
            ->setShipCountryCode($shipCountryCode)
            ->setShipPhone($shipPhone)
            ->setShipState($shipState)
            ->setShipZip($shipZip)
            ->setSourceServiceItemFromRateCard($sourceServiceItemFromRateCard)
            ->setStartDate($startDate)
            ->setStartDateBaseline($startDateBaseline)
            ->setState($state)
            ->setSubscription($subscription)
            ->setSubscriptionDate($subscriptionDate)
            ->setSubscriptionStatus($subscriptionStatus)
            ->setSubsidiary($subsidiary)
            ->setTimeApproval($timeApproval)
            ->setTimeRemaining($timeRemaining)
            ->setUsePercentCompleteOverride($usePercentCompleteOverride)
            ->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 $jobSearchRowBasicAccountNumberItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAccountNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAccountNumberItem) ? get_class($jobSearchRowBasicAccountNumberItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAccountNumberItem), var_export($jobSearchRowBasicAccountNumberItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 actualTime value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getActualTime()
    {
        return $this->actualTime;
    }
    /**
     * This method is responsible for validating the values passed to the setActualTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setActualTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateActualTimeForArrayConstraintsFromSetActualTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicActualTimeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicActualTimeItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicActualTimeItem) ? get_class($jobSearchRowBasicActualTimeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicActualTimeItem), var_export($jobSearchRowBasicActualTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The actualTime 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 actualTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $actualTime
     * @return \StructType\JobSearchRowBasic
     */
    public function setActualTime(array $actualTime = array())
    {
        // validation for constraint: array
        if ('' !== ($actualTimeArrayErrorMessage = self::validateActualTimeForArrayConstraintsFromSetActualTime($actualTime))) {
            throw new \InvalidArgumentException($actualTimeArrayErrorMessage, __LINE__);
        }
        $this->actualTime = $actualTime;
        return $this;
    }
    /**
     * Add item to actualTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToActualTime(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The actualTime 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->actualTime[] = $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 $jobSearchRowBasicAddressItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAddressItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAddressItem) ? get_class($jobSearchRowBasicAddressItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAddressItem), var_export($jobSearchRowBasicAddressItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicAddress1Item) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAddress1Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAddress1Item) ? get_class($jobSearchRowBasicAddress1Item) : sprintf('%s(%s)', gettype($jobSearchRowBasicAddress1Item), var_export($jobSearchRowBasicAddress1Item, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicAddress2Item) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAddress2Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAddress2Item) ? get_class($jobSearchRowBasicAddress2Item) : sprintf('%s(%s)', gettype($jobSearchRowBasicAddress2Item), var_export($jobSearchRowBasicAddress2Item, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicAddress3Item) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAddress3Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAddress3Item) ? get_class($jobSearchRowBasicAddress3Item) : sprintf('%s(%s)', gettype($jobSearchRowBasicAddress3Item), var_export($jobSearchRowBasicAddress3Item, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicAddresseeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAddresseeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAddresseeItem) ? get_class($jobSearchRowBasicAddresseeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAddresseeItem), var_export($jobSearchRowBasicAddresseeItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicAddressInternalIdItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAddressInternalIdItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAddressInternalIdItem) ? get_class($jobSearchRowBasicAddressInternalIdItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAddressInternalIdItem), var_export($jobSearchRowBasicAddressInternalIdItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicAddressLabelItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAddressLabelItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAddressLabelItem) ? get_class($jobSearchRowBasicAddressLabelItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAddressLabelItem), var_export($jobSearchRowBasicAddressLabelItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicAddressPhoneItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAddressPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAddressPhoneItem) ? get_class($jobSearchRowBasicAddressPhoneItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAddressPhoneItem), var_export($jobSearchRowBasicAddressPhoneItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 allocatePayrollExpenses value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getAllocatePayrollExpenses()
    {
        return $this->allocatePayrollExpenses;
    }
    /**
     * This method is responsible for validating the values passed to the setAllocatePayrollExpenses method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAllocatePayrollExpenses method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAllocatePayrollExpensesForArrayConstraintsFromSetAllocatePayrollExpenses(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicAllocatePayrollExpensesItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAllocatePayrollExpensesItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicAllocatePayrollExpensesItem) ? get_class($jobSearchRowBasicAllocatePayrollExpensesItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAllocatePayrollExpensesItem), var_export($jobSearchRowBasicAllocatePayrollExpensesItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The allocatePayrollExpenses 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 allocatePayrollExpenses value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $allocatePayrollExpenses
     * @return \StructType\JobSearchRowBasic
     */
    public function setAllocatePayrollExpenses(array $allocatePayrollExpenses = array())
    {
        // validation for constraint: array
        if ('' !== ($allocatePayrollExpensesArrayErrorMessage = self::validateAllocatePayrollExpensesForArrayConstraintsFromSetAllocatePayrollExpenses($allocatePayrollExpenses))) {
            throw new \InvalidArgumentException($allocatePayrollExpensesArrayErrorMessage, __LINE__);
        }
        $this->allocatePayrollExpenses = $allocatePayrollExpenses;
        return $this;
    }
    /**
     * Add item to allocatePayrollExpenses value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToAllocatePayrollExpenses(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The allocatePayrollExpenses 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->allocatePayrollExpenses[] = $item;
        return $this;
    }
    /**
     * Get allowAllResourcesForTasks value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getAllowAllResourcesForTasks()
    {
        return $this->allowAllResourcesForTasks;
    }
    /**
     * This method is responsible for validating the values passed to the setAllowAllResourcesForTasks method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAllowAllResourcesForTasks method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAllowAllResourcesForTasksForArrayConstraintsFromSetAllowAllResourcesForTasks(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicAllowAllResourcesForTasksItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAllowAllResourcesForTasksItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicAllowAllResourcesForTasksItem) ? get_class($jobSearchRowBasicAllowAllResourcesForTasksItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAllowAllResourcesForTasksItem), var_export($jobSearchRowBasicAllowAllResourcesForTasksItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The allowAllResourcesForTasks 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 allowAllResourcesForTasks value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $allowAllResourcesForTasks
     * @return \StructType\JobSearchRowBasic
     */
    public function setAllowAllResourcesForTasks(array $allowAllResourcesForTasks = array())
    {
        // validation for constraint: array
        if ('' !== ($allowAllResourcesForTasksArrayErrorMessage = self::validateAllowAllResourcesForTasksForArrayConstraintsFromSetAllowAllResourcesForTasks($allowAllResourcesForTasks))) {
            throw new \InvalidArgumentException($allowAllResourcesForTasksArrayErrorMessage, __LINE__);
        }
        $this->allowAllResourcesForTasks = $allowAllResourcesForTasks;
        return $this;
    }
    /**
     * Add item to allowAllResourcesForTasks value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToAllowAllResourcesForTasks(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The allowAllResourcesForTasks 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->allowAllResourcesForTasks[] = $item;
        return $this;
    }
    /**
     * Get allowExpenses value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getAllowExpenses()
    {
        return $this->allowExpenses;
    }
    /**
     * This method is responsible for validating the values passed to the setAllowExpenses method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAllowExpenses method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAllowExpensesForArrayConstraintsFromSetAllowExpenses(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicAllowExpensesItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAllowExpensesItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicAllowExpensesItem) ? get_class($jobSearchRowBasicAllowExpensesItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAllowExpensesItem), var_export($jobSearchRowBasicAllowExpensesItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The allowExpenses 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 allowExpenses value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $allowExpenses
     * @return \StructType\JobSearchRowBasic
     */
    public function setAllowExpenses(array $allowExpenses = array())
    {
        // validation for constraint: array
        if ('' !== ($allowExpensesArrayErrorMessage = self::validateAllowExpensesForArrayConstraintsFromSetAllowExpenses($allowExpenses))) {
            throw new \InvalidArgumentException($allowExpensesArrayErrorMessage, __LINE__);
        }
        $this->allowExpenses = $allowExpenses;
        return $this;
    }
    /**
     * Add item to allowExpenses value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToAllowExpenses(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The allowExpenses 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->allowExpenses[] = $item;
        return $this;
    }
    /**
     * Get allowTime value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getAllowTime()
    {
        return $this->allowTime;
    }
    /**
     * This method is responsible for validating the values passed to the setAllowTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAllowTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAllowTimeForArrayConstraintsFromSetAllowTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicAllowTimeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAllowTimeItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicAllowTimeItem) ? get_class($jobSearchRowBasicAllowTimeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAllowTimeItem), var_export($jobSearchRowBasicAllowTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The allowTime 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 allowTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $allowTime
     * @return \StructType\JobSearchRowBasic
     */
    public function setAllowTime(array $allowTime = array())
    {
        // validation for constraint: array
        if ('' !== ($allowTimeArrayErrorMessage = self::validateAllowTimeForArrayConstraintsFromSetAllowTime($allowTime))) {
            throw new \InvalidArgumentException($allowTimeArrayErrorMessage, __LINE__);
        }
        $this->allowTime = $allowTime;
        return $this;
    }
    /**
     * Add item to allowTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToAllowTime(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The allowTime 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->allowTime[] = $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 $jobSearchRowBasicAltContactItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAltContactItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAltContactItem) ? get_class($jobSearchRowBasicAltContactItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAltContactItem), var_export($jobSearchRowBasicAltContactItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicAltEmailItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAltEmailItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAltEmailItem) ? get_class($jobSearchRowBasicAltEmailItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAltEmailItem), var_export($jobSearchRowBasicAltEmailItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicAltNameItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAltNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAltNameItem) ? get_class($jobSearchRowBasicAltNameItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAltNameItem), var_export($jobSearchRowBasicAltNameItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicAltPhoneItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAltPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAltPhoneItem) ? get_class($jobSearchRowBasicAltPhoneItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAltPhoneItem), var_export($jobSearchRowBasicAltPhoneItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 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 $jobSearchRowBasicAttentionItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicAttentionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicAttentionItem) ? get_class($jobSearchRowBasicAttentionItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicAttentionItem), var_export($jobSearchRowBasicAttentionItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 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 $jobSearchRowBasicBillAddress1Item) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillAddress1Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillAddress1Item) ? get_class($jobSearchRowBasicBillAddress1Item) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillAddress1Item), var_export($jobSearchRowBasicBillAddress1Item, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicBillAddress2Item) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillAddress2Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillAddress2Item) ? get_class($jobSearchRowBasicBillAddress2Item) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillAddress2Item), var_export($jobSearchRowBasicBillAddress2Item, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicBillAddress3Item) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillAddress3Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillAddress3Item) ? get_class($jobSearchRowBasicBillAddress3Item) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillAddress3Item), var_export($jobSearchRowBasicBillAddress3Item, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicBillAddresseeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillAddresseeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillAddresseeItem) ? get_class($jobSearchRowBasicBillAddresseeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillAddresseeItem), var_export($jobSearchRowBasicBillAddresseeItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicBillAttentionItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillAttentionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillAttentionItem) ? get_class($jobSearchRowBasicBillAttentionItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillAttentionItem), var_export($jobSearchRowBasicBillAttentionItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicBillCityItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillCityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillCityItem) ? get_class($jobSearchRowBasicBillCityItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillCityItem), var_export($jobSearchRowBasicBillCityItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicBillCountryItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillCountryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillCountryItem) ? get_class($jobSearchRowBasicBillCountryItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillCountryItem), var_export($jobSearchRowBasicBillCountryItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicBillCountryCodeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillCountryCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillCountryCodeItem) ? get_class($jobSearchRowBasicBillCountryCodeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillCountryCodeItem), var_export($jobSearchRowBasicBillCountryCodeItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 billingRateCard value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getBillingRateCard()
    {
        return $this->billingRateCard;
    }
    /**
     * This method is responsible for validating the values passed to the setBillingRateCard method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillingRateCard method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillingRateCardForArrayConstraintsFromSetBillingRateCard(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicBillingRateCardItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillingRateCardItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillingRateCardItem) ? get_class($jobSearchRowBasicBillingRateCardItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillingRateCardItem), var_export($jobSearchRowBasicBillingRateCardItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billingRateCard 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 billingRateCard value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $billingRateCard
     * @return \StructType\JobSearchRowBasic
     */
    public function setBillingRateCard(array $billingRateCard = array())
    {
        // validation for constraint: array
        if ('' !== ($billingRateCardArrayErrorMessage = self::validateBillingRateCardForArrayConstraintsFromSetBillingRateCard($billingRateCard))) {
            throw new \InvalidArgumentException($billingRateCardArrayErrorMessage, __LINE__);
        }
        $this->billingRateCard = $billingRateCard;
        return $this;
    }
    /**
     * Add item to billingRateCard value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToBillingRateCard(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The billingRateCard 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->billingRateCard[] = $item;
        return $this;
    }
    /**
     * Get billingSchedule value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getBillingSchedule()
    {
        return $this->billingSchedule;
    }
    /**
     * This method is responsible for validating the values passed to the setBillingSchedule method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillingSchedule method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillingScheduleForArrayConstraintsFromSetBillingSchedule(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicBillingScheduleItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillingScheduleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillingScheduleItem) ? get_class($jobSearchRowBasicBillingScheduleItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillingScheduleItem), var_export($jobSearchRowBasicBillingScheduleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billingSchedule 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 billingSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $billingSchedule
     * @return \StructType\JobSearchRowBasic
     */
    public function setBillingSchedule(array $billingSchedule = array())
    {
        // validation for constraint: array
        if ('' !== ($billingScheduleArrayErrorMessage = self::validateBillingScheduleForArrayConstraintsFromSetBillingSchedule($billingSchedule))) {
            throw new \InvalidArgumentException($billingScheduleArrayErrorMessage, __LINE__);
        }
        $this->billingSchedule = $billingSchedule;
        return $this;
    }
    /**
     * Add item to billingSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToBillingSchedule(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The billingSchedule 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->billingSchedule[] = $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 $jobSearchRowBasicBillPhoneItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillPhoneItem) ? get_class($jobSearchRowBasicBillPhoneItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillPhoneItem), var_export($jobSearchRowBasicBillPhoneItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicBillStateItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillStateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillStateItem) ? get_class($jobSearchRowBasicBillStateItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillStateItem), var_export($jobSearchRowBasicBillStateItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicBillZipCodeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicBillZipCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicBillZipCodeItem) ? get_class($jobSearchRowBasicBillZipCodeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicBillZipCodeItem), var_export($jobSearchRowBasicBillZipCodeItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 calculatedEndDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getCalculatedEndDate()
    {
        return $this->calculatedEndDate;
    }
    /**
     * This method is responsible for validating the values passed to the setCalculatedEndDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCalculatedEndDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCalculatedEndDateForArrayConstraintsFromSetCalculatedEndDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicCalculatedEndDateItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicCalculatedEndDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($jobSearchRowBasicCalculatedEndDateItem) ? get_class($jobSearchRowBasicCalculatedEndDateItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicCalculatedEndDateItem), var_export($jobSearchRowBasicCalculatedEndDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The calculatedEndDate 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 calculatedEndDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $calculatedEndDate
     * @return \StructType\JobSearchRowBasic
     */
    public function setCalculatedEndDate(array $calculatedEndDate = array())
    {
        // validation for constraint: array
        if ('' !== ($calculatedEndDateArrayErrorMessage = self::validateCalculatedEndDateForArrayConstraintsFromSetCalculatedEndDate($calculatedEndDate))) {
            throw new \InvalidArgumentException($calculatedEndDateArrayErrorMessage, __LINE__);
        }
        $this->calculatedEndDate = $calculatedEndDate;
        return $this;
    }
    /**
     * Add item to calculatedEndDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToCalculatedEndDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The calculatedEndDate 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->calculatedEndDate[] = $item;
        return $this;
    }
    /**
     * Get calculatedEndDateBaseline value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getCalculatedEndDateBaseline()
    {
        return $this->calculatedEndDateBaseline;
    }
    /**
     * This method is responsible for validating the values passed to the setCalculatedEndDateBaseline method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCalculatedEndDateBaseline method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCalculatedEndDateBaselineForArrayConstraintsFromSetCalculatedEndDateBaseline(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicCalculatedEndDateBaselineItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicCalculatedEndDateBaselineItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($jobSearchRowBasicCalculatedEndDateBaselineItem) ? get_class($jobSearchRowBasicCalculatedEndDateBaselineItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicCalculatedEndDateBaselineItem), var_export($jobSearchRowBasicCalculatedEndDateBaselineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The calculatedEndDateBaseline 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 calculatedEndDateBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $calculatedEndDateBaseline
     * @return \StructType\JobSearchRowBasic
     */
    public function setCalculatedEndDateBaseline(array $calculatedEndDateBaseline = array())
    {
        // validation for constraint: array
        if ('' !== ($calculatedEndDateBaselineArrayErrorMessage = self::validateCalculatedEndDateBaselineForArrayConstraintsFromSetCalculatedEndDateBaseline($calculatedEndDateBaseline))) {
            throw new \InvalidArgumentException($calculatedEndDateBaselineArrayErrorMessage, __LINE__);
        }
        $this->calculatedEndDateBaseline = $calculatedEndDateBaseline;
        return $this;
    }
    /**
     * Add item to calculatedEndDateBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToCalculatedEndDateBaseline(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The calculatedEndDateBaseline 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->calculatedEndDateBaseline[] = $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 $jobSearchRowBasicCategoryItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicCategoryItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicCategoryItem) ? get_class($jobSearchRowBasicCategoryItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicCategoryItem), var_export($jobSearchRowBasicCategoryItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 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 $jobSearchRowBasicCityItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicCityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicCityItem) ? get_class($jobSearchRowBasicCityItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicCityItem), var_export($jobSearchRowBasicCityItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicCommentsItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicCommentsItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicCommentsItem) ? get_class($jobSearchRowBasicCommentsItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicCommentsItem), var_export($jobSearchRowBasicCommentsItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicCompanyNameItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicCompanyNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicCompanyNameItem) ? get_class($jobSearchRowBasicCompanyNameItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicCompanyNameItem), var_export($jobSearchRowBasicCompanyNameItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 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 $jobSearchRowBasicContactItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicContactItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicContactItem) ? get_class($jobSearchRowBasicContactItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicContactItem), var_export($jobSearchRowBasicContactItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 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 $jobSearchRowBasicCountryItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicCountryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicCountryItem) ? get_class($jobSearchRowBasicCountryItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicCountryItem), var_export($jobSearchRowBasicCountryItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicCountryCodeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicCountryCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicCountryCodeItem) ? get_class($jobSearchRowBasicCountryCodeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicCountryCodeItem), var_export($jobSearchRowBasicCountryCodeItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 customer value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCustomer()
    {
        return $this->customer;
    }
    /**
     * This method is responsible for validating the values passed to the setCustomer method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCustomer method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCustomerForArrayConstraintsFromSetCustomer(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicCustomerItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicCustomerItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicCustomerItem) ? get_class($jobSearchRowBasicCustomerItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicCustomerItem), var_export($jobSearchRowBasicCustomerItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The customer 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 customer value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $customer
     * @return \StructType\JobSearchRowBasic
     */
    public function setCustomer(array $customer = array())
    {
        // validation for constraint: array
        if ('' !== ($customerArrayErrorMessage = self::validateCustomerForArrayConstraintsFromSetCustomer($customer))) {
            throw new \InvalidArgumentException($customerArrayErrorMessage, __LINE__);
        }
        $this->customer = $customer;
        return $this;
    }
    /**
     * Add item to customer value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToCustomer(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The customer 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->customer[] = $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 $jobSearchRowBasicDateCreatedItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicDateCreatedItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($jobSearchRowBasicDateCreatedItem) ? get_class($jobSearchRowBasicDateCreatedItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicDateCreatedItem), var_export($jobSearchRowBasicDateCreatedItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 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 $jobSearchRowBasicDefaultTaxRegItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicDefaultTaxRegItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicDefaultTaxRegItem) ? get_class($jobSearchRowBasicDefaultTaxRegItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicDefaultTaxRegItem), var_export($jobSearchRowBasicDefaultTaxRegItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 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 $jobSearchRowBasicEmailItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEmailItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicEmailItem) ? get_class($jobSearchRowBasicEmailItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEmailItem), var_export($jobSearchRowBasicEmailItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 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 $jobSearchRowBasicEndDateItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEndDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($jobSearchRowBasicEndDateItem) ? get_class($jobSearchRowBasicEndDateItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEndDateItem), var_export($jobSearchRowBasicEndDateItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicEntityIdItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEntityIdItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicEntityIdItem) ? get_class($jobSearchRowBasicEntityIdItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEntityIdItem), var_export($jobSearchRowBasicEntityIdItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicEntityNumberItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEntityNumberItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($jobSearchRowBasicEntityNumberItem) ? get_class($jobSearchRowBasicEntityNumberItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEntityNumberItem), var_export($jobSearchRowBasicEntityNumberItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicEntityStatusItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEntityStatusItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicEntityStatusItem) ? get_class($jobSearchRowBasicEntityStatusItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEntityStatusItem), var_export($jobSearchRowBasicEntityStatusItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 estimatedCost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedCost()
    {
        return $this->estimatedCost;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedCostForArrayConstraintsFromSetEstimatedCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicEstimatedCostItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEstimatedCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicEstimatedCostItem) ? get_class($jobSearchRowBasicEstimatedCostItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEstimatedCostItem), var_export($jobSearchRowBasicEstimatedCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedCost 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 estimatedCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedCost
     * @return \StructType\JobSearchRowBasic
     */
    public function setEstimatedCost(array $estimatedCost = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedCostArrayErrorMessage = self::validateEstimatedCostForArrayConstraintsFromSetEstimatedCost($estimatedCost))) {
            throw new \InvalidArgumentException($estimatedCostArrayErrorMessage, __LINE__);
        }
        $this->estimatedCost = $estimatedCost;
        return $this;
    }
    /**
     * Add item to estimatedCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToEstimatedCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedCost 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->estimatedCost[] = $item;
        return $this;
    }
    /**
     * Get estimatedGrossProfit value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedGrossProfit()
    {
        return $this->estimatedGrossProfit;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedGrossProfit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedGrossProfit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedGrossProfitForArrayConstraintsFromSetEstimatedGrossProfit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicEstimatedGrossProfitItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEstimatedGrossProfitItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicEstimatedGrossProfitItem) ? get_class($jobSearchRowBasicEstimatedGrossProfitItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEstimatedGrossProfitItem), var_export($jobSearchRowBasicEstimatedGrossProfitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedGrossProfit 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 estimatedGrossProfit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedGrossProfit
     * @return \StructType\JobSearchRowBasic
     */
    public function setEstimatedGrossProfit(array $estimatedGrossProfit = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedGrossProfitArrayErrorMessage = self::validateEstimatedGrossProfitForArrayConstraintsFromSetEstimatedGrossProfit($estimatedGrossProfit))) {
            throw new \InvalidArgumentException($estimatedGrossProfitArrayErrorMessage, __LINE__);
        }
        $this->estimatedGrossProfit = $estimatedGrossProfit;
        return $this;
    }
    /**
     * Add item to estimatedGrossProfit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToEstimatedGrossProfit(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedGrossProfit 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->estimatedGrossProfit[] = $item;
        return $this;
    }
    /**
     * Get estimatedGrossProfitPercent value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedGrossProfitPercent()
    {
        return $this->estimatedGrossProfitPercent;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedGrossProfitPercent method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedGrossProfitPercent method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedGrossProfitPercentForArrayConstraintsFromSetEstimatedGrossProfitPercent(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicEstimatedGrossProfitPercentItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEstimatedGrossProfitPercentItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicEstimatedGrossProfitPercentItem) ? get_class($jobSearchRowBasicEstimatedGrossProfitPercentItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEstimatedGrossProfitPercentItem), var_export($jobSearchRowBasicEstimatedGrossProfitPercentItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedGrossProfitPercent 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 estimatedGrossProfitPercent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedGrossProfitPercent
     * @return \StructType\JobSearchRowBasic
     */
    public function setEstimatedGrossProfitPercent(array $estimatedGrossProfitPercent = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedGrossProfitPercentArrayErrorMessage = self::validateEstimatedGrossProfitPercentForArrayConstraintsFromSetEstimatedGrossProfitPercent($estimatedGrossProfitPercent))) {
            throw new \InvalidArgumentException($estimatedGrossProfitPercentArrayErrorMessage, __LINE__);
        }
        $this->estimatedGrossProfitPercent = $estimatedGrossProfitPercent;
        return $this;
    }
    /**
     * Add item to estimatedGrossProfitPercent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToEstimatedGrossProfitPercent(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedGrossProfitPercent 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->estimatedGrossProfitPercent[] = $item;
        return $this;
    }
    /**
     * Get estimatedLaborCost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedLaborCost()
    {
        return $this->estimatedLaborCost;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedLaborCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedLaborCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedLaborCostForArrayConstraintsFromSetEstimatedLaborCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicEstimatedLaborCostItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEstimatedLaborCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicEstimatedLaborCostItem) ? get_class($jobSearchRowBasicEstimatedLaborCostItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEstimatedLaborCostItem), var_export($jobSearchRowBasicEstimatedLaborCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedLaborCost 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 estimatedLaborCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedLaborCost
     * @return \StructType\JobSearchRowBasic
     */
    public function setEstimatedLaborCost(array $estimatedLaborCost = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedLaborCostArrayErrorMessage = self::validateEstimatedLaborCostForArrayConstraintsFromSetEstimatedLaborCost($estimatedLaborCost))) {
            throw new \InvalidArgumentException($estimatedLaborCostArrayErrorMessage, __LINE__);
        }
        $this->estimatedLaborCost = $estimatedLaborCost;
        return $this;
    }
    /**
     * Add item to estimatedLaborCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToEstimatedLaborCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedLaborCost 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->estimatedLaborCost[] = $item;
        return $this;
    }
    /**
     * Get estimatedLaborCostBaseline value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedLaborCostBaseline()
    {
        return $this->estimatedLaborCostBaseline;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedLaborCostBaseline method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedLaborCostBaseline method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedLaborCostBaselineForArrayConstraintsFromSetEstimatedLaborCostBaseline(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicEstimatedLaborCostBaselineItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEstimatedLaborCostBaselineItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicEstimatedLaborCostBaselineItem) ? get_class($jobSearchRowBasicEstimatedLaborCostBaselineItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEstimatedLaborCostBaselineItem), var_export($jobSearchRowBasicEstimatedLaborCostBaselineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedLaborCostBaseline 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 estimatedLaborCostBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedLaborCostBaseline
     * @return \StructType\JobSearchRowBasic
     */
    public function setEstimatedLaborCostBaseline(array $estimatedLaborCostBaseline = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedLaborCostBaselineArrayErrorMessage = self::validateEstimatedLaborCostBaselineForArrayConstraintsFromSetEstimatedLaborCostBaseline($estimatedLaborCostBaseline))) {
            throw new \InvalidArgumentException($estimatedLaborCostBaselineArrayErrorMessage, __LINE__);
        }
        $this->estimatedLaborCostBaseline = $estimatedLaborCostBaseline;
        return $this;
    }
    /**
     * Add item to estimatedLaborCostBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToEstimatedLaborCostBaseline(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedLaborCostBaseline 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->estimatedLaborCostBaseline[] = $item;
        return $this;
    }
    /**
     * Get estimatedLaborRevenue value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedLaborRevenue()
    {
        return $this->estimatedLaborRevenue;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedLaborRevenue method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedLaborRevenue method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedLaborRevenueForArrayConstraintsFromSetEstimatedLaborRevenue(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicEstimatedLaborRevenueItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEstimatedLaborRevenueItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicEstimatedLaborRevenueItem) ? get_class($jobSearchRowBasicEstimatedLaborRevenueItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEstimatedLaborRevenueItem), var_export($jobSearchRowBasicEstimatedLaborRevenueItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedLaborRevenue 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 estimatedLaborRevenue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedLaborRevenue
     * @return \StructType\JobSearchRowBasic
     */
    public function setEstimatedLaborRevenue(array $estimatedLaborRevenue = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedLaborRevenueArrayErrorMessage = self::validateEstimatedLaborRevenueForArrayConstraintsFromSetEstimatedLaborRevenue($estimatedLaborRevenue))) {
            throw new \InvalidArgumentException($estimatedLaborRevenueArrayErrorMessage, __LINE__);
        }
        $this->estimatedLaborRevenue = $estimatedLaborRevenue;
        return $this;
    }
    /**
     * Add item to estimatedLaborRevenue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToEstimatedLaborRevenue(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedLaborRevenue 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->estimatedLaborRevenue[] = $item;
        return $this;
    }
    /**
     * Get estimatedRevenue value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedRevenue()
    {
        return $this->estimatedRevenue;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedRevenue method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedRevenue method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedRevenueForArrayConstraintsFromSetEstimatedRevenue(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicEstimatedRevenueItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEstimatedRevenueItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicEstimatedRevenueItem) ? get_class($jobSearchRowBasicEstimatedRevenueItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEstimatedRevenueItem), var_export($jobSearchRowBasicEstimatedRevenueItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedRevenue 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 estimatedRevenue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedRevenue
     * @return \StructType\JobSearchRowBasic
     */
    public function setEstimatedRevenue(array $estimatedRevenue = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedRevenueArrayErrorMessage = self::validateEstimatedRevenueForArrayConstraintsFromSetEstimatedRevenue($estimatedRevenue))) {
            throw new \InvalidArgumentException($estimatedRevenueArrayErrorMessage, __LINE__);
        }
        $this->estimatedRevenue = $estimatedRevenue;
        return $this;
    }
    /**
     * Add item to estimatedRevenue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToEstimatedRevenue(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedRevenue 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->estimatedRevenue[] = $item;
        return $this;
    }
    /**
     * Get estimatedTime value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedTime()
    {
        return $this->estimatedTime;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedTimeForArrayConstraintsFromSetEstimatedTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicEstimatedTimeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEstimatedTimeItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicEstimatedTimeItem) ? get_class($jobSearchRowBasicEstimatedTimeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEstimatedTimeItem), var_export($jobSearchRowBasicEstimatedTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedTime 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 estimatedTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedTime
     * @return \StructType\JobSearchRowBasic
     */
    public function setEstimatedTime(array $estimatedTime = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedTimeArrayErrorMessage = self::validateEstimatedTimeForArrayConstraintsFromSetEstimatedTime($estimatedTime))) {
            throw new \InvalidArgumentException($estimatedTimeArrayErrorMessage, __LINE__);
        }
        $this->estimatedTime = $estimatedTime;
        return $this;
    }
    /**
     * Add item to estimatedTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToEstimatedTime(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedTime 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->estimatedTime[] = $item;
        return $this;
    }
    /**
     * Get estimatedTimeOverride value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedTimeOverride()
    {
        return $this->estimatedTimeOverride;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedTimeOverride method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedTimeOverride method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedTimeOverrideForArrayConstraintsFromSetEstimatedTimeOverride(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicEstimatedTimeOverrideItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEstimatedTimeOverrideItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicEstimatedTimeOverrideItem) ? get_class($jobSearchRowBasicEstimatedTimeOverrideItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEstimatedTimeOverrideItem), var_export($jobSearchRowBasicEstimatedTimeOverrideItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedTimeOverride 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 estimatedTimeOverride value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedTimeOverride
     * @return \StructType\JobSearchRowBasic
     */
    public function setEstimatedTimeOverride(array $estimatedTimeOverride = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedTimeOverrideArrayErrorMessage = self::validateEstimatedTimeOverrideForArrayConstraintsFromSetEstimatedTimeOverride($estimatedTimeOverride))) {
            throw new \InvalidArgumentException($estimatedTimeOverrideArrayErrorMessage, __LINE__);
        }
        $this->estimatedTimeOverride = $estimatedTimeOverride;
        return $this;
    }
    /**
     * Add item to estimatedTimeOverride value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToEstimatedTimeOverride(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedTimeOverride 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->estimatedTimeOverride[] = $item;
        return $this;
    }
    /**
     * Get estimatedTimeOverrideBaseline value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedTimeOverrideBaseline()
    {
        return $this->estimatedTimeOverrideBaseline;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedTimeOverrideBaseline method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedTimeOverrideBaseline method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedTimeOverrideBaselineForArrayConstraintsFromSetEstimatedTimeOverrideBaseline(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicEstimatedTimeOverrideBaselineItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicEstimatedTimeOverrideBaselineItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicEstimatedTimeOverrideBaselineItem) ? get_class($jobSearchRowBasicEstimatedTimeOverrideBaselineItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicEstimatedTimeOverrideBaselineItem), var_export($jobSearchRowBasicEstimatedTimeOverrideBaselineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedTimeOverrideBaseline 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 estimatedTimeOverrideBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedTimeOverrideBaseline
     * @return \StructType\JobSearchRowBasic
     */
    public function setEstimatedTimeOverrideBaseline(array $estimatedTimeOverrideBaseline = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedTimeOverrideBaselineArrayErrorMessage = self::validateEstimatedTimeOverrideBaselineForArrayConstraintsFromSetEstimatedTimeOverrideBaseline($estimatedTimeOverrideBaseline))) {
            throw new \InvalidArgumentException($estimatedTimeOverrideBaselineArrayErrorMessage, __LINE__);
        }
        $this->estimatedTimeOverrideBaseline = $estimatedTimeOverrideBaseline;
        return $this;
    }
    /**
     * Add item to estimatedTimeOverrideBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToEstimatedTimeOverrideBaseline(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedTimeOverrideBaseline 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->estimatedTimeOverrideBaseline[] = $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 $jobSearchRowBasicExternalIdItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicExternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicExternalIdItem) ? get_class($jobSearchRowBasicExternalIdItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicExternalIdItem), var_export($jobSearchRowBasicExternalIdItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicFaxItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicFaxItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicFaxItem) ? get_class($jobSearchRowBasicFaxItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicFaxItem), var_export($jobSearchRowBasicFaxItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 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 $jobSearchRowBasicGlobalSubscriptionStatusItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicGlobalSubscriptionStatusItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicGlobalSubscriptionStatusItem) ? get_class($jobSearchRowBasicGlobalSubscriptionStatusItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicGlobalSubscriptionStatusItem), var_export($jobSearchRowBasicGlobalSubscriptionStatusItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 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 $jobSearchRowBasicImageItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicImageItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicImageItem) ? get_class($jobSearchRowBasicImageItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicImageItem), var_export($jobSearchRowBasicImageItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 includeCrmTasksInTotals value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIncludeCrmTasksInTotals()
    {
        return $this->includeCrmTasksInTotals;
    }
    /**
     * This method is responsible for validating the values passed to the setIncludeCrmTasksInTotals method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIncludeCrmTasksInTotals method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIncludeCrmTasksInTotalsForArrayConstraintsFromSetIncludeCrmTasksInTotals(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicIncludeCrmTasksInTotalsItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicIncludeCrmTasksInTotalsItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicIncludeCrmTasksInTotalsItem) ? get_class($jobSearchRowBasicIncludeCrmTasksInTotalsItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicIncludeCrmTasksInTotalsItem), var_export($jobSearchRowBasicIncludeCrmTasksInTotalsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The includeCrmTasksInTotals 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 includeCrmTasksInTotals value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $includeCrmTasksInTotals
     * @return \StructType\JobSearchRowBasic
     */
    public function setIncludeCrmTasksInTotals(array $includeCrmTasksInTotals = array())
    {
        // validation for constraint: array
        if ('' !== ($includeCrmTasksInTotalsArrayErrorMessage = self::validateIncludeCrmTasksInTotalsForArrayConstraintsFromSetIncludeCrmTasksInTotals($includeCrmTasksInTotals))) {
            throw new \InvalidArgumentException($includeCrmTasksInTotalsArrayErrorMessage, __LINE__);
        }
        $this->includeCrmTasksInTotals = $includeCrmTasksInTotals;
        return $this;
    }
    /**
     * Add item to includeCrmTasksInTotals value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToIncludeCrmTasksInTotals(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The includeCrmTasksInTotals 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->includeCrmTasksInTotals[] = $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 $jobSearchRowBasicInternalIdItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicInternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicInternalIdItem) ? get_class($jobSearchRowBasicInternalIdItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicInternalIdItem), var_export($jobSearchRowBasicInternalIdItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    public function addToInternalId(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The internalId property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->internalId[] = $item;
        return $this;
    }
    /**
     * Get isDefaultBilling value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsDefaultBilling()
    {
        return $this->isDefaultBilling;
    }
    /**
     * This method is responsible for validating the values passed to the setIsDefaultBilling method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsDefaultBilling method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsDefaultBillingForArrayConstraintsFromSetIsDefaultBilling(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicIsDefaultBillingItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicIsDefaultBillingItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicIsDefaultBillingItem) ? get_class($jobSearchRowBasicIsDefaultBillingItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicIsDefaultBillingItem), var_export($jobSearchRowBasicIsDefaultBillingItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicIsDefaultShippingItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicIsDefaultShippingItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicIsDefaultShippingItem) ? get_class($jobSearchRowBasicIsDefaultShippingItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicIsDefaultShippingItem), var_export($jobSearchRowBasicIsDefaultShippingItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 isExemptTime value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsExemptTime()
    {
        return $this->isExemptTime;
    }
    /**
     * This method is responsible for validating the values passed to the setIsExemptTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsExemptTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsExemptTimeForArrayConstraintsFromSetIsExemptTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicIsExemptTimeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicIsExemptTimeItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicIsExemptTimeItem) ? get_class($jobSearchRowBasicIsExemptTimeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicIsExemptTimeItem), var_export($jobSearchRowBasicIsExemptTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isExemptTime 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 isExemptTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isExemptTime
     * @return \StructType\JobSearchRowBasic
     */
    public function setIsExemptTime(array $isExemptTime = array())
    {
        // validation for constraint: array
        if ('' !== ($isExemptTimeArrayErrorMessage = self::validateIsExemptTimeForArrayConstraintsFromSetIsExemptTime($isExemptTime))) {
            throw new \InvalidArgumentException($isExemptTimeArrayErrorMessage, __LINE__);
        }
        $this->isExemptTime = $isExemptTime;
        return $this;
    }
    /**
     * Add item to isExemptTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToIsExemptTime(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isExemptTime 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->isExemptTime[] = $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 $jobSearchRowBasicIsInactiveItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicIsInactiveItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicIsInactiveItem) ? get_class($jobSearchRowBasicIsInactiveItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicIsInactiveItem), var_export($jobSearchRowBasicIsInactiveItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 isProductiveTime value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsProductiveTime()
    {
        return $this->isProductiveTime;
    }
    /**
     * This method is responsible for validating the values passed to the setIsProductiveTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsProductiveTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsProductiveTimeForArrayConstraintsFromSetIsProductiveTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicIsProductiveTimeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicIsProductiveTimeItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicIsProductiveTimeItem) ? get_class($jobSearchRowBasicIsProductiveTimeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicIsProductiveTimeItem), var_export($jobSearchRowBasicIsProductiveTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isProductiveTime 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 isProductiveTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isProductiveTime
     * @return \StructType\JobSearchRowBasic
     */
    public function setIsProductiveTime(array $isProductiveTime = array())
    {
        // validation for constraint: array
        if ('' !== ($isProductiveTimeArrayErrorMessage = self::validateIsProductiveTimeForArrayConstraintsFromSetIsProductiveTime($isProductiveTime))) {
            throw new \InvalidArgumentException($isProductiveTimeArrayErrorMessage, __LINE__);
        }
        $this->isProductiveTime = $isProductiveTime;
        return $this;
    }
    /**
     * Add item to isProductiveTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToIsProductiveTime(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isProductiveTime 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->isProductiveTime[] = $item;
        return $this;
    }
    /**
     * Get isUtilizedTime value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsUtilizedTime()
    {
        return $this->isUtilizedTime;
    }
    /**
     * This method is responsible for validating the values passed to the setIsUtilizedTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsUtilizedTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsUtilizedTimeForArrayConstraintsFromSetIsUtilizedTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicIsUtilizedTimeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicIsUtilizedTimeItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicIsUtilizedTimeItem) ? get_class($jobSearchRowBasicIsUtilizedTimeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicIsUtilizedTimeItem), var_export($jobSearchRowBasicIsUtilizedTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isUtilizedTime 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 isUtilizedTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isUtilizedTime
     * @return \StructType\JobSearchRowBasic
     */
    public function setIsUtilizedTime(array $isUtilizedTime = array())
    {
        // validation for constraint: array
        if ('' !== ($isUtilizedTimeArrayErrorMessage = self::validateIsUtilizedTimeForArrayConstraintsFromSetIsUtilizedTime($isUtilizedTime))) {
            throw new \InvalidArgumentException($isUtilizedTimeArrayErrorMessage, __LINE__);
        }
        $this->isUtilizedTime = $isUtilizedTime;
        return $this;
    }
    /**
     * Add item to isUtilizedTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToIsUtilizedTime(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isUtilizedTime 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->isUtilizedTime[] = $item;
        return $this;
    }
    /**
     * Get jobBillingType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getJobBillingType()
    {
        return $this->jobBillingType;
    }
    /**
     * This method is responsible for validating the values passed to the setJobBillingType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setJobBillingType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateJobBillingTypeForArrayConstraintsFromSetJobBillingType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicJobBillingTypeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicJobBillingTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicJobBillingTypeItem) ? get_class($jobSearchRowBasicJobBillingTypeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicJobBillingTypeItem), var_export($jobSearchRowBasicJobBillingTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The jobBillingType 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 jobBillingType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $jobBillingType
     * @return \StructType\JobSearchRowBasic
     */
    public function setJobBillingType(array $jobBillingType = array())
    {
        // validation for constraint: array
        if ('' !== ($jobBillingTypeArrayErrorMessage = self::validateJobBillingTypeForArrayConstraintsFromSetJobBillingType($jobBillingType))) {
            throw new \InvalidArgumentException($jobBillingTypeArrayErrorMessage, __LINE__);
        }
        $this->jobBillingType = $jobBillingType;
        return $this;
    }
    /**
     * Add item to jobBillingType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToJobBillingType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The jobBillingType 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->jobBillingType[] = $item;
        return $this;
    }
    /**
     * Get jobItem value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getJobItem()
    {
        return $this->jobItem;
    }
    /**
     * This method is responsible for validating the values passed to the setJobItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setJobItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateJobItemForArrayConstraintsFromSetJobItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicJobItemItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicJobItemItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicJobItemItem) ? get_class($jobSearchRowBasicJobItemItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicJobItemItem), var_export($jobSearchRowBasicJobItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The jobItem 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 jobItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $jobItem
     * @return \StructType\JobSearchRowBasic
     */
    public function setJobItem(array $jobItem = array())
    {
        // validation for constraint: array
        if ('' !== ($jobItemArrayErrorMessage = self::validateJobItemForArrayConstraintsFromSetJobItem($jobItem))) {
            throw new \InvalidArgumentException($jobItemArrayErrorMessage, __LINE__);
        }
        $this->jobItem = $jobItem;
        return $this;
    }
    /**
     * Add item to jobItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToJobItem(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The jobItem 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->jobItem[] = $item;
        return $this;
    }
    /**
     * Get jobPrice value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getJobPrice()
    {
        return $this->jobPrice;
    }
    /**
     * This method is responsible for validating the values passed to the setJobPrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setJobPrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateJobPriceForArrayConstraintsFromSetJobPrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicJobPriceItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicJobPriceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicJobPriceItem) ? get_class($jobSearchRowBasicJobPriceItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicJobPriceItem), var_export($jobSearchRowBasicJobPriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The jobPrice 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 jobPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $jobPrice
     * @return \StructType\JobSearchRowBasic
     */
    public function setJobPrice(array $jobPrice = array())
    {
        // validation for constraint: array
        if ('' !== ($jobPriceArrayErrorMessage = self::validateJobPriceForArrayConstraintsFromSetJobPrice($jobPrice))) {
            throw new \InvalidArgumentException($jobPriceArrayErrorMessage, __LINE__);
        }
        $this->jobPrice = $jobPrice;
        return $this;
    }
    /**
     * Add item to jobPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToJobPrice(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The jobPrice 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->jobPrice[] = $item;
        return $this;
    }
    /**
     * Get jobResource value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getJobResource()
    {
        return $this->jobResource;
    }
    /**
     * This method is responsible for validating the values passed to the setJobResource method
     * This method is willingly generated in order to preserve the one-line inline validation within the setJobResource method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateJobResourceForArrayConstraintsFromSetJobResource(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicJobResourceItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicJobResourceItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicJobResourceItem) ? get_class($jobSearchRowBasicJobResourceItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicJobResourceItem), var_export($jobSearchRowBasicJobResourceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The jobResource 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 jobResource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $jobResource
     * @return \StructType\JobSearchRowBasic
     */
    public function setJobResource(array $jobResource = array())
    {
        // validation for constraint: array
        if ('' !== ($jobResourceArrayErrorMessage = self::validateJobResourceForArrayConstraintsFromSetJobResource($jobResource))) {
            throw new \InvalidArgumentException($jobResourceArrayErrorMessage, __LINE__);
        }
        $this->jobResource = $jobResource;
        return $this;
    }
    /**
     * Add item to jobResource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToJobResource(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The jobResource 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->jobResource[] = $item;
        return $this;
    }
    /**
     * Get jobResourceRole value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getJobResourceRole()
    {
        return $this->jobResourceRole;
    }
    /**
     * This method is responsible for validating the values passed to the setJobResourceRole method
     * This method is willingly generated in order to preserve the one-line inline validation within the setJobResourceRole method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateJobResourceRoleForArrayConstraintsFromSetJobResourceRole(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicJobResourceRoleItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicJobResourceRoleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicJobResourceRoleItem) ? get_class($jobSearchRowBasicJobResourceRoleItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicJobResourceRoleItem), var_export($jobSearchRowBasicJobResourceRoleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The jobResourceRole 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 jobResourceRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $jobResourceRole
     * @return \StructType\JobSearchRowBasic
     */
    public function setJobResourceRole(array $jobResourceRole = array())
    {
        // validation for constraint: array
        if ('' !== ($jobResourceRoleArrayErrorMessage = self::validateJobResourceRoleForArrayConstraintsFromSetJobResourceRole($jobResourceRole))) {
            throw new \InvalidArgumentException($jobResourceRoleArrayErrorMessage, __LINE__);
        }
        $this->jobResourceRole = $jobResourceRole;
        return $this;
    }
    /**
     * Add item to jobResourceRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToJobResourceRole(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The jobResourceRole 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->jobResourceRole[] = $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 $jobSearchRowBasicLanguageItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicLanguageItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicLanguageItem) ? get_class($jobSearchRowBasicLanguageItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicLanguageItem), var_export($jobSearchRowBasicLanguageItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 lastBaselineDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLastBaselineDate()
    {
        return $this->lastBaselineDate;
    }
    /**
     * This method is responsible for validating the values passed to the setLastBaselineDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLastBaselineDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLastBaselineDateForArrayConstraintsFromSetLastBaselineDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicLastBaselineDateItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicLastBaselineDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($jobSearchRowBasicLastBaselineDateItem) ? get_class($jobSearchRowBasicLastBaselineDateItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicLastBaselineDateItem), var_export($jobSearchRowBasicLastBaselineDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lastBaselineDate 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 lastBaselineDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $lastBaselineDate
     * @return \StructType\JobSearchRowBasic
     */
    public function setLastBaselineDate(array $lastBaselineDate = array())
    {
        // validation for constraint: array
        if ('' !== ($lastBaselineDateArrayErrorMessage = self::validateLastBaselineDateForArrayConstraintsFromSetLastBaselineDate($lastBaselineDate))) {
            throw new \InvalidArgumentException($lastBaselineDateArrayErrorMessage, __LINE__);
        }
        $this->lastBaselineDate = $lastBaselineDate;
        return $this;
    }
    /**
     * Add item to lastBaselineDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToLastBaselineDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The lastBaselineDate 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->lastBaselineDate[] = $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 $jobSearchRowBasicLastModifiedDateItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicLastModifiedDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($jobSearchRowBasicLastModifiedDateItem) ? get_class($jobSearchRowBasicLastModifiedDateItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicLastModifiedDateItem), var_export($jobSearchRowBasicLastModifiedDateItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 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 $jobSearchRowBasicLevelItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicLevelItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicLevelItem) ? get_class($jobSearchRowBasicLevelItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicLevelItem), var_export($jobSearchRowBasicLevelItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 limitTimeToAssignees value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getLimitTimeToAssignees()
    {
        return $this->limitTimeToAssignees;
    }
    /**
     * This method is responsible for validating the values passed to the setLimitTimeToAssignees method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLimitTimeToAssignees method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLimitTimeToAssigneesForArrayConstraintsFromSetLimitTimeToAssignees(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicLimitTimeToAssigneesItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicLimitTimeToAssigneesItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicLimitTimeToAssigneesItem) ? get_class($jobSearchRowBasicLimitTimeToAssigneesItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicLimitTimeToAssigneesItem), var_export($jobSearchRowBasicLimitTimeToAssigneesItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The limitTimeToAssignees 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 limitTimeToAssignees value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $limitTimeToAssignees
     * @return \StructType\JobSearchRowBasic
     */
    public function setLimitTimeToAssignees(array $limitTimeToAssignees = array())
    {
        // validation for constraint: array
        if ('' !== ($limitTimeToAssigneesArrayErrorMessage = self::validateLimitTimeToAssigneesForArrayConstraintsFromSetLimitTimeToAssignees($limitTimeToAssignees))) {
            throw new \InvalidArgumentException($limitTimeToAssigneesArrayErrorMessage, __LINE__);
        }
        $this->limitTimeToAssignees = $limitTimeToAssignees;
        return $this;
    }
    /**
     * Add item to limitTimeToAssignees value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToLimitTimeToAssignees(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The limitTimeToAssignees 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->limitTimeToAssignees[] = $item;
        return $this;
    }
    /**
     * Get materializeTime value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getMaterializeTime()
    {
        return $this->materializeTime;
    }
    /**
     * This method is responsible for validating the values passed to the setMaterializeTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMaterializeTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMaterializeTimeForArrayConstraintsFromSetMaterializeTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicMaterializeTimeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicMaterializeTimeItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicMaterializeTimeItem) ? get_class($jobSearchRowBasicMaterializeTimeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicMaterializeTimeItem), var_export($jobSearchRowBasicMaterializeTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The materializeTime 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 materializeTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $materializeTime
     * @return \StructType\JobSearchRowBasic
     */
    public function setMaterializeTime(array $materializeTime = array())
    {
        // validation for constraint: array
        if ('' !== ($materializeTimeArrayErrorMessage = self::validateMaterializeTimeForArrayConstraintsFromSetMaterializeTime($materializeTime))) {
            throw new \InvalidArgumentException($materializeTimeArrayErrorMessage, __LINE__);
        }
        $this->materializeTime = $materializeTime;
        return $this;
    }
    /**
     * Add item to materializeTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToMaterializeTime(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The materializeTime 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->materializeTime[] = $item;
        return $this;
    }
    /**
     * Get percentComplete value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPercentComplete()
    {
        return $this->percentComplete;
    }
    /**
     * This method is responsible for validating the values passed to the setPercentComplete method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPercentComplete method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePercentCompleteForArrayConstraintsFromSetPercentComplete(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicPercentCompleteItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicPercentCompleteItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicPercentCompleteItem) ? get_class($jobSearchRowBasicPercentCompleteItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicPercentCompleteItem), var_export($jobSearchRowBasicPercentCompleteItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The percentComplete 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 percentComplete value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $percentComplete
     * @return \StructType\JobSearchRowBasic
     */
    public function setPercentComplete(array $percentComplete = array())
    {
        // validation for constraint: array
        if ('' !== ($percentCompleteArrayErrorMessage = self::validatePercentCompleteForArrayConstraintsFromSetPercentComplete($percentComplete))) {
            throw new \InvalidArgumentException($percentCompleteArrayErrorMessage, __LINE__);
        }
        $this->percentComplete = $percentComplete;
        return $this;
    }
    /**
     * Add item to percentComplete value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToPercentComplete(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The percentComplete 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->percentComplete[] = $item;
        return $this;
    }
    /**
     * Get percentTimeComplete value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPercentTimeComplete()
    {
        return $this->percentTimeComplete;
    }
    /**
     * This method is responsible for validating the values passed to the setPercentTimeComplete method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPercentTimeComplete method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePercentTimeCompleteForArrayConstraintsFromSetPercentTimeComplete(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicPercentTimeCompleteItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicPercentTimeCompleteItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicPercentTimeCompleteItem) ? get_class($jobSearchRowBasicPercentTimeCompleteItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicPercentTimeCompleteItem), var_export($jobSearchRowBasicPercentTimeCompleteItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The percentTimeComplete 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 percentTimeComplete value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $percentTimeComplete
     * @return \StructType\JobSearchRowBasic
     */
    public function setPercentTimeComplete(array $percentTimeComplete = array())
    {
        // validation for constraint: array
        if ('' !== ($percentTimeCompleteArrayErrorMessage = self::validatePercentTimeCompleteForArrayConstraintsFromSetPercentTimeComplete($percentTimeComplete))) {
            throw new \InvalidArgumentException($percentTimeCompleteArrayErrorMessage, __LINE__);
        }
        $this->percentTimeComplete = $percentTimeComplete;
        return $this;
    }
    /**
     * Add item to percentTimeComplete value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToPercentTimeComplete(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The percentTimeComplete 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->percentTimeComplete[] = $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 $jobSearchRowBasicPermissionItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicPermissionItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicPermissionItem) ? get_class($jobSearchRowBasicPermissionItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicPermissionItem), var_export($jobSearchRowBasicPermissionItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicPhoneItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicPhoneItem) ? get_class($jobSearchRowBasicPhoneItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicPhoneItem), var_export($jobSearchRowBasicPhoneItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicPhoneticNameItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicPhoneticNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicPhoneticNameItem) ? get_class($jobSearchRowBasicPhoneticNameItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicPhoneticNameItem), var_export($jobSearchRowBasicPhoneticNameItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 plannedWork value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPlannedWork()
    {
        return $this->plannedWork;
    }
    /**
     * This method is responsible for validating the values passed to the setPlannedWork method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPlannedWork method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePlannedWorkForArrayConstraintsFromSetPlannedWork(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicPlannedWorkItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicPlannedWorkItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicPlannedWorkItem) ? get_class($jobSearchRowBasicPlannedWorkItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicPlannedWorkItem), var_export($jobSearchRowBasicPlannedWorkItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The plannedWork 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 plannedWork value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $plannedWork
     * @return \StructType\JobSearchRowBasic
     */
    public function setPlannedWork(array $plannedWork = array())
    {
        // validation for constraint: array
        if ('' !== ($plannedWorkArrayErrorMessage = self::validatePlannedWorkForArrayConstraintsFromSetPlannedWork($plannedWork))) {
            throw new \InvalidArgumentException($plannedWorkArrayErrorMessage, __LINE__);
        }
        $this->plannedWork = $plannedWork;
        return $this;
    }
    /**
     * Add item to plannedWork value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToPlannedWork(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The plannedWork 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->plannedWork[] = $item;
        return $this;
    }
    /**
     * Get plannedWorkBaseline value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPlannedWorkBaseline()
    {
        return $this->plannedWorkBaseline;
    }
    /**
     * This method is responsible for validating the values passed to the setPlannedWorkBaseline method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPlannedWorkBaseline method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePlannedWorkBaselineForArrayConstraintsFromSetPlannedWorkBaseline(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicPlannedWorkBaselineItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicPlannedWorkBaselineItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicPlannedWorkBaselineItem) ? get_class($jobSearchRowBasicPlannedWorkBaselineItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicPlannedWorkBaselineItem), var_export($jobSearchRowBasicPlannedWorkBaselineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The plannedWorkBaseline 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 plannedWorkBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $plannedWorkBaseline
     * @return \StructType\JobSearchRowBasic
     */
    public function setPlannedWorkBaseline(array $plannedWorkBaseline = array())
    {
        // validation for constraint: array
        if ('' !== ($plannedWorkBaselineArrayErrorMessage = self::validatePlannedWorkBaselineForArrayConstraintsFromSetPlannedWorkBaseline($plannedWorkBaseline))) {
            throw new \InvalidArgumentException($plannedWorkBaselineArrayErrorMessage, __LINE__);
        }
        $this->plannedWorkBaseline = $plannedWorkBaseline;
        return $this;
    }
    /**
     * Add item to plannedWorkBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToPlannedWorkBaseline(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The plannedWorkBaseline 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->plannedWorkBaseline[] = $item;
        return $this;
    }
    /**
     * Get projectedEndDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getProjectedEndDate()
    {
        return $this->projectedEndDate;
    }
    /**
     * This method is responsible for validating the values passed to the setProjectedEndDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setProjectedEndDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateProjectedEndDateForArrayConstraintsFromSetProjectedEndDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicProjectedEndDateItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicProjectedEndDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($jobSearchRowBasicProjectedEndDateItem) ? get_class($jobSearchRowBasicProjectedEndDateItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicProjectedEndDateItem), var_export($jobSearchRowBasicProjectedEndDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The projectedEndDate 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 projectedEndDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $projectedEndDate
     * @return \StructType\JobSearchRowBasic
     */
    public function setProjectedEndDate(array $projectedEndDate = array())
    {
        // validation for constraint: array
        if ('' !== ($projectedEndDateArrayErrorMessage = self::validateProjectedEndDateForArrayConstraintsFromSetProjectedEndDate($projectedEndDate))) {
            throw new \InvalidArgumentException($projectedEndDateArrayErrorMessage, __LINE__);
        }
        $this->projectedEndDate = $projectedEndDate;
        return $this;
    }
    /**
     * Add item to projectedEndDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToProjectedEndDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The projectedEndDate 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->projectedEndDate[] = $item;
        return $this;
    }
    /**
     * Get projectedEndDateBaseline value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getProjectedEndDateBaseline()
    {
        return $this->projectedEndDateBaseline;
    }
    /**
     * This method is responsible for validating the values passed to the setProjectedEndDateBaseline method
     * This method is willingly generated in order to preserve the one-line inline validation within the setProjectedEndDateBaseline method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateProjectedEndDateBaselineForArrayConstraintsFromSetProjectedEndDateBaseline(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicProjectedEndDateBaselineItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicProjectedEndDateBaselineItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($jobSearchRowBasicProjectedEndDateBaselineItem) ? get_class($jobSearchRowBasicProjectedEndDateBaselineItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicProjectedEndDateBaselineItem), var_export($jobSearchRowBasicProjectedEndDateBaselineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The projectedEndDateBaseline 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 projectedEndDateBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $projectedEndDateBaseline
     * @return \StructType\JobSearchRowBasic
     */
    public function setProjectedEndDateBaseline(array $projectedEndDateBaseline = array())
    {
        // validation for constraint: array
        if ('' !== ($projectedEndDateBaselineArrayErrorMessage = self::validateProjectedEndDateBaselineForArrayConstraintsFromSetProjectedEndDateBaseline($projectedEndDateBaseline))) {
            throw new \InvalidArgumentException($projectedEndDateBaselineArrayErrorMessage, __LINE__);
        }
        $this->projectedEndDateBaseline = $projectedEndDateBaseline;
        return $this;
    }
    /**
     * Add item to projectedEndDateBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToProjectedEndDateBaseline(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The projectedEndDateBaseline 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->projectedEndDateBaseline[] = $item;
        return $this;
    }
    /**
     * Get projectExpenseType value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getProjectExpenseType()
    {
        return $this->projectExpenseType;
    }
    /**
     * This method is responsible for validating the values passed to the setProjectExpenseType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setProjectExpenseType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateProjectExpenseTypeForArrayConstraintsFromSetProjectExpenseType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicProjectExpenseTypeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicProjectExpenseTypeItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicProjectExpenseTypeItem) ? get_class($jobSearchRowBasicProjectExpenseTypeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicProjectExpenseTypeItem), var_export($jobSearchRowBasicProjectExpenseTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The projectExpenseType 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 projectExpenseType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $projectExpenseType
     * @return \StructType\JobSearchRowBasic
     */
    public function setProjectExpenseType(array $projectExpenseType = array())
    {
        // validation for constraint: array
        if ('' !== ($projectExpenseTypeArrayErrorMessage = self::validateProjectExpenseTypeForArrayConstraintsFromSetProjectExpenseType($projectExpenseType))) {
            throw new \InvalidArgumentException($projectExpenseTypeArrayErrorMessage, __LINE__);
        }
        $this->projectExpenseType = $projectExpenseType;
        return $this;
    }
    /**
     * Add item to projectExpenseType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToProjectExpenseType(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The projectExpenseType 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->projectExpenseType[] = $item;
        return $this;
    }
    /**
     * Get projectManager value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getProjectManager()
    {
        return $this->projectManager;
    }
    /**
     * This method is responsible for validating the values passed to the setProjectManager method
     * This method is willingly generated in order to preserve the one-line inline validation within the setProjectManager method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateProjectManagerForArrayConstraintsFromSetProjectManager(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicProjectManagerItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicProjectManagerItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicProjectManagerItem) ? get_class($jobSearchRowBasicProjectManagerItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicProjectManagerItem), var_export($jobSearchRowBasicProjectManagerItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The projectManager 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 projectManager value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $projectManager
     * @return \StructType\JobSearchRowBasic
     */
    public function setProjectManager(array $projectManager = array())
    {
        // validation for constraint: array
        if ('' !== ($projectManagerArrayErrorMessage = self::validateProjectManagerForArrayConstraintsFromSetProjectManager($projectManager))) {
            throw new \InvalidArgumentException($projectManagerArrayErrorMessage, __LINE__);
        }
        $this->projectManager = $projectManager;
        return $this;
    }
    /**
     * Add item to projectManager value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToProjectManager(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The projectManager 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->projectManager[] = $item;
        return $this;
    }
    /**
     * Get revRecForecastRule value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getRevRecForecastRule()
    {
        return $this->revRecForecastRule;
    }
    /**
     * This method is responsible for validating the values passed to the setRevRecForecastRule method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRevRecForecastRule method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRevRecForecastRuleForArrayConstraintsFromSetRevRecForecastRule(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicRevRecForecastRuleItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicRevRecForecastRuleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicRevRecForecastRuleItem) ? get_class($jobSearchRowBasicRevRecForecastRuleItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicRevRecForecastRuleItem), var_export($jobSearchRowBasicRevRecForecastRuleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The revRecForecastRule 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 revRecForecastRule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $revRecForecastRule
     * @return \StructType\JobSearchRowBasic
     */
    public function setRevRecForecastRule(array $revRecForecastRule = array())
    {
        // validation for constraint: array
        if ('' !== ($revRecForecastRuleArrayErrorMessage = self::validateRevRecForecastRuleForArrayConstraintsFromSetRevRecForecastRule($revRecForecastRule))) {
            throw new \InvalidArgumentException($revRecForecastRuleArrayErrorMessage, __LINE__);
        }
        $this->revRecForecastRule = $revRecForecastRule;
        return $this;
    }
    /**
     * Add item to revRecForecastRule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToRevRecForecastRule(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The revRecForecastRule 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->revRecForecastRule[] = $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 $jobSearchRowBasicShipAddress1Item) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicShipAddress1Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicShipAddress1Item) ? get_class($jobSearchRowBasicShipAddress1Item) : sprintf('%s(%s)', gettype($jobSearchRowBasicShipAddress1Item), var_export($jobSearchRowBasicShipAddress1Item, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicShipAddress2Item) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicShipAddress2Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicShipAddress2Item) ? get_class($jobSearchRowBasicShipAddress2Item) : sprintf('%s(%s)', gettype($jobSearchRowBasicShipAddress2Item), var_export($jobSearchRowBasicShipAddress2Item, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicShipAddress3Item) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicShipAddress3Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicShipAddress3Item) ? get_class($jobSearchRowBasicShipAddress3Item) : sprintf('%s(%s)', gettype($jobSearchRowBasicShipAddress3Item), var_export($jobSearchRowBasicShipAddress3Item, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicShipAddresseeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicShipAddresseeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicShipAddresseeItem) ? get_class($jobSearchRowBasicShipAddresseeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicShipAddresseeItem), var_export($jobSearchRowBasicShipAddresseeItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicShipAttentionItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicShipAttentionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicShipAttentionItem) ? get_class($jobSearchRowBasicShipAttentionItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicShipAttentionItem), var_export($jobSearchRowBasicShipAttentionItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicShipCityItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicShipCityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicShipCityItem) ? get_class($jobSearchRowBasicShipCityItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicShipCityItem), var_export($jobSearchRowBasicShipCityItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    public function addToShipCity(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipCity property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->shipCity[] = $item;
        return $this;
    }
    /**
     * Get shipCountry value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getShipCountry()
    {
        return $this->shipCountry;
    }
    /**
     * This method is responsible for validating the values passed to the setShipCountry method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipCountry method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipCountryForArrayConstraintsFromSetShipCountry(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicShipCountryItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicShipCountryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicShipCountryItem) ? get_class($jobSearchRowBasicShipCountryItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicShipCountryItem), var_export($jobSearchRowBasicShipCountryItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicShipCountryCodeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicShipCountryCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicShipCountryCodeItem) ? get_class($jobSearchRowBasicShipCountryCodeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicShipCountryCodeItem), var_export($jobSearchRowBasicShipCountryCodeItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicShipPhoneItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicShipPhoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicShipPhoneItem) ? get_class($jobSearchRowBasicShipPhoneItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicShipPhoneItem), var_export($jobSearchRowBasicShipPhoneItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    public function addToShipPhone(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shipPhone property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->shipPhone[] = $item;
        return $this;
    }
    /**
     * Get shipState value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShipState()
    {
        return $this->shipState;
    }
    /**
     * This method is responsible for validating the values passed to the setShipState method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipState method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipStateForArrayConstraintsFromSetShipState(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicShipStateItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicShipStateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicShipStateItem) ? get_class($jobSearchRowBasicShipStateItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicShipStateItem), var_export($jobSearchRowBasicShipStateItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicShipZipItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicShipZipItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicShipZipItem) ? get_class($jobSearchRowBasicShipZipItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicShipZipItem), var_export($jobSearchRowBasicShipZipItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 sourceServiceItemFromRateCard value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getSourceServiceItemFromRateCard()
    {
        return $this->sourceServiceItemFromRateCard;
    }
    /**
     * This method is responsible for validating the values passed to the setSourceServiceItemFromRateCard method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSourceServiceItemFromRateCard method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSourceServiceItemFromRateCardForArrayConstraintsFromSetSourceServiceItemFromRateCard(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicSourceServiceItemFromRateCardItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicSourceServiceItemFromRateCardItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicSourceServiceItemFromRateCardItem) ? get_class($jobSearchRowBasicSourceServiceItemFromRateCardItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicSourceServiceItemFromRateCardItem), var_export($jobSearchRowBasicSourceServiceItemFromRateCardItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The sourceServiceItemFromRateCard 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 sourceServiceItemFromRateCard value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $sourceServiceItemFromRateCard
     * @return \StructType\JobSearchRowBasic
     */
    public function setSourceServiceItemFromRateCard(array $sourceServiceItemFromRateCard = array())
    {
        // validation for constraint: array
        if ('' !== ($sourceServiceItemFromRateCardArrayErrorMessage = self::validateSourceServiceItemFromRateCardForArrayConstraintsFromSetSourceServiceItemFromRateCard($sourceServiceItemFromRateCard))) {
            throw new \InvalidArgumentException($sourceServiceItemFromRateCardArrayErrorMessage, __LINE__);
        }
        $this->sourceServiceItemFromRateCard = $sourceServiceItemFromRateCard;
        return $this;
    }
    /**
     * Add item to sourceServiceItemFromRateCard value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToSourceServiceItemFromRateCard(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The sourceServiceItemFromRateCard 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->sourceServiceItemFromRateCard[] = $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 $jobSearchRowBasicStartDateItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicStartDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($jobSearchRowBasicStartDateItem) ? get_class($jobSearchRowBasicStartDateItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicStartDateItem), var_export($jobSearchRowBasicStartDateItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 startDateBaseline value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getStartDateBaseline()
    {
        return $this->startDateBaseline;
    }
    /**
     * This method is responsible for validating the values passed to the setStartDateBaseline method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStartDateBaseline method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStartDateBaselineForArrayConstraintsFromSetStartDateBaseline(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicStartDateBaselineItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicStartDateBaselineItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($jobSearchRowBasicStartDateBaselineItem) ? get_class($jobSearchRowBasicStartDateBaselineItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicStartDateBaselineItem), var_export($jobSearchRowBasicStartDateBaselineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The startDateBaseline 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 startDateBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $startDateBaseline
     * @return \StructType\JobSearchRowBasic
     */
    public function setStartDateBaseline(array $startDateBaseline = array())
    {
        // validation for constraint: array
        if ('' !== ($startDateBaselineArrayErrorMessage = self::validateStartDateBaselineForArrayConstraintsFromSetStartDateBaseline($startDateBaseline))) {
            throw new \InvalidArgumentException($startDateBaselineArrayErrorMessage, __LINE__);
        }
        $this->startDateBaseline = $startDateBaseline;
        return $this;
    }
    /**
     * Add item to startDateBaseline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToStartDateBaseline(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The startDateBaseline 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->startDateBaseline[] = $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 $jobSearchRowBasicStateItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicStateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicStateItem) ? get_class($jobSearchRowBasicStateItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicStateItem), var_export($jobSearchRowBasicStateItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicSubscriptionItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicSubscriptionItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicSubscriptionItem) ? get_class($jobSearchRowBasicSubscriptionItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicSubscriptionItem), var_export($jobSearchRowBasicSubscriptionItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicSubscriptionDateItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicSubscriptionDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($jobSearchRowBasicSubscriptionDateItem) ? get_class($jobSearchRowBasicSubscriptionDateItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicSubscriptionDateItem), var_export($jobSearchRowBasicSubscriptionDateItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicSubscriptionStatusItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicSubscriptionStatusItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicSubscriptionStatusItem) ? get_class($jobSearchRowBasicSubscriptionStatusItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicSubscriptionStatusItem), var_export($jobSearchRowBasicSubscriptionStatusItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 $jobSearchRowBasicSubsidiaryItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicSubsidiaryItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicSubsidiaryItem) ? get_class($jobSearchRowBasicSubsidiaryItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicSubsidiaryItem), var_export($jobSearchRowBasicSubsidiaryItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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 timeApproval value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getTimeApproval()
    {
        return $this->timeApproval;
    }
    /**
     * This method is responsible for validating the values passed to the setTimeApproval method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTimeApproval method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTimeApprovalForArrayConstraintsFromSetTimeApproval(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicTimeApprovalItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicTimeApprovalItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($jobSearchRowBasicTimeApprovalItem) ? get_class($jobSearchRowBasicTimeApprovalItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicTimeApprovalItem), var_export($jobSearchRowBasicTimeApprovalItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The timeApproval 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 timeApproval value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $timeApproval
     * @return \StructType\JobSearchRowBasic
     */
    public function setTimeApproval(array $timeApproval = array())
    {
        // validation for constraint: array
        if ('' !== ($timeApprovalArrayErrorMessage = self::validateTimeApprovalForArrayConstraintsFromSetTimeApproval($timeApproval))) {
            throw new \InvalidArgumentException($timeApprovalArrayErrorMessage, __LINE__);
        }
        $this->timeApproval = $timeApproval;
        return $this;
    }
    /**
     * Add item to timeApproval value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToTimeApproval(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The timeApproval 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->timeApproval[] = $item;
        return $this;
    }
    /**
     * Get timeRemaining value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getTimeRemaining()
    {
        return $this->timeRemaining;
    }
    /**
     * This method is responsible for validating the values passed to the setTimeRemaining method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTimeRemaining method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTimeRemainingForArrayConstraintsFromSetTimeRemaining(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicTimeRemainingItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicTimeRemainingItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($jobSearchRowBasicTimeRemainingItem) ? get_class($jobSearchRowBasicTimeRemainingItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicTimeRemainingItem), var_export($jobSearchRowBasicTimeRemainingItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The timeRemaining 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 timeRemaining value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $timeRemaining
     * @return \StructType\JobSearchRowBasic
     */
    public function setTimeRemaining(array $timeRemaining = array())
    {
        // validation for constraint: array
        if ('' !== ($timeRemainingArrayErrorMessage = self::validateTimeRemainingForArrayConstraintsFromSetTimeRemaining($timeRemaining))) {
            throw new \InvalidArgumentException($timeRemainingArrayErrorMessage, __LINE__);
        }
        $this->timeRemaining = $timeRemaining;
        return $this;
    }
    /**
     * Add item to timeRemaining value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToTimeRemaining(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The timeRemaining 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->timeRemaining[] = $item;
        return $this;
    }
    /**
     * Get usePercentCompleteOverride value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getUsePercentCompleteOverride()
    {
        return $this->usePercentCompleteOverride;
    }
    /**
     * This method is responsible for validating the values passed to the setUsePercentCompleteOverride method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUsePercentCompleteOverride method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUsePercentCompleteOverrideForArrayConstraintsFromSetUsePercentCompleteOverride(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $jobSearchRowBasicUsePercentCompleteOverrideItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicUsePercentCompleteOverrideItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($jobSearchRowBasicUsePercentCompleteOverrideItem) ? get_class($jobSearchRowBasicUsePercentCompleteOverrideItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicUsePercentCompleteOverrideItem), var_export($jobSearchRowBasicUsePercentCompleteOverrideItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The usePercentCompleteOverride 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 usePercentCompleteOverride value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $usePercentCompleteOverride
     * @return \StructType\JobSearchRowBasic
     */
    public function setUsePercentCompleteOverride(array $usePercentCompleteOverride = array())
    {
        // validation for constraint: array
        if ('' !== ($usePercentCompleteOverrideArrayErrorMessage = self::validateUsePercentCompleteOverrideForArrayConstraintsFromSetUsePercentCompleteOverride($usePercentCompleteOverride))) {
            throw new \InvalidArgumentException($usePercentCompleteOverrideArrayErrorMessage, __LINE__);
        }
        $this->usePercentCompleteOverride = $usePercentCompleteOverride;
        return $this;
    }
    /**
     * Add item to usePercentCompleteOverride value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\JobSearchRowBasic
     */
    public function addToUsePercentCompleteOverride(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The usePercentCompleteOverride 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->usePercentCompleteOverride[] = $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 $jobSearchRowBasicZipCodeItem) {
            // validation for constraint: itemType
            if (!$jobSearchRowBasicZipCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($jobSearchRowBasicZipCodeItem) ? get_class($jobSearchRowBasicZipCodeItem) : sprintf('%s(%s)', gettype($jobSearchRowBasicZipCodeItem), var_export($jobSearchRowBasicZipCodeItem, 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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    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\JobSearchRowBasic
     */
    public function setCustomFieldList(\StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this->customFieldList = $customFieldList;
        return $this;
    }
}
