<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ItemSearchRowBasic StructType
 * @subpackage Structs
 */
class ItemSearchRowBasic extends SearchRowBasic
{
    /**
     * The accBookRevRecForecastRule
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $accBookRevRecForecastRule;
    /**
     * The accountingBook
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $accountingBook;
    /**
     * The accountingBookAmortization
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $accountingBookAmortization;
    /**
     * The accountingBookCreatePlansOn
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $accountingBookCreatePlansOn;
    /**
     * The accountingBookRevRecRule
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $accountingBookRevRecRule;
    /**
     * The accountingBookRevRecSchedule
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $accountingBookRevRecSchedule;
    /**
     * The allowedShippingMethod
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $allowedShippingMethod;
    /**
     * The alternateDemandSourceItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $alternateDemandSourceItem;
    /**
     * The assetAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $assetAccount;
    /**
     * The atpLeadTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $atpLeadTime;
    /**
     * The atpMethod
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $atpMethod;
    /**
     * The autoLeadTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $autoLeadTime;
    /**
     * The autoPreferredStockLevel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $autoPreferredStockLevel;
    /**
     * The autoReorderPoint
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $autoReorderPoint;
    /**
     * The availableToPartners
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $availableToPartners;
    /**
     * The averageCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $averageCost;
    /**
     * The backwardConsumptionDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $backwardConsumptionDays;
    /**
     * The basePrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $basePrice;
    /**
     * The billExchRateVarianceAcct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $billExchRateVarianceAcct;
    /**
     * The billPriceVarianceAcct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $billPriceVarianceAcct;
    /**
     * The billQtyVarianceAcct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $billQtyVarianceAcct;
    /**
     * The binNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $binNumber;
    /**
     * The binOnHandAvail
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $binOnHandAvail;
    /**
     * The binOnHandCount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $binOnHandCount;
    /**
     * The bomQuantity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $bomQuantity;
    /**
     * The buildEntireAssembly
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $buildEntireAssembly;
    /**
     * The buildTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $buildTime;
    /**
     * The buyItNowPrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $buyItNowPrice;
    /**
     * The category
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $category;
    /**
     * The categoryPreferred
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $categoryPreferred;
    /**
     * The class
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $class;
    /**
     * The componentYield
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $componentYield;
    /**
     * The consumptionUnit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $consumptionUnit;
    /**
     * The contingentRevenueHandling
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $contingentRevenueHandling;
    /**
     * The copyDescription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $copyDescription;
    /**
     * The correlatedItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $correlatedItem;
    /**
     * The correlatedItemCorrelation
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $correlatedItemCorrelation;
    /**
     * The correlatedItemCount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $correlatedItemCount;
    /**
     * The correlatedItemLift
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $correlatedItemLift;
    /**
     * The correlatedItemPurchaseRate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $correlatedItemPurchaseRate;
    /**
     * The cost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $cost;
    /**
     * The costAccountingStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $costAccountingStatus;
    /**
     * The costCategory
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $costCategory;
    /**
     * The costEstimate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $costEstimate;
    /**
     * The costEstimateType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $costEstimateType;
    /**
     * The costingMethod
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $costingMethod;
    /**
     * The countryOfManufacture
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $countryOfManufacture;
    /**
     * The created
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $created;
    /**
     * The createJob
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $createJob;
    /**
     * The createRevenuePlansOn
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $createRevenuePlansOn;
    /**
     * The custReturnVarianceAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $custReturnVarianceAccount;
    /**
     * The dateViewed
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $dateViewed;
    /**
     * The daysBeforeExpiration
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $daysBeforeExpiration;
    /**
     * The defaultReturnCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $defaultReturnCost;
    /**
     * The defaultShippingMethod
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $defaultShippingMethod;
    /**
     * The deferredExpenseAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $deferredExpenseAccount;
    /**
     * The deferredRevenueAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $deferredRevenueAccount;
    /**
     * The deferRevRec
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $deferRevRec;
    /**
     * The demandModifier
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $demandModifier;
    /**
     * The demandSource
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $demandSource;
    /**
     * The demandTimeFence
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $demandTimeFence;
    /**
     * The department
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $department;
    /**
     * The departmentnohierarchy
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $departmentnohierarchy;
    /**
     * The directRevenuePosting
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $directRevenuePosting;
    /**
     * The displayIneBayStore
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $displayIneBayStore;
    /**
     * The displayName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $displayName;
    /**
     * The distributionCategory
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $distributionCategory;
    /**
     * The distributionNetwork
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $distributionNetwork;
    /**
     * The dontShowPrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $dontShowPrice;
    /**
     * The eBayItemDescription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $eBayItemDescription;
    /**
     * The eBayItemSubtitle
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $eBayItemSubtitle;
    /**
     * The eBayItemTitle
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $eBayItemTitle;
    /**
     * The ebayRelistingOption
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $ebayRelistingOption;
    /**
     * The effectiveBomControl
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $effectiveBomControl;
    /**
     * The effectiveDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $effectiveDate;
    /**
     * The effectiveRevision
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $effectiveRevision;
    /**
     * The endAuctionsWhenOutOfStock
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $endAuctionsWhenOutOfStock;
    /**
     * The excludeFromSitemap
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $excludeFromSitemap;
    /**
     * The expenseAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $expenseAccount;
    /**
     * The externalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $externalId;
    /**
     * The featuredDescription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $featuredDescription;
    /**
     * The feedDescription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $feedDescription;
    /**
     * The feedName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $feedName;
    /**
     * The fixedLotSize
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $fixedLotSize;
    /**
     * The forwardConsumptionDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $forwardConsumptionDays;
    /**
     * The fraudRisk
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $fraudRisk;
    /**
     * The froogleProductFeed
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $froogleProductFeed;
    /**
     * The futureHorizon
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $futureHorizon;
    /**
     * The fxCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $fxCost;
    /**
     * The gainLossAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $gainLossAccount;
    /**
     * The generateAccruals
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $generateAccruals;
    /**
     * The giftCertAuthCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $giftCertAuthCode;
    /**
     * The giftCertEmail
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $giftCertEmail;
    /**
     * The giftCertExpirationDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $giftCertExpirationDate;
    /**
     * The giftCertFrom
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $giftCertFrom;
    /**
     * The giftCertMessage
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $giftCertMessage;
    /**
     * The giftCertOriginalAmount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $giftCertOriginalAmount;
    /**
     * The giftCertRecipient
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $giftCertRecipient;
    /**
     * The hierarchyNode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $hierarchyNode;
    /**
     * The hierarchyVersion
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $hierarchyVersion;
    /**
     * The hits
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $hits;
    /**
     * The imageUrl
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $imageUrl;
    /**
     * The includeChildren
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $includeChildren;
    /**
     * The incomeAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $incomeAccount;
    /**
     * The intercoDefRevAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $intercoDefRevAccount;
    /**
     * The intercoExpenseAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $intercoExpenseAccount;
    /**
     * The intercoIncomeAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $intercoIncomeAccount;
    /**
     * The internalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $internalId;
    /**
     * The inventoryLocation
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $inventoryLocation;
    /**
     * The invtClassification
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $invtClassification;
    /**
     * The invtCountInterval
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $invtCountInterval;
    /**
     * The isAvailable
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isAvailable;
    /**
     * The isDropShipItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isDropShipItem;
    /**
     * The isFulfillable
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isFulfillable;
    /**
     * The isGcoCompliant
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isGcoCompliant;
    /**
     * The isInactive
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isInactive;
    /**
     * The isLotItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isLotItem;
    /**
     * The isOnline
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isOnline;
    /**
     * The isSerialItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isSerialItem;
    /**
     * The isSpecialOrderItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isSpecialOrderItem;
    /**
     * The isSpecialWorkOrderItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isSpecialWorkOrderItem;
    /**
     * The isStorePickupAllowed
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isStorePickupAllowed;
    /**
     * The issueProduct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $issueProduct;
    /**
     * The isTaxable
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isTaxable;
    /**
     * The isVsoeBundle
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isVsoeBundle;
    /**
     * The isWip
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isWip;
    /**
     * The itemId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $itemId;
    /**
     * The itemRevenueCategory
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $itemRevenueCategory;
    /**
     * The itemUrl
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $itemUrl;
    /**
     * The lastInvtCountDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastInvtCountDate;
    /**
     * The lastPurchasePrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $lastPurchasePrice;
    /**
     * The lastQuantityAvailableChange
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastQuantityAvailableChange;
    /**
     * The leadTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $leadTime;
    /**
     * The liabilityAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $liabilityAccount;
    /**
     * The listingDuration
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $listingDuration;
    /**
     * The location
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $location;
    /**
     * The locationAllowStorePickup
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $locationAllowStorePickup;
    /**
     * The locationAtpLeadTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationAtpLeadTime;
    /**
     * The locationAverageCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationAverageCost;
    /**
     * The locationBinQuantityAvailable
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $locationBinQuantityAvailable;
    /**
     * The locationBuildTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationBuildTime;
    /**
     * The locationCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationCost;
    /**
     * The locationCostAccountingStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $locationCostAccountingStatus;
    /**
     * The locationDefaultReturnCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationDefaultReturnCost;
    /**
     * The locationDemandSource
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $locationDemandSource;
    /**
     * The locationDemandTimeFence
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $locationDemandTimeFence;
    /**
     * The locationFixedLotSize
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationFixedLotSize;
    /**
     * The locationInventoryCostTemplate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $locationInventoryCostTemplate;
    /**
     * The locationInvtClassification
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $locationInvtClassification;
    /**
     * The locationInvtCountInterval
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $locationInvtCountInterval;
    /**
     * The locationLastInvtCountDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $locationLastInvtCountDate;
    /**
     * The locationLeadTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $locationLeadTime;
    /**
     * The locationNextInvtCountDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $locationNextInvtCountDate;
    /**
     * The locationPeriodicLotSizeDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $locationPeriodicLotSizeDays;
    /**
     * The locationPeriodicLotSizeType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $locationPeriodicLotSizeType;
    /**
     * The locationPreferredStockLevel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationPreferredStockLevel;
    /**
     * The locationQtyAvailForStorePickup
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationQtyAvailForStorePickup;
    /**
     * The locationQuantityAvailable
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationQuantityAvailable;
    /**
     * The locationQuantityBackOrdered
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationQuantityBackOrdered;
    /**
     * The locationQuantityCommitted
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationQuantityCommitted;
    /**
     * The locationQuantityInTransit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationQuantityInTransit;
    /**
     * The locationQuantityOnHand
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationQuantityOnHand;
    /**
     * The locationQuantityOnOrder
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationQuantityOnOrder;
    /**
     * The locationReOrderPoint
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationReOrderPoint;
    /**
     * The locationRescheduleInDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $locationRescheduleInDays;
    /**
     * The locationRescheduleOutDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $locationRescheduleOutDays;
    /**
     * The locationSafetyStockLevel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationSafetyStockLevel;
    /**
     * The locationStorePickupBufferStock
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationStorePickupBufferStock;
    /**
     * The locationSupplyLotSizingMethod
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $locationSupplyLotSizingMethod;
    /**
     * The locationSupplyTimeFence
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $locationSupplyTimeFence;
    /**
     * The locationSupplyType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $locationSupplyType;
    /**
     * The locationTotalValue
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $locationTotalValue;
    /**
     * The locBackwardConsumptionDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $locBackwardConsumptionDays;
    /**
     * The locForwardConsumptionDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $locForwardConsumptionDays;
    /**
     * The manufacturer
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $manufacturer;
    /**
     * The manufacturerAddr1
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $manufacturerAddr1;
    /**
     * The manufacturerCity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $manufacturerCity;
    /**
     * The manufacturerState
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $manufacturerState;
    /**
     * The manufacturerTariff
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $manufacturerTariff;
    /**
     * The manufacturerTaxId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $manufacturerTaxId;
    /**
     * The manufacturerZip
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $manufacturerZip;
    /**
     * The manufacturingChargeItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $manufacturingChargeItem;
    /**
     * The matchBillToReceipt
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $matchBillToReceipt;
    /**
     * The maximumQuantity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $maximumQuantity;
    /**
     * The memberItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $memberItem;
    /**
     * The memberQuantity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $memberQuantity;
    /**
     * The metaTagHtml
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $metaTagHtml;
    /**
     * The minimumQuantity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $minimumQuantity;
    /**
     * The modified
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $modified;
    /**
     * The mossApplies
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $mossApplies;
    /**
     * The mpn
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $mpn;
    /**
     * The multManufactureAddr
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $multManufactureAddr;
    /**
     * The nextagCategory
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $nextagCategory;
    /**
     * The nextagProductFeed
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $nextagProductFeed;
    /**
     * The nextInvtCountDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $nextInvtCountDate;
    /**
     * The noPriceMessage
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $noPriceMessage;
    /**
     * The numActiveListings
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $numActiveListings;
    /**
     * The numberAllowedDownloads
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $numberAllowedDownloads;
    /**
     * The numCurrentlyListed
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $numCurrentlyListed;
    /**
     * The obsoleteDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $obsoleteDate;
    /**
     * The obsoleteRevision
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $obsoleteRevision;
    /**
     * The offerSupport
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $offerSupport;
    /**
     * The onlineCustomerPrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $onlineCustomerPrice;
    /**
     * The onlinePrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $onlinePrice;
    /**
     * The onSpecial
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $onSpecial;
    /**
     * The otherPrices
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $otherPrices;
    /**
     * The otherVendor
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $otherVendor;
    /**
     * The outOfStockBehavior
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $outOfStockBehavior;
    /**
     * The outOfStockMessage
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $outOfStockMessage;
    /**
     * The overallQuantityPricingType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $overallQuantityPricingType;
    /**
     * The overheadType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $overheadType;
    /**
     * The pageTitle
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $pageTitle;
    /**
     * The parent
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $parent;
    /**
     * The periodicLotSizeDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $periodicLotSizeDays;
    /**
     * The periodicLotSizeType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $periodicLotSizeType;
    /**
     * The preferenceCriterion
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $preferenceCriterion;
    /**
     * The preferredBin
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $preferredBin;
    /**
     * The preferredLocation
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $preferredLocation;
    /**
     * The preferredStockLevel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $preferredStockLevel;
    /**
     * The preferredStockLevelDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $preferredStockLevelDays;
    /**
     * The pricesIncludeTax
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $pricesIncludeTax;
    /**
     * The pricingGroup
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $pricingGroup;
    /**
     * The primaryCategory
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $primaryCategory;
    /**
     * The prodPriceVarianceAcct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $prodPriceVarianceAcct;
    /**
     * The prodQtyVarianceAcct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $prodQtyVarianceAcct;
    /**
     * The purchaseDescription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $purchaseDescription;
    /**
     * The purchaseOrderAmount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $purchaseOrderAmount;
    /**
     * The purchaseOrderQuantity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $purchaseOrderQuantity;
    /**
     * The purchaseOrderQuantityDiff
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $purchaseOrderQuantityDiff;
    /**
     * The purchasePriceVarianceAcct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $purchasePriceVarianceAcct;
    /**
     * The purchaseUnit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $purchaseUnit;
    /**
     * The quantityAvailable
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $quantityAvailable;
    /**
     * The quantityBackOrdered
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $quantityBackOrdered;
    /**
     * The quantityCommitted
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $quantityCommitted;
    /**
     * The quantityOnHand
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $quantityOnHand;
    /**
     * The quantityOnOrder
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $quantityOnOrder;
    /**
     * The quantityPricingSchedule
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $quantityPricingSchedule;
    /**
     * The receiptAmount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $receiptAmount;
    /**
     * The receiptQuantity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $receiptQuantity;
    /**
     * The receiptQuantityDiff
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $receiptQuantityDiff;
    /**
     * The reorderMultiple
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $reorderMultiple;
    /**
     * The reOrderPoint
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $reOrderPoint;
    /**
     * The rescheduleInDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $rescheduleInDays;
    /**
     * The rescheduleOutDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $rescheduleOutDays;
    /**
     * The reservePrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $reservePrice;
    /**
     * The revenueAllocationGroup
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $revenueAllocationGroup;
    /**
     * The revenueRecognitionRule
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $revenueRecognitionRule;
    /**
     * The revRecForecastRule
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $revRecForecastRule;
    /**
     * The revReclassFXAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $revReclassFXAccount;
    /**
     * The revRecSchedule
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $revRecSchedule;
    /**
     * The roundUpAsComponent
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $roundUpAsComponent;
    /**
     * The safetyStockLevel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $safetyStockLevel;
    /**
     * The safetyStockLevelDays
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $safetyStockLevelDays;
    /**
     * The salesDescription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $salesDescription;
    /**
     * The salesTaxCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $salesTaxCode;
    /**
     * The saleUnit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $saleUnit;
    /**
     * The sameAsPrimaryBookAmortization
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $sameAsPrimaryBookAmortization;
    /**
     * The sameAsPrimaryBookRevRec
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $sameAsPrimaryBookRevRec;
    /**
     * The scheduleBCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $scheduleBCode;
    /**
     * The scheduleBNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $scheduleBNumber;
    /**
     * The scheduleBQuantity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $scheduleBQuantity;
    /**
     * The scrapAcct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $scrapAcct;
    /**
     * The searchKeywords
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $searchKeywords;
    /**
     * The seasonalDemand
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $seasonalDemand;
    /**
     * The sellOnEBay
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $sellOnEBay;
    /**
     * The serialNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $serialNumber;
    /**
     * The serialNumberLocation
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $serialNumberLocation;
    /**
     * The shipIndividually
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $shipIndividually;
    /**
     * The shipPackage
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $shipPackage;
    /**
     * The shippingCarrier
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $shippingCarrier;
    /**
     * The shippingRate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $shippingRate;
    /**
     * The shoppingDotComCategory
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $shoppingDotComCategory;
    /**
     * The shoppingProductFeed
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $shoppingProductFeed;
    /**
     * The shopzillaCategoryId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $shopzillaCategoryId;
    /**
     * The shopzillaProductFeed
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $shopzillaProductFeed;
    /**
     * The sitemapPriority
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $sitemapPriority;
    /**
     * The softDescriptor
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $softDescriptor;
    /**
     * The startingPrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $startingPrice;
    /**
     * The stockDescription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $stockDescription;
    /**
     * The stockUnit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $stockUnit;
    /**
     * The storeDescription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $storeDescription;
    /**
     * The storeDetailedDescription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $storeDetailedDescription;
    /**
     * The storeDisplayImage
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $storeDisplayImage;
    /**
     * The storeDisplayName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $storeDisplayName;
    /**
     * The storeDisplayThumbnail
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $storeDisplayThumbnail;
    /**
     * The subsidiary
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $subsidiary;
    /**
     * The subType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $subType;
    /**
     * The supplyLotSizingMethod
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $supplyLotSizingMethod;
    /**
     * The supplyReplenishmentMethod
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $supplyReplenishmentMethod;
    /**
     * The supplyTimeFence
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $supplyTimeFence;
    /**
     * The supplyType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $supplyType;
    /**
     * The taxSchedule
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $taxSchedule;
    /**
     * The thumbNailUrl
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $thumbNailUrl;
    /**
     * The totalValue
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $totalValue;
    /**
     * The trackLandedCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $trackLandedCost;
    /**
     * The transferPrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $transferPrice;
    /**
     * The type
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $type;
    /**
     * The unbuildVarianceAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $unbuildVarianceAccount;
    /**
     * The unitsType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $unitsType;
    /**
     * The upcCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $upcCode;
    /**
     * The urlComponent
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $urlComponent;
    /**
     * The useBins
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $useBins;
    /**
     * The useComponentYield
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $useComponentYield;
    /**
     * The useMarginalRates
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $useMarginalRates;
    /**
     * The vendor
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $vendor;
    /**
     * The vendorCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $vendorCode;
    /**
     * The vendorCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $vendorCost;
    /**
     * The vendorCostEntered
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $vendorCostEntered;
    /**
     * The vendorName
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $vendorName;
    /**
     * The vendorPriceCurrency
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $vendorPriceCurrency;
    /**
     * The vendorSchedule
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $vendorSchedule;
    /**
     * The vendReturnVarianceAccount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $vendReturnVarianceAccount;
    /**
     * The vsoeDeferral
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $vsoeDeferral;
    /**
     * The vsoeDelivered
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $vsoeDelivered;
    /**
     * The vsoePermitDiscount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $vsoePermitDiscount;
    /**
     * The vsoePrice
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $vsoePrice;
    /**
     * The vsoeSopGroup
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $vsoeSopGroup;
    /**
     * The webSite
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $webSite;
    /**
     * The weight
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $weight;
    /**
     * The weightUnit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $weightUnit;
    /**
     * The wipAcct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $wipAcct;
    /**
     * The wipVarianceAcct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $wipVarianceAcct;
    /**
     * The yahooProductFeed
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $yahooProductFeed;
    /**
     * The customFieldList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\SearchColumnCustomFieldList
     */
    public $customFieldList;
    /**
     * Constructor method for ItemSearchRowBasic
     * @uses ItemSearchRowBasic::setAccBookRevRecForecastRule()
     * @uses ItemSearchRowBasic::setAccountingBook()
     * @uses ItemSearchRowBasic::setAccountingBookAmortization()
     * @uses ItemSearchRowBasic::setAccountingBookCreatePlansOn()
     * @uses ItemSearchRowBasic::setAccountingBookRevRecRule()
     * @uses ItemSearchRowBasic::setAccountingBookRevRecSchedule()
     * @uses ItemSearchRowBasic::setAllowedShippingMethod()
     * @uses ItemSearchRowBasic::setAlternateDemandSourceItem()
     * @uses ItemSearchRowBasic::setAssetAccount()
     * @uses ItemSearchRowBasic::setAtpLeadTime()
     * @uses ItemSearchRowBasic::setAtpMethod()
     * @uses ItemSearchRowBasic::setAutoLeadTime()
     * @uses ItemSearchRowBasic::setAutoPreferredStockLevel()
     * @uses ItemSearchRowBasic::setAutoReorderPoint()
     * @uses ItemSearchRowBasic::setAvailableToPartners()
     * @uses ItemSearchRowBasic::setAverageCost()
     * @uses ItemSearchRowBasic::setBackwardConsumptionDays()
     * @uses ItemSearchRowBasic::setBasePrice()
     * @uses ItemSearchRowBasic::setBillExchRateVarianceAcct()
     * @uses ItemSearchRowBasic::setBillPriceVarianceAcct()
     * @uses ItemSearchRowBasic::setBillQtyVarianceAcct()
     * @uses ItemSearchRowBasic::setBinNumber()
     * @uses ItemSearchRowBasic::setBinOnHandAvail()
     * @uses ItemSearchRowBasic::setBinOnHandCount()
     * @uses ItemSearchRowBasic::setBomQuantity()
     * @uses ItemSearchRowBasic::setBuildEntireAssembly()
     * @uses ItemSearchRowBasic::setBuildTime()
     * @uses ItemSearchRowBasic::setBuyItNowPrice()
     * @uses ItemSearchRowBasic::setCategory()
     * @uses ItemSearchRowBasic::setCategoryPreferred()
     * @uses ItemSearchRowBasic::setClass()
     * @uses ItemSearchRowBasic::setComponentYield()
     * @uses ItemSearchRowBasic::setConsumptionUnit()
     * @uses ItemSearchRowBasic::setContingentRevenueHandling()
     * @uses ItemSearchRowBasic::setCopyDescription()
     * @uses ItemSearchRowBasic::setCorrelatedItem()
     * @uses ItemSearchRowBasic::setCorrelatedItemCorrelation()
     * @uses ItemSearchRowBasic::setCorrelatedItemCount()
     * @uses ItemSearchRowBasic::setCorrelatedItemLift()
     * @uses ItemSearchRowBasic::setCorrelatedItemPurchaseRate()
     * @uses ItemSearchRowBasic::setCost()
     * @uses ItemSearchRowBasic::setCostAccountingStatus()
     * @uses ItemSearchRowBasic::setCostCategory()
     * @uses ItemSearchRowBasic::setCostEstimate()
     * @uses ItemSearchRowBasic::setCostEstimateType()
     * @uses ItemSearchRowBasic::setCostingMethod()
     * @uses ItemSearchRowBasic::setCountryOfManufacture()
     * @uses ItemSearchRowBasic::setCreated()
     * @uses ItemSearchRowBasic::setCreateJob()
     * @uses ItemSearchRowBasic::setCreateRevenuePlansOn()
     * @uses ItemSearchRowBasic::setCustReturnVarianceAccount()
     * @uses ItemSearchRowBasic::setDateViewed()
     * @uses ItemSearchRowBasic::setDaysBeforeExpiration()
     * @uses ItemSearchRowBasic::setDefaultReturnCost()
     * @uses ItemSearchRowBasic::setDefaultShippingMethod()
     * @uses ItemSearchRowBasic::setDeferredExpenseAccount()
     * @uses ItemSearchRowBasic::setDeferredRevenueAccount()
     * @uses ItemSearchRowBasic::setDeferRevRec()
     * @uses ItemSearchRowBasic::setDemandModifier()
     * @uses ItemSearchRowBasic::setDemandSource()
     * @uses ItemSearchRowBasic::setDemandTimeFence()
     * @uses ItemSearchRowBasic::setDepartment()
     * @uses ItemSearchRowBasic::setDepartmentnohierarchy()
     * @uses ItemSearchRowBasic::setDirectRevenuePosting()
     * @uses ItemSearchRowBasic::setDisplayIneBayStore()
     * @uses ItemSearchRowBasic::setDisplayName()
     * @uses ItemSearchRowBasic::setDistributionCategory()
     * @uses ItemSearchRowBasic::setDistributionNetwork()
     * @uses ItemSearchRowBasic::setDontShowPrice()
     * @uses ItemSearchRowBasic::setEBayItemDescription()
     * @uses ItemSearchRowBasic::setEBayItemSubtitle()
     * @uses ItemSearchRowBasic::setEBayItemTitle()
     * @uses ItemSearchRowBasic::setEbayRelistingOption()
     * @uses ItemSearchRowBasic::setEffectiveBomControl()
     * @uses ItemSearchRowBasic::setEffectiveDate()
     * @uses ItemSearchRowBasic::setEffectiveRevision()
     * @uses ItemSearchRowBasic::setEndAuctionsWhenOutOfStock()
     * @uses ItemSearchRowBasic::setExcludeFromSitemap()
     * @uses ItemSearchRowBasic::setExpenseAccount()
     * @uses ItemSearchRowBasic::setExternalId()
     * @uses ItemSearchRowBasic::setFeaturedDescription()
     * @uses ItemSearchRowBasic::setFeedDescription()
     * @uses ItemSearchRowBasic::setFeedName()
     * @uses ItemSearchRowBasic::setFixedLotSize()
     * @uses ItemSearchRowBasic::setForwardConsumptionDays()
     * @uses ItemSearchRowBasic::setFraudRisk()
     * @uses ItemSearchRowBasic::setFroogleProductFeed()
     * @uses ItemSearchRowBasic::setFutureHorizon()
     * @uses ItemSearchRowBasic::setFxCost()
     * @uses ItemSearchRowBasic::setGainLossAccount()
     * @uses ItemSearchRowBasic::setGenerateAccruals()
     * @uses ItemSearchRowBasic::setGiftCertAuthCode()
     * @uses ItemSearchRowBasic::setGiftCertEmail()
     * @uses ItemSearchRowBasic::setGiftCertExpirationDate()
     * @uses ItemSearchRowBasic::setGiftCertFrom()
     * @uses ItemSearchRowBasic::setGiftCertMessage()
     * @uses ItemSearchRowBasic::setGiftCertOriginalAmount()
     * @uses ItemSearchRowBasic::setGiftCertRecipient()
     * @uses ItemSearchRowBasic::setHierarchyNode()
     * @uses ItemSearchRowBasic::setHierarchyVersion()
     * @uses ItemSearchRowBasic::setHits()
     * @uses ItemSearchRowBasic::setImageUrl()
     * @uses ItemSearchRowBasic::setIncludeChildren()
     * @uses ItemSearchRowBasic::setIncomeAccount()
     * @uses ItemSearchRowBasic::setIntercoDefRevAccount()
     * @uses ItemSearchRowBasic::setIntercoExpenseAccount()
     * @uses ItemSearchRowBasic::setIntercoIncomeAccount()
     * @uses ItemSearchRowBasic::setInternalId()
     * @uses ItemSearchRowBasic::setInventoryLocation()
     * @uses ItemSearchRowBasic::setInvtClassification()
     * @uses ItemSearchRowBasic::setInvtCountInterval()
     * @uses ItemSearchRowBasic::setIsAvailable()
     * @uses ItemSearchRowBasic::setIsDropShipItem()
     * @uses ItemSearchRowBasic::setIsFulfillable()
     * @uses ItemSearchRowBasic::setIsGcoCompliant()
     * @uses ItemSearchRowBasic::setIsInactive()
     * @uses ItemSearchRowBasic::setIsLotItem()
     * @uses ItemSearchRowBasic::setIsOnline()
     * @uses ItemSearchRowBasic::setIsSerialItem()
     * @uses ItemSearchRowBasic::setIsSpecialOrderItem()
     * @uses ItemSearchRowBasic::setIsSpecialWorkOrderItem()
     * @uses ItemSearchRowBasic::setIsStorePickupAllowed()
     * @uses ItemSearchRowBasic::setIssueProduct()
     * @uses ItemSearchRowBasic::setIsTaxable()
     * @uses ItemSearchRowBasic::setIsVsoeBundle()
     * @uses ItemSearchRowBasic::setIsWip()
     * @uses ItemSearchRowBasic::setItemId()
     * @uses ItemSearchRowBasic::setItemRevenueCategory()
     * @uses ItemSearchRowBasic::setItemUrl()
     * @uses ItemSearchRowBasic::setLastInvtCountDate()
     * @uses ItemSearchRowBasic::setLastPurchasePrice()
     * @uses ItemSearchRowBasic::setLastQuantityAvailableChange()
     * @uses ItemSearchRowBasic::setLeadTime()
     * @uses ItemSearchRowBasic::setLiabilityAccount()
     * @uses ItemSearchRowBasic::setListingDuration()
     * @uses ItemSearchRowBasic::setLocation()
     * @uses ItemSearchRowBasic::setLocationAllowStorePickup()
     * @uses ItemSearchRowBasic::setLocationAtpLeadTime()
     * @uses ItemSearchRowBasic::setLocationAverageCost()
     * @uses ItemSearchRowBasic::setLocationBinQuantityAvailable()
     * @uses ItemSearchRowBasic::setLocationBuildTime()
     * @uses ItemSearchRowBasic::setLocationCost()
     * @uses ItemSearchRowBasic::setLocationCostAccountingStatus()
     * @uses ItemSearchRowBasic::setLocationDefaultReturnCost()
     * @uses ItemSearchRowBasic::setLocationDemandSource()
     * @uses ItemSearchRowBasic::setLocationDemandTimeFence()
     * @uses ItemSearchRowBasic::setLocationFixedLotSize()
     * @uses ItemSearchRowBasic::setLocationInventoryCostTemplate()
     * @uses ItemSearchRowBasic::setLocationInvtClassification()
     * @uses ItemSearchRowBasic::setLocationInvtCountInterval()
     * @uses ItemSearchRowBasic::setLocationLastInvtCountDate()
     * @uses ItemSearchRowBasic::setLocationLeadTime()
     * @uses ItemSearchRowBasic::setLocationNextInvtCountDate()
     * @uses ItemSearchRowBasic::setLocationPeriodicLotSizeDays()
     * @uses ItemSearchRowBasic::setLocationPeriodicLotSizeType()
     * @uses ItemSearchRowBasic::setLocationPreferredStockLevel()
     * @uses ItemSearchRowBasic::setLocationQtyAvailForStorePickup()
     * @uses ItemSearchRowBasic::setLocationQuantityAvailable()
     * @uses ItemSearchRowBasic::setLocationQuantityBackOrdered()
     * @uses ItemSearchRowBasic::setLocationQuantityCommitted()
     * @uses ItemSearchRowBasic::setLocationQuantityInTransit()
     * @uses ItemSearchRowBasic::setLocationQuantityOnHand()
     * @uses ItemSearchRowBasic::setLocationQuantityOnOrder()
     * @uses ItemSearchRowBasic::setLocationReOrderPoint()
     * @uses ItemSearchRowBasic::setLocationRescheduleInDays()
     * @uses ItemSearchRowBasic::setLocationRescheduleOutDays()
     * @uses ItemSearchRowBasic::setLocationSafetyStockLevel()
     * @uses ItemSearchRowBasic::setLocationStorePickupBufferStock()
     * @uses ItemSearchRowBasic::setLocationSupplyLotSizingMethod()
     * @uses ItemSearchRowBasic::setLocationSupplyTimeFence()
     * @uses ItemSearchRowBasic::setLocationSupplyType()
     * @uses ItemSearchRowBasic::setLocationTotalValue()
     * @uses ItemSearchRowBasic::setLocBackwardConsumptionDays()
     * @uses ItemSearchRowBasic::setLocForwardConsumptionDays()
     * @uses ItemSearchRowBasic::setManufacturer()
     * @uses ItemSearchRowBasic::setManufacturerAddr1()
     * @uses ItemSearchRowBasic::setManufacturerCity()
     * @uses ItemSearchRowBasic::setManufacturerState()
     * @uses ItemSearchRowBasic::setManufacturerTariff()
     * @uses ItemSearchRowBasic::setManufacturerTaxId()
     * @uses ItemSearchRowBasic::setManufacturerZip()
     * @uses ItemSearchRowBasic::setManufacturingChargeItem()
     * @uses ItemSearchRowBasic::setMatchBillToReceipt()
     * @uses ItemSearchRowBasic::setMaximumQuantity()
     * @uses ItemSearchRowBasic::setMemberItem()
     * @uses ItemSearchRowBasic::setMemberQuantity()
     * @uses ItemSearchRowBasic::setMetaTagHtml()
     * @uses ItemSearchRowBasic::setMinimumQuantity()
     * @uses ItemSearchRowBasic::setModified()
     * @uses ItemSearchRowBasic::setMossApplies()
     * @uses ItemSearchRowBasic::setMpn()
     * @uses ItemSearchRowBasic::setMultManufactureAddr()
     * @uses ItemSearchRowBasic::setNextagCategory()
     * @uses ItemSearchRowBasic::setNextagProductFeed()
     * @uses ItemSearchRowBasic::setNextInvtCountDate()
     * @uses ItemSearchRowBasic::setNoPriceMessage()
     * @uses ItemSearchRowBasic::setNumActiveListings()
     * @uses ItemSearchRowBasic::setNumberAllowedDownloads()
     * @uses ItemSearchRowBasic::setNumCurrentlyListed()
     * @uses ItemSearchRowBasic::setObsoleteDate()
     * @uses ItemSearchRowBasic::setObsoleteRevision()
     * @uses ItemSearchRowBasic::setOfferSupport()
     * @uses ItemSearchRowBasic::setOnlineCustomerPrice()
     * @uses ItemSearchRowBasic::setOnlinePrice()
     * @uses ItemSearchRowBasic::setOnSpecial()
     * @uses ItemSearchRowBasic::setOtherPrices()
     * @uses ItemSearchRowBasic::setOtherVendor()
     * @uses ItemSearchRowBasic::setOutOfStockBehavior()
     * @uses ItemSearchRowBasic::setOutOfStockMessage()
     * @uses ItemSearchRowBasic::setOverallQuantityPricingType()
     * @uses ItemSearchRowBasic::setOverheadType()
     * @uses ItemSearchRowBasic::setPageTitle()
     * @uses ItemSearchRowBasic::setParent()
     * @uses ItemSearchRowBasic::setPeriodicLotSizeDays()
     * @uses ItemSearchRowBasic::setPeriodicLotSizeType()
     * @uses ItemSearchRowBasic::setPreferenceCriterion()
     * @uses ItemSearchRowBasic::setPreferredBin()
     * @uses ItemSearchRowBasic::setPreferredLocation()
     * @uses ItemSearchRowBasic::setPreferredStockLevel()
     * @uses ItemSearchRowBasic::setPreferredStockLevelDays()
     * @uses ItemSearchRowBasic::setPricesIncludeTax()
     * @uses ItemSearchRowBasic::setPricingGroup()
     * @uses ItemSearchRowBasic::setPrimaryCategory()
     * @uses ItemSearchRowBasic::setProdPriceVarianceAcct()
     * @uses ItemSearchRowBasic::setProdQtyVarianceAcct()
     * @uses ItemSearchRowBasic::setPurchaseDescription()
     * @uses ItemSearchRowBasic::setPurchaseOrderAmount()
     * @uses ItemSearchRowBasic::setPurchaseOrderQuantity()
     * @uses ItemSearchRowBasic::setPurchaseOrderQuantityDiff()
     * @uses ItemSearchRowBasic::setPurchasePriceVarianceAcct()
     * @uses ItemSearchRowBasic::setPurchaseUnit()
     * @uses ItemSearchRowBasic::setQuantityAvailable()
     * @uses ItemSearchRowBasic::setQuantityBackOrdered()
     * @uses ItemSearchRowBasic::setQuantityCommitted()
     * @uses ItemSearchRowBasic::setQuantityOnHand()
     * @uses ItemSearchRowBasic::setQuantityOnOrder()
     * @uses ItemSearchRowBasic::setQuantityPricingSchedule()
     * @uses ItemSearchRowBasic::setReceiptAmount()
     * @uses ItemSearchRowBasic::setReceiptQuantity()
     * @uses ItemSearchRowBasic::setReceiptQuantityDiff()
     * @uses ItemSearchRowBasic::setReorderMultiple()
     * @uses ItemSearchRowBasic::setReOrderPoint()
     * @uses ItemSearchRowBasic::setRescheduleInDays()
     * @uses ItemSearchRowBasic::setRescheduleOutDays()
     * @uses ItemSearchRowBasic::setReservePrice()
     * @uses ItemSearchRowBasic::setRevenueAllocationGroup()
     * @uses ItemSearchRowBasic::setRevenueRecognitionRule()
     * @uses ItemSearchRowBasic::setRevRecForecastRule()
     * @uses ItemSearchRowBasic::setRevReclassFXAccount()
     * @uses ItemSearchRowBasic::setRevRecSchedule()
     * @uses ItemSearchRowBasic::setRoundUpAsComponent()
     * @uses ItemSearchRowBasic::setSafetyStockLevel()
     * @uses ItemSearchRowBasic::setSafetyStockLevelDays()
     * @uses ItemSearchRowBasic::setSalesDescription()
     * @uses ItemSearchRowBasic::setSalesTaxCode()
     * @uses ItemSearchRowBasic::setSaleUnit()
     * @uses ItemSearchRowBasic::setSameAsPrimaryBookAmortization()
     * @uses ItemSearchRowBasic::setSameAsPrimaryBookRevRec()
     * @uses ItemSearchRowBasic::setScheduleBCode()
     * @uses ItemSearchRowBasic::setScheduleBNumber()
     * @uses ItemSearchRowBasic::setScheduleBQuantity()
     * @uses ItemSearchRowBasic::setScrapAcct()
     * @uses ItemSearchRowBasic::setSearchKeywords()
     * @uses ItemSearchRowBasic::setSeasonalDemand()
     * @uses ItemSearchRowBasic::setSellOnEBay()
     * @uses ItemSearchRowBasic::setSerialNumber()
     * @uses ItemSearchRowBasic::setSerialNumberLocation()
     * @uses ItemSearchRowBasic::setShipIndividually()
     * @uses ItemSearchRowBasic::setShipPackage()
     * @uses ItemSearchRowBasic::setShippingCarrier()
     * @uses ItemSearchRowBasic::setShippingRate()
     * @uses ItemSearchRowBasic::setShoppingDotComCategory()
     * @uses ItemSearchRowBasic::setShoppingProductFeed()
     * @uses ItemSearchRowBasic::setShopzillaCategoryId()
     * @uses ItemSearchRowBasic::setShopzillaProductFeed()
     * @uses ItemSearchRowBasic::setSitemapPriority()
     * @uses ItemSearchRowBasic::setSoftDescriptor()
     * @uses ItemSearchRowBasic::setStartingPrice()
     * @uses ItemSearchRowBasic::setStockDescription()
     * @uses ItemSearchRowBasic::setStockUnit()
     * @uses ItemSearchRowBasic::setStoreDescription()
     * @uses ItemSearchRowBasic::setStoreDetailedDescription()
     * @uses ItemSearchRowBasic::setStoreDisplayImage()
     * @uses ItemSearchRowBasic::setStoreDisplayName()
     * @uses ItemSearchRowBasic::setStoreDisplayThumbnail()
     * @uses ItemSearchRowBasic::setSubsidiary()
     * @uses ItemSearchRowBasic::setSubType()
     * @uses ItemSearchRowBasic::setSupplyLotSizingMethod()
     * @uses ItemSearchRowBasic::setSupplyReplenishmentMethod()
     * @uses ItemSearchRowBasic::setSupplyTimeFence()
     * @uses ItemSearchRowBasic::setSupplyType()
     * @uses ItemSearchRowBasic::setTaxSchedule()
     * @uses ItemSearchRowBasic::setThumbNailUrl()
     * @uses ItemSearchRowBasic::setTotalValue()
     * @uses ItemSearchRowBasic::setTrackLandedCost()
     * @uses ItemSearchRowBasic::setTransferPrice()
     * @uses ItemSearchRowBasic::setType()
     * @uses ItemSearchRowBasic::setUnbuildVarianceAccount()
     * @uses ItemSearchRowBasic::setUnitsType()
     * @uses ItemSearchRowBasic::setUpcCode()
     * @uses ItemSearchRowBasic::setUrlComponent()
     * @uses ItemSearchRowBasic::setUseBins()
     * @uses ItemSearchRowBasic::setUseComponentYield()
     * @uses ItemSearchRowBasic::setUseMarginalRates()
     * @uses ItemSearchRowBasic::setVendor()
     * @uses ItemSearchRowBasic::setVendorCode()
     * @uses ItemSearchRowBasic::setVendorCost()
     * @uses ItemSearchRowBasic::setVendorCostEntered()
     * @uses ItemSearchRowBasic::setVendorName()
     * @uses ItemSearchRowBasic::setVendorPriceCurrency()
     * @uses ItemSearchRowBasic::setVendorSchedule()
     * @uses ItemSearchRowBasic::setVendReturnVarianceAccount()
     * @uses ItemSearchRowBasic::setVsoeDeferral()
     * @uses ItemSearchRowBasic::setVsoeDelivered()
     * @uses ItemSearchRowBasic::setVsoePermitDiscount()
     * @uses ItemSearchRowBasic::setVsoePrice()
     * @uses ItemSearchRowBasic::setVsoeSopGroup()
     * @uses ItemSearchRowBasic::setWebSite()
     * @uses ItemSearchRowBasic::setWeight()
     * @uses ItemSearchRowBasic::setWeightUnit()
     * @uses ItemSearchRowBasic::setWipAcct()
     * @uses ItemSearchRowBasic::setWipVarianceAcct()
     * @uses ItemSearchRowBasic::setYahooProductFeed()
     * @uses ItemSearchRowBasic::setCustomFieldList()
     * @param \StructType\SearchColumnSelectField[] $accBookRevRecForecastRule
     * @param \StructType\SearchColumnSelectField[] $accountingBook
     * @param \StructType\SearchColumnSelectField[] $accountingBookAmortization
     * @param \StructType\SearchColumnSelectField[] $accountingBookCreatePlansOn
     * @param \StructType\SearchColumnSelectField[] $accountingBookRevRecRule
     * @param \StructType\SearchColumnSelectField[] $accountingBookRevRecSchedule
     * @param \StructType\SearchColumnSelectField[] $allowedShippingMethod
     * @param \StructType\SearchColumnStringField[] $alternateDemandSourceItem
     * @param \StructType\SearchColumnSelectField[] $assetAccount
     * @param \StructType\SearchColumnDoubleField[] $atpLeadTime
     * @param \StructType\SearchColumnEnumSelectField[] $atpMethod
     * @param \StructType\SearchColumnBooleanField[] $autoLeadTime
     * @param \StructType\SearchColumnBooleanField[] $autoPreferredStockLevel
     * @param \StructType\SearchColumnBooleanField[] $autoReorderPoint
     * @param \StructType\SearchColumnBooleanField[] $availableToPartners
     * @param \StructType\SearchColumnDoubleField[] $averageCost
     * @param \StructType\SearchColumnLongField[] $backwardConsumptionDays
     * @param \StructType\SearchColumnDoubleField[] $basePrice
     * @param \StructType\SearchColumnSelectField[] $billExchRateVarianceAcct
     * @param \StructType\SearchColumnSelectField[] $billPriceVarianceAcct
     * @param \StructType\SearchColumnSelectField[] $billQtyVarianceAcct
     * @param \StructType\SearchColumnStringField[] $binNumber
     * @param \StructType\SearchColumnDoubleField[] $binOnHandAvail
     * @param \StructType\SearchColumnDoubleField[] $binOnHandCount
     * @param \StructType\SearchColumnDoubleField[] $bomQuantity
     * @param \StructType\SearchColumnBooleanField[] $buildEntireAssembly
     * @param \StructType\SearchColumnDoubleField[] $buildTime
     * @param \StructType\SearchColumnDoubleField[] $buyItNowPrice
     * @param \StructType\SearchColumnStringField[] $category
     * @param \StructType\SearchColumnStringField[] $categoryPreferred
     * @param \StructType\SearchColumnSelectField[] $class
     * @param \StructType\SearchColumnDoubleField[] $componentYield
     * @param \StructType\SearchColumnSelectField[] $consumptionUnit
     * @param \StructType\SearchColumnBooleanField[] $contingentRevenueHandling
     * @param \StructType\SearchColumnBooleanField[] $copyDescription
     * @param \StructType\SearchColumnSelectField[] $correlatedItem
     * @param \StructType\SearchColumnDoubleField[] $correlatedItemCorrelation
     * @param \StructType\SearchColumnLongField[] $correlatedItemCount
     * @param \StructType\SearchColumnDoubleField[] $correlatedItemLift
     * @param \StructType\SearchColumnDoubleField[] $correlatedItemPurchaseRate
     * @param \StructType\SearchColumnDoubleField[] $cost
     * @param \StructType\SearchColumnEnumSelectField[] $costAccountingStatus
     * @param \StructType\SearchColumnStringField[] $costCategory
     * @param \StructType\SearchColumnDoubleField[] $costEstimate
     * @param \StructType\SearchColumnEnumSelectField[] $costEstimateType
     * @param \StructType\SearchColumnEnumSelectField[] $costingMethod
     * @param \StructType\SearchColumnEnumSelectField[] $countryOfManufacture
     * @param \StructType\SearchColumnDateField[] $created
     * @param \StructType\SearchColumnBooleanField[] $createJob
     * @param \StructType\SearchColumnSelectField[] $createRevenuePlansOn
     * @param \StructType\SearchColumnSelectField[] $custReturnVarianceAccount
     * @param \StructType\SearchColumnDateField[] $dateViewed
     * @param \StructType\SearchColumnStringField[] $daysBeforeExpiration
     * @param \StructType\SearchColumnDoubleField[] $defaultReturnCost
     * @param \StructType\SearchColumnStringField[] $defaultShippingMethod
     * @param \StructType\SearchColumnSelectField[] $deferredExpenseAccount
     * @param \StructType\SearchColumnSelectField[] $deferredRevenueAccount
     * @param \StructType\SearchColumnBooleanField[] $deferRevRec
     * @param \StructType\SearchColumnDoubleField[] $demandModifier
     * @param \StructType\SearchColumnEnumSelectField[] $demandSource
     * @param \StructType\SearchColumnLongField[] $demandTimeFence
     * @param \StructType\SearchColumnSelectField[] $department
     * @param \StructType\SearchColumnSelectField[] $departmentnohierarchy
     * @param \StructType\SearchColumnBooleanField[] $directRevenuePosting
     * @param \StructType\SearchColumnBooleanField[] $displayIneBayStore
     * @param \StructType\SearchColumnStringField[] $displayName
     * @param \StructType\SearchColumnSelectField[] $distributionCategory
     * @param \StructType\SearchColumnSelectField[] $distributionNetwork
     * @param \StructType\SearchColumnBooleanField[] $dontShowPrice
     * @param \StructType\SearchColumnStringField[] $eBayItemDescription
     * @param \StructType\SearchColumnStringField[] $eBayItemSubtitle
     * @param \StructType\SearchColumnStringField[] $eBayItemTitle
     * @param \StructType\SearchColumnEnumSelectField[] $ebayRelistingOption
     * @param \StructType\SearchColumnEnumSelectField[] $effectiveBomControl
     * @param \StructType\SearchColumnDateField[] $effectiveDate
     * @param \StructType\SearchColumnSelectField[] $effectiveRevision
     * @param \StructType\SearchColumnBooleanField[] $endAuctionsWhenOutOfStock
     * @param \StructType\SearchColumnBooleanField[] $excludeFromSitemap
     * @param \StructType\SearchColumnSelectField[] $expenseAccount
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @param \StructType\SearchColumnStringField[] $featuredDescription
     * @param \StructType\SearchColumnStringField[] $feedDescription
     * @param \StructType\SearchColumnStringField[] $feedName
     * @param \StructType\SearchColumnDoubleField[] $fixedLotSize
     * @param \StructType\SearchColumnLongField[] $forwardConsumptionDays
     * @param \StructType\SearchColumnEnumSelectField[] $fraudRisk
     * @param \StructType\SearchColumnBooleanField[] $froogleProductFeed
     * @param \StructType\SearchColumnLongField[] $futureHorizon
     * @param \StructType\SearchColumnDoubleField[] $fxCost
     * @param \StructType\SearchColumnSelectField[] $gainLossAccount
     * @param \StructType\SearchColumnBooleanField[] $generateAccruals
     * @param \StructType\SearchColumnStringField[] $giftCertAuthCode
     * @param \StructType\SearchColumnStringField[] $giftCertEmail
     * @param \StructType\SearchColumnStringField[] $giftCertExpirationDate
     * @param \StructType\SearchColumnStringField[] $giftCertFrom
     * @param \StructType\SearchColumnStringField[] $giftCertMessage
     * @param \StructType\SearchColumnStringField[] $giftCertOriginalAmount
     * @param \StructType\SearchColumnStringField[] $giftCertRecipient
     * @param \StructType\SearchColumnStringField[] $hierarchyNode
     * @param \StructType\SearchColumnStringField[] $hierarchyVersion
     * @param \StructType\SearchColumnLongField[] $hits
     * @param \StructType\SearchColumnStringField[] $imageUrl
     * @param \StructType\SearchColumnBooleanField[] $includeChildren
     * @param \StructType\SearchColumnSelectField[] $incomeAccount
     * @param \StructType\SearchColumnSelectField[] $intercoDefRevAccount
     * @param \StructType\SearchColumnSelectField[] $intercoExpenseAccount
     * @param \StructType\SearchColumnSelectField[] $intercoIncomeAccount
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @param \StructType\SearchColumnSelectField[] $inventoryLocation
     * @param \StructType\SearchColumnEnumSelectField[] $invtClassification
     * @param \StructType\SearchColumnLongField[] $invtCountInterval
     * @param \StructType\SearchColumnBooleanField[] $isAvailable
     * @param \StructType\SearchColumnBooleanField[] $isDropShipItem
     * @param \StructType\SearchColumnBooleanField[] $isFulfillable
     * @param \StructType\SearchColumnBooleanField[] $isGcoCompliant
     * @param \StructType\SearchColumnBooleanField[] $isInactive
     * @param \StructType\SearchColumnBooleanField[] $isLotItem
     * @param \StructType\SearchColumnBooleanField[] $isOnline
     * @param \StructType\SearchColumnBooleanField[] $isSerialItem
     * @param \StructType\SearchColumnBooleanField[] $isSpecialOrderItem
     * @param \StructType\SearchColumnBooleanField[] $isSpecialWorkOrderItem
     * @param \StructType\SearchColumnBooleanField[] $isStorePickupAllowed
     * @param \StructType\SearchColumnSelectField[] $issueProduct
     * @param \StructType\SearchColumnBooleanField[] $isTaxable
     * @param \StructType\SearchColumnBooleanField[] $isVsoeBundle
     * @param \StructType\SearchColumnBooleanField[] $isWip
     * @param \StructType\SearchColumnStringField[] $itemId
     * @param \StructType\SearchColumnSelectField[] $itemRevenueCategory
     * @param \StructType\SearchColumnStringField[] $itemUrl
     * @param \StructType\SearchColumnDateField[] $lastInvtCountDate
     * @param \StructType\SearchColumnDoubleField[] $lastPurchasePrice
     * @param \StructType\SearchColumnDateField[] $lastQuantityAvailableChange
     * @param \StructType\SearchColumnLongField[] $leadTime
     * @param \StructType\SearchColumnSelectField[] $liabilityAccount
     * @param \StructType\SearchColumnEnumSelectField[] $listingDuration
     * @param \StructType\SearchColumnSelectField[] $location
     * @param \StructType\SearchColumnBooleanField[] $locationAllowStorePickup
     * @param \StructType\SearchColumnDoubleField[] $locationAtpLeadTime
     * @param \StructType\SearchColumnDoubleField[] $locationAverageCost
     * @param \StructType\SearchColumnStringField[] $locationBinQuantityAvailable
     * @param \StructType\SearchColumnDoubleField[] $locationBuildTime
     * @param \StructType\SearchColumnDoubleField[] $locationCost
     * @param \StructType\SearchColumnEnumSelectField[] $locationCostAccountingStatus
     * @param \StructType\SearchColumnDoubleField[] $locationDefaultReturnCost
     * @param \StructType\SearchColumnEnumSelectField[] $locationDemandSource
     * @param \StructType\SearchColumnLongField[] $locationDemandTimeFence
     * @param \StructType\SearchColumnDoubleField[] $locationFixedLotSize
     * @param \StructType\SearchColumnStringField[] $locationInventoryCostTemplate
     * @param \StructType\SearchColumnEnumSelectField[] $locationInvtClassification
     * @param \StructType\SearchColumnLongField[] $locationInvtCountInterval
     * @param \StructType\SearchColumnDateField[] $locationLastInvtCountDate
     * @param \StructType\SearchColumnLongField[] $locationLeadTime
     * @param \StructType\SearchColumnDateField[] $locationNextInvtCountDate
     * @param \StructType\SearchColumnLongField[] $locationPeriodicLotSizeDays
     * @param \StructType\SearchColumnEnumSelectField[] $locationPeriodicLotSizeType
     * @param \StructType\SearchColumnDoubleField[] $locationPreferredStockLevel
     * @param \StructType\SearchColumnDoubleField[] $locationQtyAvailForStorePickup
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityAvailable
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityBackOrdered
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityCommitted
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityInTransit
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityOnHand
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityOnOrder
     * @param \StructType\SearchColumnDoubleField[] $locationReOrderPoint
     * @param \StructType\SearchColumnLongField[] $locationRescheduleInDays
     * @param \StructType\SearchColumnLongField[] $locationRescheduleOutDays
     * @param \StructType\SearchColumnDoubleField[] $locationSafetyStockLevel
     * @param \StructType\SearchColumnDoubleField[] $locationStorePickupBufferStock
     * @param \StructType\SearchColumnEnumSelectField[] $locationSupplyLotSizingMethod
     * @param \StructType\SearchColumnLongField[] $locationSupplyTimeFence
     * @param \StructType\SearchColumnEnumSelectField[] $locationSupplyType
     * @param \StructType\SearchColumnDoubleField[] $locationTotalValue
     * @param \StructType\SearchColumnLongField[] $locBackwardConsumptionDays
     * @param \StructType\SearchColumnLongField[] $locForwardConsumptionDays
     * @param \StructType\SearchColumnStringField[] $manufacturer
     * @param \StructType\SearchColumnStringField[] $manufacturerAddr1
     * @param \StructType\SearchColumnStringField[] $manufacturerCity
     * @param \StructType\SearchColumnStringField[] $manufacturerState
     * @param \StructType\SearchColumnStringField[] $manufacturerTariff
     * @param \StructType\SearchColumnStringField[] $manufacturerTaxId
     * @param \StructType\SearchColumnStringField[] $manufacturerZip
     * @param \StructType\SearchColumnBooleanField[] $manufacturingChargeItem
     * @param \StructType\SearchColumnBooleanField[] $matchBillToReceipt
     * @param \StructType\SearchColumnStringField[] $maximumQuantity
     * @param \StructType\SearchColumnSelectField[] $memberItem
     * @param \StructType\SearchColumnDoubleField[] $memberQuantity
     * @param \StructType\SearchColumnStringField[] $metaTagHtml
     * @param \StructType\SearchColumnStringField[] $minimumQuantity
     * @param \StructType\SearchColumnDateField[] $modified
     * @param \StructType\SearchColumnBooleanField[] $mossApplies
     * @param \StructType\SearchColumnStringField[] $mpn
     * @param \StructType\SearchColumnBooleanField[] $multManufactureAddr
     * @param \StructType\SearchColumnStringField[] $nextagCategory
     * @param \StructType\SearchColumnBooleanField[] $nextagProductFeed
     * @param \StructType\SearchColumnDateField[] $nextInvtCountDate
     * @param \StructType\SearchColumnStringField[] $noPriceMessage
     * @param \StructType\SearchColumnLongField[] $numActiveListings
     * @param \StructType\SearchColumnStringField[] $numberAllowedDownloads
     * @param \StructType\SearchColumnLongField[] $numCurrentlyListed
     * @param \StructType\SearchColumnDateField[] $obsoleteDate
     * @param \StructType\SearchColumnSelectField[] $obsoleteRevision
     * @param \StructType\SearchColumnBooleanField[] $offerSupport
     * @param \StructType\SearchColumnDoubleField[] $onlineCustomerPrice
     * @param \StructType\SearchColumnDoubleField[] $onlinePrice
     * @param \StructType\SearchColumnBooleanField[] $onSpecial
     * @param \StructType\SearchColumnDoubleField[] $otherPrices
     * @param \StructType\SearchColumnSelectField[] $otherVendor
     * @param \StructType\SearchColumnStringField[] $outOfStockBehavior
     * @param \StructType\SearchColumnStringField[] $outOfStockMessage
     * @param \StructType\SearchColumnEnumSelectField[] $overallQuantityPricingType
     * @param \StructType\SearchColumnEnumSelectField[] $overheadType
     * @param \StructType\SearchColumnStringField[] $pageTitle
     * @param \StructType\SearchColumnSelectField[] $parent
     * @param \StructType\SearchColumnLongField[] $periodicLotSizeDays
     * @param \StructType\SearchColumnEnumSelectField[] $periodicLotSizeType
     * @param \StructType\SearchColumnStringField[] $preferenceCriterion
     * @param \StructType\SearchColumnBooleanField[] $preferredBin
     * @param \StructType\SearchColumnSelectField[] $preferredLocation
     * @param \StructType\SearchColumnDoubleField[] $preferredStockLevel
     * @param \StructType\SearchColumnLongField[] $preferredStockLevelDays
     * @param \StructType\SearchColumnBooleanField[] $pricesIncludeTax
     * @param \StructType\SearchColumnSelectField[] $pricingGroup
     * @param \StructType\SearchColumnStringField[] $primaryCategory
     * @param \StructType\SearchColumnSelectField[] $prodPriceVarianceAcct
     * @param \StructType\SearchColumnSelectField[] $prodQtyVarianceAcct
     * @param \StructType\SearchColumnStringField[] $purchaseDescription
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderAmount
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderQuantity
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderQuantityDiff
     * @param \StructType\SearchColumnSelectField[] $purchasePriceVarianceAcct
     * @param \StructType\SearchColumnSelectField[] $purchaseUnit
     * @param \StructType\SearchColumnDoubleField[] $quantityAvailable
     * @param \StructType\SearchColumnDoubleField[] $quantityBackOrdered
     * @param \StructType\SearchColumnDoubleField[] $quantityCommitted
     * @param \StructType\SearchColumnDoubleField[] $quantityOnHand
     * @param \StructType\SearchColumnDoubleField[] $quantityOnOrder
     * @param \StructType\SearchColumnSelectField[] $quantityPricingSchedule
     * @param \StructType\SearchColumnDoubleField[] $receiptAmount
     * @param \StructType\SearchColumnDoubleField[] $receiptQuantity
     * @param \StructType\SearchColumnDoubleField[] $receiptQuantityDiff
     * @param \StructType\SearchColumnLongField[] $reorderMultiple
     * @param \StructType\SearchColumnDoubleField[] $reOrderPoint
     * @param \StructType\SearchColumnLongField[] $rescheduleInDays
     * @param \StructType\SearchColumnLongField[] $rescheduleOutDays
     * @param \StructType\SearchColumnDoubleField[] $reservePrice
     * @param \StructType\SearchColumnSelectField[] $revenueAllocationGroup
     * @param \StructType\SearchColumnSelectField[] $revenueRecognitionRule
     * @param \StructType\SearchColumnSelectField[] $revRecForecastRule
     * @param \StructType\SearchColumnSelectField[] $revReclassFXAccount
     * @param \StructType\SearchColumnSelectField[] $revRecSchedule
     * @param \StructType\SearchColumnBooleanField[] $roundUpAsComponent
     * @param \StructType\SearchColumnDoubleField[] $safetyStockLevel
     * @param \StructType\SearchColumnLongField[] $safetyStockLevelDays
     * @param \StructType\SearchColumnStringField[] $salesDescription
     * @param \StructType\SearchColumnSelectField[] $salesTaxCode
     * @param \StructType\SearchColumnSelectField[] $saleUnit
     * @param \StructType\SearchColumnBooleanField[] $sameAsPrimaryBookAmortization
     * @param \StructType\SearchColumnBooleanField[] $sameAsPrimaryBookRevRec
     * @param \StructType\SearchColumnEnumSelectField[] $scheduleBCode
     * @param \StructType\SearchColumnStringField[] $scheduleBNumber
     * @param \StructType\SearchColumnStringField[] $scheduleBQuantity
     * @param \StructType\SearchColumnSelectField[] $scrapAcct
     * @param \StructType\SearchColumnStringField[] $searchKeywords
     * @param \StructType\SearchColumnBooleanField[] $seasonalDemand
     * @param \StructType\SearchColumnBooleanField[] $sellOnEBay
     * @param \StructType\SearchColumnStringField[] $serialNumber
     * @param \StructType\SearchColumnStringField[] $serialNumberLocation
     * @param \StructType\SearchColumnBooleanField[] $shipIndividually
     * @param \StructType\SearchColumnSelectField[] $shipPackage
     * @param \StructType\SearchColumnEnumSelectField[] $shippingCarrier
     * @param \StructType\SearchColumnDoubleField[] $shippingRate
     * @param \StructType\SearchColumnStringField[] $shoppingDotComCategory
     * @param \StructType\SearchColumnBooleanField[] $shoppingProductFeed
     * @param \StructType\SearchColumnLongField[] $shopzillaCategoryId
     * @param \StructType\SearchColumnBooleanField[] $shopzillaProductFeed
     * @param \StructType\SearchColumnEnumSelectField[] $sitemapPriority
     * @param \StructType\SearchColumnSelectField[] $softDescriptor
     * @param \StructType\SearchColumnDoubleField[] $startingPrice
     * @param \StructType\SearchColumnStringField[] $stockDescription
     * @param \StructType\SearchColumnSelectField[] $stockUnit
     * @param \StructType\SearchColumnStringField[] $storeDescription
     * @param \StructType\SearchColumnStringField[] $storeDetailedDescription
     * @param \StructType\SearchColumnSelectField[] $storeDisplayImage
     * @param \StructType\SearchColumnStringField[] $storeDisplayName
     * @param \StructType\SearchColumnSelectField[] $storeDisplayThumbnail
     * @param \StructType\SearchColumnSelectField[] $subsidiary
     * @param \StructType\SearchColumnEnumSelectField[] $subType
     * @param \StructType\SearchColumnEnumSelectField[] $supplyLotSizingMethod
     * @param \StructType\SearchColumnEnumSelectField[] $supplyReplenishmentMethod
     * @param \StructType\SearchColumnLongField[] $supplyTimeFence
     * @param \StructType\SearchColumnEnumSelectField[] $supplyType
     * @param \StructType\SearchColumnSelectField[] $taxSchedule
     * @param \StructType\SearchColumnStringField[] $thumbNailUrl
     * @param \StructType\SearchColumnDoubleField[] $totalValue
     * @param \StructType\SearchColumnBooleanField[] $trackLandedCost
     * @param \StructType\SearchColumnDoubleField[] $transferPrice
     * @param \StructType\SearchColumnEnumSelectField[] $type
     * @param \StructType\SearchColumnSelectField[] $unbuildVarianceAccount
     * @param \StructType\SearchColumnSelectField[] $unitsType
     * @param \StructType\SearchColumnStringField[] $upcCode
     * @param \StructType\SearchColumnStringField[] $urlComponent
     * @param \StructType\SearchColumnBooleanField[] $useBins
     * @param \StructType\SearchColumnBooleanField[] $useComponentYield
     * @param \StructType\SearchColumnBooleanField[] $useMarginalRates
     * @param \StructType\SearchColumnSelectField[] $vendor
     * @param \StructType\SearchColumnStringField[] $vendorCode
     * @param \StructType\SearchColumnDoubleField[] $vendorCost
     * @param \StructType\SearchColumnDoubleField[] $vendorCostEntered
     * @param \StructType\SearchColumnStringField[] $vendorName
     * @param \StructType\SearchColumnStringField[] $vendorPriceCurrency
     * @param \StructType\SearchColumnSelectField[] $vendorSchedule
     * @param \StructType\SearchColumnSelectField[] $vendReturnVarianceAccount
     * @param \StructType\SearchColumnEnumSelectField[] $vsoeDeferral
     * @param \StructType\SearchColumnBooleanField[] $vsoeDelivered
     * @param \StructType\SearchColumnEnumSelectField[] $vsoePermitDiscount
     * @param \StructType\SearchColumnDoubleField[] $vsoePrice
     * @param \StructType\SearchColumnEnumSelectField[] $vsoeSopGroup
     * @param \StructType\SearchColumnSelectField[] $webSite
     * @param \StructType\SearchColumnDoubleField[] $weight
     * @param \StructType\SearchColumnEnumSelectField[] $weightUnit
     * @param \StructType\SearchColumnSelectField[] $wipAcct
     * @param \StructType\SearchColumnSelectField[] $wipVarianceAcct
     * @param \StructType\SearchColumnBooleanField[] $yahooProductFeed
     * @param \StructType\SearchColumnCustomFieldList $customFieldList
     */
    public function __construct(array $accBookRevRecForecastRule = array(), array $accountingBook = array(), array $accountingBookAmortization = array(), array $accountingBookCreatePlansOn = array(), array $accountingBookRevRecRule = array(), array $accountingBookRevRecSchedule = array(), array $allowedShippingMethod = array(), array $alternateDemandSourceItem = array(), array $assetAccount = array(), array $atpLeadTime = array(), array $atpMethod = array(), array $autoLeadTime = array(), array $autoPreferredStockLevel = array(), array $autoReorderPoint = array(), array $availableToPartners = array(), array $averageCost = array(), array $backwardConsumptionDays = array(), array $basePrice = array(), array $billExchRateVarianceAcct = array(), array $billPriceVarianceAcct = array(), array $billQtyVarianceAcct = array(), array $binNumber = array(), array $binOnHandAvail = array(), array $binOnHandCount = array(), array $bomQuantity = array(), array $buildEntireAssembly = array(), array $buildTime = array(), array $buyItNowPrice = array(), array $category = array(), array $categoryPreferred = array(), array $class = array(), array $componentYield = array(), array $consumptionUnit = array(), array $contingentRevenueHandling = array(), array $copyDescription = array(), array $correlatedItem = array(), array $correlatedItemCorrelation = array(), array $correlatedItemCount = array(), array $correlatedItemLift = array(), array $correlatedItemPurchaseRate = array(), array $cost = array(), array $costAccountingStatus = array(), array $costCategory = array(), array $costEstimate = array(), array $costEstimateType = array(), array $costingMethod = array(), array $countryOfManufacture = array(), array $created = array(), array $createJob = array(), array $createRevenuePlansOn = array(), array $custReturnVarianceAccount = array(), array $dateViewed = array(), array $daysBeforeExpiration = array(), array $defaultReturnCost = array(), array $defaultShippingMethod = array(), array $deferredExpenseAccount = array(), array $deferredRevenueAccount = array(), array $deferRevRec = array(), array $demandModifier = array(), array $demandSource = array(), array $demandTimeFence = array(), array $department = array(), array $departmentnohierarchy = array(), array $directRevenuePosting = array(), array $displayIneBayStore = array(), array $displayName = array(), array $distributionCategory = array(), array $distributionNetwork = array(), array $dontShowPrice = array(), array $eBayItemDescription = array(), array $eBayItemSubtitle = array(), array $eBayItemTitle = array(), array $ebayRelistingOption = array(), array $effectiveBomControl = array(), array $effectiveDate = array(), array $effectiveRevision = array(), array $endAuctionsWhenOutOfStock = array(), array $excludeFromSitemap = array(), array $expenseAccount = array(), array $externalId = array(), array $featuredDescription = array(), array $feedDescription = array(), array $feedName = array(), array $fixedLotSize = array(), array $forwardConsumptionDays = array(), array $fraudRisk = array(), array $froogleProductFeed = array(), array $futureHorizon = array(), array $fxCost = array(), array $gainLossAccount = array(), array $generateAccruals = array(), array $giftCertAuthCode = array(), array $giftCertEmail = array(), array $giftCertExpirationDate = array(), array $giftCertFrom = array(), array $giftCertMessage = array(), array $giftCertOriginalAmount = array(), array $giftCertRecipient = array(), array $hierarchyNode = array(), array $hierarchyVersion = array(), array $hits = array(), array $imageUrl = array(), array $includeChildren = array(), array $incomeAccount = array(), array $intercoDefRevAccount = array(), array $intercoExpenseAccount = array(), array $intercoIncomeAccount = array(), array $internalId = array(), array $inventoryLocation = array(), array $invtClassification = array(), array $invtCountInterval = array(), array $isAvailable = array(), array $isDropShipItem = array(), array $isFulfillable = array(), array $isGcoCompliant = array(), array $isInactive = array(), array $isLotItem = array(), array $isOnline = array(), array $isSerialItem = array(), array $isSpecialOrderItem = array(), array $isSpecialWorkOrderItem = array(), array $isStorePickupAllowed = array(), array $issueProduct = array(), array $isTaxable = array(), array $isVsoeBundle = array(), array $isWip = array(), array $itemId = array(), array $itemRevenueCategory = array(), array $itemUrl = array(), array $lastInvtCountDate = array(), array $lastPurchasePrice = array(), array $lastQuantityAvailableChange = array(), array $leadTime = array(), array $liabilityAccount = array(), array $listingDuration = array(), array $location = array(), array $locationAllowStorePickup = array(), array $locationAtpLeadTime = array(), array $locationAverageCost = array(), array $locationBinQuantityAvailable = array(), array $locationBuildTime = array(), array $locationCost = array(), array $locationCostAccountingStatus = array(), array $locationDefaultReturnCost = array(), array $locationDemandSource = array(), array $locationDemandTimeFence = array(), array $locationFixedLotSize = array(), array $locationInventoryCostTemplate = array(), array $locationInvtClassification = array(), array $locationInvtCountInterval = array(), array $locationLastInvtCountDate = array(), array $locationLeadTime = array(), array $locationNextInvtCountDate = array(), array $locationPeriodicLotSizeDays = array(), array $locationPeriodicLotSizeType = array(), array $locationPreferredStockLevel = array(), array $locationQtyAvailForStorePickup = array(), array $locationQuantityAvailable = array(), array $locationQuantityBackOrdered = array(), array $locationQuantityCommitted = array(), array $locationQuantityInTransit = array(), array $locationQuantityOnHand = array(), array $locationQuantityOnOrder = array(), array $locationReOrderPoint = array(), array $locationRescheduleInDays = array(), array $locationRescheduleOutDays = array(), array $locationSafetyStockLevel = array(), array $locationStorePickupBufferStock = array(), array $locationSupplyLotSizingMethod = array(), array $locationSupplyTimeFence = array(), array $locationSupplyType = array(), array $locationTotalValue = array(), array $locBackwardConsumptionDays = array(), array $locForwardConsumptionDays = array(), array $manufacturer = array(), array $manufacturerAddr1 = array(), array $manufacturerCity = array(), array $manufacturerState = array(), array $manufacturerTariff = array(), array $manufacturerTaxId = array(), array $manufacturerZip = array(), array $manufacturingChargeItem = array(), array $matchBillToReceipt = array(), array $maximumQuantity = array(), array $memberItem = array(), array $memberQuantity = array(), array $metaTagHtml = array(), array $minimumQuantity = array(), array $modified = array(), array $mossApplies = array(), array $mpn = array(), array $multManufactureAddr = array(), array $nextagCategory = array(), array $nextagProductFeed = array(), array $nextInvtCountDate = array(), array $noPriceMessage = array(), array $numActiveListings = array(), array $numberAllowedDownloads = array(), array $numCurrentlyListed = array(), array $obsoleteDate = array(), array $obsoleteRevision = array(), array $offerSupport = array(), array $onlineCustomerPrice = array(), array $onlinePrice = array(), array $onSpecial = array(), array $otherPrices = array(), array $otherVendor = array(), array $outOfStockBehavior = array(), array $outOfStockMessage = array(), array $overallQuantityPricingType = array(), array $overheadType = array(), array $pageTitle = array(), array $parent = array(), array $periodicLotSizeDays = array(), array $periodicLotSizeType = array(), array $preferenceCriterion = array(), array $preferredBin = array(), array $preferredLocation = array(), array $preferredStockLevel = array(), array $preferredStockLevelDays = array(), array $pricesIncludeTax = array(), array $pricingGroup = array(), array $primaryCategory = array(), array $prodPriceVarianceAcct = array(), array $prodQtyVarianceAcct = array(), array $purchaseDescription = array(), array $purchaseOrderAmount = array(), array $purchaseOrderQuantity = array(), array $purchaseOrderQuantityDiff = array(), array $purchasePriceVarianceAcct = array(), array $purchaseUnit = array(), array $quantityAvailable = array(), array $quantityBackOrdered = array(), array $quantityCommitted = array(), array $quantityOnHand = array(), array $quantityOnOrder = array(), array $quantityPricingSchedule = array(), array $receiptAmount = array(), array $receiptQuantity = array(), array $receiptQuantityDiff = array(), array $reorderMultiple = array(), array $reOrderPoint = array(), array $rescheduleInDays = array(), array $rescheduleOutDays = array(), array $reservePrice = array(), array $revenueAllocationGroup = array(), array $revenueRecognitionRule = array(), array $revRecForecastRule = array(), array $revReclassFXAccount = array(), array $revRecSchedule = array(), array $roundUpAsComponent = array(), array $safetyStockLevel = array(), array $safetyStockLevelDays = array(), array $salesDescription = array(), array $salesTaxCode = array(), array $saleUnit = array(), array $sameAsPrimaryBookAmortization = array(), array $sameAsPrimaryBookRevRec = array(), array $scheduleBCode = array(), array $scheduleBNumber = array(), array $scheduleBQuantity = array(), array $scrapAcct = array(), array $searchKeywords = array(), array $seasonalDemand = array(), array $sellOnEBay = array(), array $serialNumber = array(), array $serialNumberLocation = array(), array $shipIndividually = array(), array $shipPackage = array(), array $shippingCarrier = array(), array $shippingRate = array(), array $shoppingDotComCategory = array(), array $shoppingProductFeed = array(), array $shopzillaCategoryId = array(), array $shopzillaProductFeed = array(), array $sitemapPriority = array(), array $softDescriptor = array(), array $startingPrice = array(), array $stockDescription = array(), array $stockUnit = array(), array $storeDescription = array(), array $storeDetailedDescription = array(), array $storeDisplayImage = array(), array $storeDisplayName = array(), array $storeDisplayThumbnail = array(), array $subsidiary = array(), array $subType = array(), array $supplyLotSizingMethod = array(), array $supplyReplenishmentMethod = array(), array $supplyTimeFence = array(), array $supplyType = array(), array $taxSchedule = array(), array $thumbNailUrl = array(), array $totalValue = array(), array $trackLandedCost = array(), array $transferPrice = array(), array $type = array(), array $unbuildVarianceAccount = array(), array $unitsType = array(), array $upcCode = array(), array $urlComponent = array(), array $useBins = array(), array $useComponentYield = array(), array $useMarginalRates = array(), array $vendor = array(), array $vendorCode = array(), array $vendorCost = array(), array $vendorCostEntered = array(), array $vendorName = array(), array $vendorPriceCurrency = array(), array $vendorSchedule = array(), array $vendReturnVarianceAccount = array(), array $vsoeDeferral = array(), array $vsoeDelivered = array(), array $vsoePermitDiscount = array(), array $vsoePrice = array(), array $vsoeSopGroup = array(), array $webSite = array(), array $weight = array(), array $weightUnit = array(), array $wipAcct = array(), array $wipVarianceAcct = array(), array $yahooProductFeed = array(), \StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this
            ->setAccBookRevRecForecastRule($accBookRevRecForecastRule)
            ->setAccountingBook($accountingBook)
            ->setAccountingBookAmortization($accountingBookAmortization)
            ->setAccountingBookCreatePlansOn($accountingBookCreatePlansOn)
            ->setAccountingBookRevRecRule($accountingBookRevRecRule)
            ->setAccountingBookRevRecSchedule($accountingBookRevRecSchedule)
            ->setAllowedShippingMethod($allowedShippingMethod)
            ->setAlternateDemandSourceItem($alternateDemandSourceItem)
            ->setAssetAccount($assetAccount)
            ->setAtpLeadTime($atpLeadTime)
            ->setAtpMethod($atpMethod)
            ->setAutoLeadTime($autoLeadTime)
            ->setAutoPreferredStockLevel($autoPreferredStockLevel)
            ->setAutoReorderPoint($autoReorderPoint)
            ->setAvailableToPartners($availableToPartners)
            ->setAverageCost($averageCost)
            ->setBackwardConsumptionDays($backwardConsumptionDays)
            ->setBasePrice($basePrice)
            ->setBillExchRateVarianceAcct($billExchRateVarianceAcct)
            ->setBillPriceVarianceAcct($billPriceVarianceAcct)
            ->setBillQtyVarianceAcct($billQtyVarianceAcct)
            ->setBinNumber($binNumber)
            ->setBinOnHandAvail($binOnHandAvail)
            ->setBinOnHandCount($binOnHandCount)
            ->setBomQuantity($bomQuantity)
            ->setBuildEntireAssembly($buildEntireAssembly)
            ->setBuildTime($buildTime)
            ->setBuyItNowPrice($buyItNowPrice)
            ->setCategory($category)
            ->setCategoryPreferred($categoryPreferred)
            ->setClass($class)
            ->setComponentYield($componentYield)
            ->setConsumptionUnit($consumptionUnit)
            ->setContingentRevenueHandling($contingentRevenueHandling)
            ->setCopyDescription($copyDescription)
            ->setCorrelatedItem($correlatedItem)
            ->setCorrelatedItemCorrelation($correlatedItemCorrelation)
            ->setCorrelatedItemCount($correlatedItemCount)
            ->setCorrelatedItemLift($correlatedItemLift)
            ->setCorrelatedItemPurchaseRate($correlatedItemPurchaseRate)
            ->setCost($cost)
            ->setCostAccountingStatus($costAccountingStatus)
            ->setCostCategory($costCategory)
            ->setCostEstimate($costEstimate)
            ->setCostEstimateType($costEstimateType)
            ->setCostingMethod($costingMethod)
            ->setCountryOfManufacture($countryOfManufacture)
            ->setCreated($created)
            ->setCreateJob($createJob)
            ->setCreateRevenuePlansOn($createRevenuePlansOn)
            ->setCustReturnVarianceAccount($custReturnVarianceAccount)
            ->setDateViewed($dateViewed)
            ->setDaysBeforeExpiration($daysBeforeExpiration)
            ->setDefaultReturnCost($defaultReturnCost)
            ->setDefaultShippingMethod($defaultShippingMethod)
            ->setDeferredExpenseAccount($deferredExpenseAccount)
            ->setDeferredRevenueAccount($deferredRevenueAccount)
            ->setDeferRevRec($deferRevRec)
            ->setDemandModifier($demandModifier)
            ->setDemandSource($demandSource)
            ->setDemandTimeFence($demandTimeFence)
            ->setDepartment($department)
            ->setDepartmentnohierarchy($departmentnohierarchy)
            ->setDirectRevenuePosting($directRevenuePosting)
            ->setDisplayIneBayStore($displayIneBayStore)
            ->setDisplayName($displayName)
            ->setDistributionCategory($distributionCategory)
            ->setDistributionNetwork($distributionNetwork)
            ->setDontShowPrice($dontShowPrice)
            ->setEBayItemDescription($eBayItemDescription)
            ->setEBayItemSubtitle($eBayItemSubtitle)
            ->setEBayItemTitle($eBayItemTitle)
            ->setEbayRelistingOption($ebayRelistingOption)
            ->setEffectiveBomControl($effectiveBomControl)
            ->setEffectiveDate($effectiveDate)
            ->setEffectiveRevision($effectiveRevision)
            ->setEndAuctionsWhenOutOfStock($endAuctionsWhenOutOfStock)
            ->setExcludeFromSitemap($excludeFromSitemap)
            ->setExpenseAccount($expenseAccount)
            ->setExternalId($externalId)
            ->setFeaturedDescription($featuredDescription)
            ->setFeedDescription($feedDescription)
            ->setFeedName($feedName)
            ->setFixedLotSize($fixedLotSize)
            ->setForwardConsumptionDays($forwardConsumptionDays)
            ->setFraudRisk($fraudRisk)
            ->setFroogleProductFeed($froogleProductFeed)
            ->setFutureHorizon($futureHorizon)
            ->setFxCost($fxCost)
            ->setGainLossAccount($gainLossAccount)
            ->setGenerateAccruals($generateAccruals)
            ->setGiftCertAuthCode($giftCertAuthCode)
            ->setGiftCertEmail($giftCertEmail)
            ->setGiftCertExpirationDate($giftCertExpirationDate)
            ->setGiftCertFrom($giftCertFrom)
            ->setGiftCertMessage($giftCertMessage)
            ->setGiftCertOriginalAmount($giftCertOriginalAmount)
            ->setGiftCertRecipient($giftCertRecipient)
            ->setHierarchyNode($hierarchyNode)
            ->setHierarchyVersion($hierarchyVersion)
            ->setHits($hits)
            ->setImageUrl($imageUrl)
            ->setIncludeChildren($includeChildren)
            ->setIncomeAccount($incomeAccount)
            ->setIntercoDefRevAccount($intercoDefRevAccount)
            ->setIntercoExpenseAccount($intercoExpenseAccount)
            ->setIntercoIncomeAccount($intercoIncomeAccount)
            ->setInternalId($internalId)
            ->setInventoryLocation($inventoryLocation)
            ->setInvtClassification($invtClassification)
            ->setInvtCountInterval($invtCountInterval)
            ->setIsAvailable($isAvailable)
            ->setIsDropShipItem($isDropShipItem)
            ->setIsFulfillable($isFulfillable)
            ->setIsGcoCompliant($isGcoCompliant)
            ->setIsInactive($isInactive)
            ->setIsLotItem($isLotItem)
            ->setIsOnline($isOnline)
            ->setIsSerialItem($isSerialItem)
            ->setIsSpecialOrderItem($isSpecialOrderItem)
            ->setIsSpecialWorkOrderItem($isSpecialWorkOrderItem)
            ->setIsStorePickupAllowed($isStorePickupAllowed)
            ->setIssueProduct($issueProduct)
            ->setIsTaxable($isTaxable)
            ->setIsVsoeBundle($isVsoeBundle)
            ->setIsWip($isWip)
            ->setItemId($itemId)
            ->setItemRevenueCategory($itemRevenueCategory)
            ->setItemUrl($itemUrl)
            ->setLastInvtCountDate($lastInvtCountDate)
            ->setLastPurchasePrice($lastPurchasePrice)
            ->setLastQuantityAvailableChange($lastQuantityAvailableChange)
            ->setLeadTime($leadTime)
            ->setLiabilityAccount($liabilityAccount)
            ->setListingDuration($listingDuration)
            ->setLocation($location)
            ->setLocationAllowStorePickup($locationAllowStorePickup)
            ->setLocationAtpLeadTime($locationAtpLeadTime)
            ->setLocationAverageCost($locationAverageCost)
            ->setLocationBinQuantityAvailable($locationBinQuantityAvailable)
            ->setLocationBuildTime($locationBuildTime)
            ->setLocationCost($locationCost)
            ->setLocationCostAccountingStatus($locationCostAccountingStatus)
            ->setLocationDefaultReturnCost($locationDefaultReturnCost)
            ->setLocationDemandSource($locationDemandSource)
            ->setLocationDemandTimeFence($locationDemandTimeFence)
            ->setLocationFixedLotSize($locationFixedLotSize)
            ->setLocationInventoryCostTemplate($locationInventoryCostTemplate)
            ->setLocationInvtClassification($locationInvtClassification)
            ->setLocationInvtCountInterval($locationInvtCountInterval)
            ->setLocationLastInvtCountDate($locationLastInvtCountDate)
            ->setLocationLeadTime($locationLeadTime)
            ->setLocationNextInvtCountDate($locationNextInvtCountDate)
            ->setLocationPeriodicLotSizeDays($locationPeriodicLotSizeDays)
            ->setLocationPeriodicLotSizeType($locationPeriodicLotSizeType)
            ->setLocationPreferredStockLevel($locationPreferredStockLevel)
            ->setLocationQtyAvailForStorePickup($locationQtyAvailForStorePickup)
            ->setLocationQuantityAvailable($locationQuantityAvailable)
            ->setLocationQuantityBackOrdered($locationQuantityBackOrdered)
            ->setLocationQuantityCommitted($locationQuantityCommitted)
            ->setLocationQuantityInTransit($locationQuantityInTransit)
            ->setLocationQuantityOnHand($locationQuantityOnHand)
            ->setLocationQuantityOnOrder($locationQuantityOnOrder)
            ->setLocationReOrderPoint($locationReOrderPoint)
            ->setLocationRescheduleInDays($locationRescheduleInDays)
            ->setLocationRescheduleOutDays($locationRescheduleOutDays)
            ->setLocationSafetyStockLevel($locationSafetyStockLevel)
            ->setLocationStorePickupBufferStock($locationStorePickupBufferStock)
            ->setLocationSupplyLotSizingMethod($locationSupplyLotSizingMethod)
            ->setLocationSupplyTimeFence($locationSupplyTimeFence)
            ->setLocationSupplyType($locationSupplyType)
            ->setLocationTotalValue($locationTotalValue)
            ->setLocBackwardConsumptionDays($locBackwardConsumptionDays)
            ->setLocForwardConsumptionDays($locForwardConsumptionDays)
            ->setManufacturer($manufacturer)
            ->setManufacturerAddr1($manufacturerAddr1)
            ->setManufacturerCity($manufacturerCity)
            ->setManufacturerState($manufacturerState)
            ->setManufacturerTariff($manufacturerTariff)
            ->setManufacturerTaxId($manufacturerTaxId)
            ->setManufacturerZip($manufacturerZip)
            ->setManufacturingChargeItem($manufacturingChargeItem)
            ->setMatchBillToReceipt($matchBillToReceipt)
            ->setMaximumQuantity($maximumQuantity)
            ->setMemberItem($memberItem)
            ->setMemberQuantity($memberQuantity)
            ->setMetaTagHtml($metaTagHtml)
            ->setMinimumQuantity($minimumQuantity)
            ->setModified($modified)
            ->setMossApplies($mossApplies)
            ->setMpn($mpn)
            ->setMultManufactureAddr($multManufactureAddr)
            ->setNextagCategory($nextagCategory)
            ->setNextagProductFeed($nextagProductFeed)
            ->setNextInvtCountDate($nextInvtCountDate)
            ->setNoPriceMessage($noPriceMessage)
            ->setNumActiveListings($numActiveListings)
            ->setNumberAllowedDownloads($numberAllowedDownloads)
            ->setNumCurrentlyListed($numCurrentlyListed)
            ->setObsoleteDate($obsoleteDate)
            ->setObsoleteRevision($obsoleteRevision)
            ->setOfferSupport($offerSupport)
            ->setOnlineCustomerPrice($onlineCustomerPrice)
            ->setOnlinePrice($onlinePrice)
            ->setOnSpecial($onSpecial)
            ->setOtherPrices($otherPrices)
            ->setOtherVendor($otherVendor)
            ->setOutOfStockBehavior($outOfStockBehavior)
            ->setOutOfStockMessage($outOfStockMessage)
            ->setOverallQuantityPricingType($overallQuantityPricingType)
            ->setOverheadType($overheadType)
            ->setPageTitle($pageTitle)
            ->setParent($parent)
            ->setPeriodicLotSizeDays($periodicLotSizeDays)
            ->setPeriodicLotSizeType($periodicLotSizeType)
            ->setPreferenceCriterion($preferenceCriterion)
            ->setPreferredBin($preferredBin)
            ->setPreferredLocation($preferredLocation)
            ->setPreferredStockLevel($preferredStockLevel)
            ->setPreferredStockLevelDays($preferredStockLevelDays)
            ->setPricesIncludeTax($pricesIncludeTax)
            ->setPricingGroup($pricingGroup)
            ->setPrimaryCategory($primaryCategory)
            ->setProdPriceVarianceAcct($prodPriceVarianceAcct)
            ->setProdQtyVarianceAcct($prodQtyVarianceAcct)
            ->setPurchaseDescription($purchaseDescription)
            ->setPurchaseOrderAmount($purchaseOrderAmount)
            ->setPurchaseOrderQuantity($purchaseOrderQuantity)
            ->setPurchaseOrderQuantityDiff($purchaseOrderQuantityDiff)
            ->setPurchasePriceVarianceAcct($purchasePriceVarianceAcct)
            ->setPurchaseUnit($purchaseUnit)
            ->setQuantityAvailable($quantityAvailable)
            ->setQuantityBackOrdered($quantityBackOrdered)
            ->setQuantityCommitted($quantityCommitted)
            ->setQuantityOnHand($quantityOnHand)
            ->setQuantityOnOrder($quantityOnOrder)
            ->setQuantityPricingSchedule($quantityPricingSchedule)
            ->setReceiptAmount($receiptAmount)
            ->setReceiptQuantity($receiptQuantity)
            ->setReceiptQuantityDiff($receiptQuantityDiff)
            ->setReorderMultiple($reorderMultiple)
            ->setReOrderPoint($reOrderPoint)
            ->setRescheduleInDays($rescheduleInDays)
            ->setRescheduleOutDays($rescheduleOutDays)
            ->setReservePrice($reservePrice)
            ->setRevenueAllocationGroup($revenueAllocationGroup)
            ->setRevenueRecognitionRule($revenueRecognitionRule)
            ->setRevRecForecastRule($revRecForecastRule)
            ->setRevReclassFXAccount($revReclassFXAccount)
            ->setRevRecSchedule($revRecSchedule)
            ->setRoundUpAsComponent($roundUpAsComponent)
            ->setSafetyStockLevel($safetyStockLevel)
            ->setSafetyStockLevelDays($safetyStockLevelDays)
            ->setSalesDescription($salesDescription)
            ->setSalesTaxCode($salesTaxCode)
            ->setSaleUnit($saleUnit)
            ->setSameAsPrimaryBookAmortization($sameAsPrimaryBookAmortization)
            ->setSameAsPrimaryBookRevRec($sameAsPrimaryBookRevRec)
            ->setScheduleBCode($scheduleBCode)
            ->setScheduleBNumber($scheduleBNumber)
            ->setScheduleBQuantity($scheduleBQuantity)
            ->setScrapAcct($scrapAcct)
            ->setSearchKeywords($searchKeywords)
            ->setSeasonalDemand($seasonalDemand)
            ->setSellOnEBay($sellOnEBay)
            ->setSerialNumber($serialNumber)
            ->setSerialNumberLocation($serialNumberLocation)
            ->setShipIndividually($shipIndividually)
            ->setShipPackage($shipPackage)
            ->setShippingCarrier($shippingCarrier)
            ->setShippingRate($shippingRate)
            ->setShoppingDotComCategory($shoppingDotComCategory)
            ->setShoppingProductFeed($shoppingProductFeed)
            ->setShopzillaCategoryId($shopzillaCategoryId)
            ->setShopzillaProductFeed($shopzillaProductFeed)
            ->setSitemapPriority($sitemapPriority)
            ->setSoftDescriptor($softDescriptor)
            ->setStartingPrice($startingPrice)
            ->setStockDescription($stockDescription)
            ->setStockUnit($stockUnit)
            ->setStoreDescription($storeDescription)
            ->setStoreDetailedDescription($storeDetailedDescription)
            ->setStoreDisplayImage($storeDisplayImage)
            ->setStoreDisplayName($storeDisplayName)
            ->setStoreDisplayThumbnail($storeDisplayThumbnail)
            ->setSubsidiary($subsidiary)
            ->setSubType($subType)
            ->setSupplyLotSizingMethod($supplyLotSizingMethod)
            ->setSupplyReplenishmentMethod($supplyReplenishmentMethod)
            ->setSupplyTimeFence($supplyTimeFence)
            ->setSupplyType($supplyType)
            ->setTaxSchedule($taxSchedule)
            ->setThumbNailUrl($thumbNailUrl)
            ->setTotalValue($totalValue)
            ->setTrackLandedCost($trackLandedCost)
            ->setTransferPrice($transferPrice)
            ->setType($type)
            ->setUnbuildVarianceAccount($unbuildVarianceAccount)
            ->setUnitsType($unitsType)
            ->setUpcCode($upcCode)
            ->setUrlComponent($urlComponent)
            ->setUseBins($useBins)
            ->setUseComponentYield($useComponentYield)
            ->setUseMarginalRates($useMarginalRates)
            ->setVendor($vendor)
            ->setVendorCode($vendorCode)
            ->setVendorCost($vendorCost)
            ->setVendorCostEntered($vendorCostEntered)
            ->setVendorName($vendorName)
            ->setVendorPriceCurrency($vendorPriceCurrency)
            ->setVendorSchedule($vendorSchedule)
            ->setVendReturnVarianceAccount($vendReturnVarianceAccount)
            ->setVsoeDeferral($vsoeDeferral)
            ->setVsoeDelivered($vsoeDelivered)
            ->setVsoePermitDiscount($vsoePermitDiscount)
            ->setVsoePrice($vsoePrice)
            ->setVsoeSopGroup($vsoeSopGroup)
            ->setWebSite($webSite)
            ->setWeight($weight)
            ->setWeightUnit($weightUnit)
            ->setWipAcct($wipAcct)
            ->setWipVarianceAcct($wipVarianceAcct)
            ->setYahooProductFeed($yahooProductFeed)
            ->setCustomFieldList($customFieldList);
    }
    /**
     * Get accBookRevRecForecastRule value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAccBookRevRecForecastRule()
    {
        return $this->accBookRevRecForecastRule;
    }
    /**
     * This method is responsible for validating the values passed to the setAccBookRevRecForecastRule method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAccBookRevRecForecastRule method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAccBookRevRecForecastRuleForArrayConstraintsFromSetAccBookRevRecForecastRule(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAccBookRevRecForecastRuleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAccBookRevRecForecastRuleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicAccBookRevRecForecastRuleItem) ? get_class($itemSearchRowBasicAccBookRevRecForecastRuleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAccBookRevRecForecastRuleItem), var_export($itemSearchRowBasicAccBookRevRecForecastRuleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The accBookRevRecForecastRule 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 accBookRevRecForecastRule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $accBookRevRecForecastRule
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAccBookRevRecForecastRule(array $accBookRevRecForecastRule = array())
    {
        // validation for constraint: array
        if ('' !== ($accBookRevRecForecastRuleArrayErrorMessage = self::validateAccBookRevRecForecastRuleForArrayConstraintsFromSetAccBookRevRecForecastRule($accBookRevRecForecastRule))) {
            throw new \InvalidArgumentException($accBookRevRecForecastRuleArrayErrorMessage, __LINE__);
        }
        $this->accBookRevRecForecastRule = $accBookRevRecForecastRule;
        return $this;
    }
    /**
     * Add item to accBookRevRecForecastRule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAccBookRevRecForecastRule(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The accBookRevRecForecastRule 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->accBookRevRecForecastRule[] = $item;
        return $this;
    }
    /**
     * Get accountingBook value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAccountingBook()
    {
        return $this->accountingBook;
    }
    /**
     * This method is responsible for validating the values passed to the setAccountingBook method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAccountingBook method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAccountingBookForArrayConstraintsFromSetAccountingBook(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAccountingBookItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAccountingBookItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicAccountingBookItem) ? get_class($itemSearchRowBasicAccountingBookItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAccountingBookItem), var_export($itemSearchRowBasicAccountingBookItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The accountingBook property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set accountingBook value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $accountingBook
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAccountingBook(array $accountingBook = array())
    {
        // validation for constraint: array
        if ('' !== ($accountingBookArrayErrorMessage = self::validateAccountingBookForArrayConstraintsFromSetAccountingBook($accountingBook))) {
            throw new \InvalidArgumentException($accountingBookArrayErrorMessage, __LINE__);
        }
        $this->accountingBook = $accountingBook;
        return $this;
    }
    /**
     * Add item to accountingBook value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAccountingBook(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The accountingBook property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->accountingBook[] = $item;
        return $this;
    }
    /**
     * Get accountingBookAmortization value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAccountingBookAmortization()
    {
        return $this->accountingBookAmortization;
    }
    /**
     * This method is responsible for validating the values passed to the setAccountingBookAmortization method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAccountingBookAmortization method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAccountingBookAmortizationForArrayConstraintsFromSetAccountingBookAmortization(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAccountingBookAmortizationItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAccountingBookAmortizationItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicAccountingBookAmortizationItem) ? get_class($itemSearchRowBasicAccountingBookAmortizationItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAccountingBookAmortizationItem), var_export($itemSearchRowBasicAccountingBookAmortizationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The accountingBookAmortization 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 accountingBookAmortization value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $accountingBookAmortization
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAccountingBookAmortization(array $accountingBookAmortization = array())
    {
        // validation for constraint: array
        if ('' !== ($accountingBookAmortizationArrayErrorMessage = self::validateAccountingBookAmortizationForArrayConstraintsFromSetAccountingBookAmortization($accountingBookAmortization))) {
            throw new \InvalidArgumentException($accountingBookAmortizationArrayErrorMessage, __LINE__);
        }
        $this->accountingBookAmortization = $accountingBookAmortization;
        return $this;
    }
    /**
     * Add item to accountingBookAmortization value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAccountingBookAmortization(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The accountingBookAmortization 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->accountingBookAmortization[] = $item;
        return $this;
    }
    /**
     * Get accountingBookCreatePlansOn value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAccountingBookCreatePlansOn()
    {
        return $this->accountingBookCreatePlansOn;
    }
    /**
     * This method is responsible for validating the values passed to the setAccountingBookCreatePlansOn method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAccountingBookCreatePlansOn method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAccountingBookCreatePlansOnForArrayConstraintsFromSetAccountingBookCreatePlansOn(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAccountingBookCreatePlansOnItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAccountingBookCreatePlansOnItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicAccountingBookCreatePlansOnItem) ? get_class($itemSearchRowBasicAccountingBookCreatePlansOnItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAccountingBookCreatePlansOnItem), var_export($itemSearchRowBasicAccountingBookCreatePlansOnItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The accountingBookCreatePlansOn 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 accountingBookCreatePlansOn value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $accountingBookCreatePlansOn
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAccountingBookCreatePlansOn(array $accountingBookCreatePlansOn = array())
    {
        // validation for constraint: array
        if ('' !== ($accountingBookCreatePlansOnArrayErrorMessage = self::validateAccountingBookCreatePlansOnForArrayConstraintsFromSetAccountingBookCreatePlansOn($accountingBookCreatePlansOn))) {
            throw new \InvalidArgumentException($accountingBookCreatePlansOnArrayErrorMessage, __LINE__);
        }
        $this->accountingBookCreatePlansOn = $accountingBookCreatePlansOn;
        return $this;
    }
    /**
     * Add item to accountingBookCreatePlansOn value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAccountingBookCreatePlansOn(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The accountingBookCreatePlansOn 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->accountingBookCreatePlansOn[] = $item;
        return $this;
    }
    /**
     * Get accountingBookRevRecRule value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAccountingBookRevRecRule()
    {
        return $this->accountingBookRevRecRule;
    }
    /**
     * This method is responsible for validating the values passed to the setAccountingBookRevRecRule method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAccountingBookRevRecRule method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAccountingBookRevRecRuleForArrayConstraintsFromSetAccountingBookRevRecRule(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAccountingBookRevRecRuleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAccountingBookRevRecRuleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicAccountingBookRevRecRuleItem) ? get_class($itemSearchRowBasicAccountingBookRevRecRuleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAccountingBookRevRecRuleItem), var_export($itemSearchRowBasicAccountingBookRevRecRuleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The accountingBookRevRecRule 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 accountingBookRevRecRule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $accountingBookRevRecRule
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAccountingBookRevRecRule(array $accountingBookRevRecRule = array())
    {
        // validation for constraint: array
        if ('' !== ($accountingBookRevRecRuleArrayErrorMessage = self::validateAccountingBookRevRecRuleForArrayConstraintsFromSetAccountingBookRevRecRule($accountingBookRevRecRule))) {
            throw new \InvalidArgumentException($accountingBookRevRecRuleArrayErrorMessage, __LINE__);
        }
        $this->accountingBookRevRecRule = $accountingBookRevRecRule;
        return $this;
    }
    /**
     * Add item to accountingBookRevRecRule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAccountingBookRevRecRule(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The accountingBookRevRecRule 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->accountingBookRevRecRule[] = $item;
        return $this;
    }
    /**
     * Get accountingBookRevRecSchedule value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAccountingBookRevRecSchedule()
    {
        return $this->accountingBookRevRecSchedule;
    }
    /**
     * This method is responsible for validating the values passed to the setAccountingBookRevRecSchedule method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAccountingBookRevRecSchedule method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAccountingBookRevRecScheduleForArrayConstraintsFromSetAccountingBookRevRecSchedule(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAccountingBookRevRecScheduleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAccountingBookRevRecScheduleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicAccountingBookRevRecScheduleItem) ? get_class($itemSearchRowBasicAccountingBookRevRecScheduleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAccountingBookRevRecScheduleItem), var_export($itemSearchRowBasicAccountingBookRevRecScheduleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The accountingBookRevRecSchedule 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 accountingBookRevRecSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $accountingBookRevRecSchedule
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAccountingBookRevRecSchedule(array $accountingBookRevRecSchedule = array())
    {
        // validation for constraint: array
        if ('' !== ($accountingBookRevRecScheduleArrayErrorMessage = self::validateAccountingBookRevRecScheduleForArrayConstraintsFromSetAccountingBookRevRecSchedule($accountingBookRevRecSchedule))) {
            throw new \InvalidArgumentException($accountingBookRevRecScheduleArrayErrorMessage, __LINE__);
        }
        $this->accountingBookRevRecSchedule = $accountingBookRevRecSchedule;
        return $this;
    }
    /**
     * Add item to accountingBookRevRecSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAccountingBookRevRecSchedule(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The accountingBookRevRecSchedule 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->accountingBookRevRecSchedule[] = $item;
        return $this;
    }
    /**
     * Get allowedShippingMethod value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAllowedShippingMethod()
    {
        return $this->allowedShippingMethod;
    }
    /**
     * This method is responsible for validating the values passed to the setAllowedShippingMethod method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAllowedShippingMethod method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAllowedShippingMethodForArrayConstraintsFromSetAllowedShippingMethod(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAllowedShippingMethodItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAllowedShippingMethodItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicAllowedShippingMethodItem) ? get_class($itemSearchRowBasicAllowedShippingMethodItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAllowedShippingMethodItem), var_export($itemSearchRowBasicAllowedShippingMethodItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The allowedShippingMethod 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 allowedShippingMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $allowedShippingMethod
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAllowedShippingMethod(array $allowedShippingMethod = array())
    {
        // validation for constraint: array
        if ('' !== ($allowedShippingMethodArrayErrorMessage = self::validateAllowedShippingMethodForArrayConstraintsFromSetAllowedShippingMethod($allowedShippingMethod))) {
            throw new \InvalidArgumentException($allowedShippingMethodArrayErrorMessage, __LINE__);
        }
        $this->allowedShippingMethod = $allowedShippingMethod;
        return $this;
    }
    /**
     * Add item to allowedShippingMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAllowedShippingMethod(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The allowedShippingMethod 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->allowedShippingMethod[] = $item;
        return $this;
    }
    /**
     * Get alternateDemandSourceItem value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAlternateDemandSourceItem()
    {
        return $this->alternateDemandSourceItem;
    }
    /**
     * This method is responsible for validating the values passed to the setAlternateDemandSourceItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAlternateDemandSourceItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAlternateDemandSourceItemForArrayConstraintsFromSetAlternateDemandSourceItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAlternateDemandSourceItemItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAlternateDemandSourceItemItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicAlternateDemandSourceItemItem) ? get_class($itemSearchRowBasicAlternateDemandSourceItemItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAlternateDemandSourceItemItem), var_export($itemSearchRowBasicAlternateDemandSourceItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The alternateDemandSourceItem 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 alternateDemandSourceItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $alternateDemandSourceItem
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAlternateDemandSourceItem(array $alternateDemandSourceItem = array())
    {
        // validation for constraint: array
        if ('' !== ($alternateDemandSourceItemArrayErrorMessage = self::validateAlternateDemandSourceItemForArrayConstraintsFromSetAlternateDemandSourceItem($alternateDemandSourceItem))) {
            throw new \InvalidArgumentException($alternateDemandSourceItemArrayErrorMessage, __LINE__);
        }
        $this->alternateDemandSourceItem = $alternateDemandSourceItem;
        return $this;
    }
    /**
     * Add item to alternateDemandSourceItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAlternateDemandSourceItem(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The alternateDemandSourceItem 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->alternateDemandSourceItem[] = $item;
        return $this;
    }
    /**
     * Get assetAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAssetAccount()
    {
        return $this->assetAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setAssetAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAssetAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAssetAccountForArrayConstraintsFromSetAssetAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAssetAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAssetAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicAssetAccountItem) ? get_class($itemSearchRowBasicAssetAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAssetAccountItem), var_export($itemSearchRowBasicAssetAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The assetAccount 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 assetAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $assetAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAssetAccount(array $assetAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($assetAccountArrayErrorMessage = self::validateAssetAccountForArrayConstraintsFromSetAssetAccount($assetAccount))) {
            throw new \InvalidArgumentException($assetAccountArrayErrorMessage, __LINE__);
        }
        $this->assetAccount = $assetAccount;
        return $this;
    }
    /**
     * Add item to assetAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAssetAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The assetAccount 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->assetAccount[] = $item;
        return $this;
    }
    /**
     * Get atpLeadTime value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getAtpLeadTime()
    {
        return $this->atpLeadTime;
    }
    /**
     * This method is responsible for validating the values passed to the setAtpLeadTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAtpLeadTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAtpLeadTimeForArrayConstraintsFromSetAtpLeadTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAtpLeadTimeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAtpLeadTimeItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicAtpLeadTimeItem) ? get_class($itemSearchRowBasicAtpLeadTimeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAtpLeadTimeItem), var_export($itemSearchRowBasicAtpLeadTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The atpLeadTime 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 atpLeadTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $atpLeadTime
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAtpLeadTime(array $atpLeadTime = array())
    {
        // validation for constraint: array
        if ('' !== ($atpLeadTimeArrayErrorMessage = self::validateAtpLeadTimeForArrayConstraintsFromSetAtpLeadTime($atpLeadTime))) {
            throw new \InvalidArgumentException($atpLeadTimeArrayErrorMessage, __LINE__);
        }
        $this->atpLeadTime = $atpLeadTime;
        return $this;
    }
    /**
     * Add item to atpLeadTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAtpLeadTime(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The atpLeadTime 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->atpLeadTime[] = $item;
        return $this;
    }
    /**
     * Get atpMethod value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getAtpMethod()
    {
        return $this->atpMethod;
    }
    /**
     * This method is responsible for validating the values passed to the setAtpMethod method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAtpMethod method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAtpMethodForArrayConstraintsFromSetAtpMethod(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAtpMethodItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAtpMethodItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicAtpMethodItem) ? get_class($itemSearchRowBasicAtpMethodItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAtpMethodItem), var_export($itemSearchRowBasicAtpMethodItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The atpMethod 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 atpMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $atpMethod
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAtpMethod(array $atpMethod = array())
    {
        // validation for constraint: array
        if ('' !== ($atpMethodArrayErrorMessage = self::validateAtpMethodForArrayConstraintsFromSetAtpMethod($atpMethod))) {
            throw new \InvalidArgumentException($atpMethodArrayErrorMessage, __LINE__);
        }
        $this->atpMethod = $atpMethod;
        return $this;
    }
    /**
     * Add item to atpMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAtpMethod(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The atpMethod 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->atpMethod[] = $item;
        return $this;
    }
    /**
     * Get autoLeadTime value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getAutoLeadTime()
    {
        return $this->autoLeadTime;
    }
    /**
     * This method is responsible for validating the values passed to the setAutoLeadTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAutoLeadTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAutoLeadTimeForArrayConstraintsFromSetAutoLeadTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAutoLeadTimeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAutoLeadTimeItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicAutoLeadTimeItem) ? get_class($itemSearchRowBasicAutoLeadTimeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAutoLeadTimeItem), var_export($itemSearchRowBasicAutoLeadTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The autoLeadTime 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 autoLeadTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $autoLeadTime
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAutoLeadTime(array $autoLeadTime = array())
    {
        // validation for constraint: array
        if ('' !== ($autoLeadTimeArrayErrorMessage = self::validateAutoLeadTimeForArrayConstraintsFromSetAutoLeadTime($autoLeadTime))) {
            throw new \InvalidArgumentException($autoLeadTimeArrayErrorMessage, __LINE__);
        }
        $this->autoLeadTime = $autoLeadTime;
        return $this;
    }
    /**
     * Add item to autoLeadTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAutoLeadTime(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The autoLeadTime 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->autoLeadTime[] = $item;
        return $this;
    }
    /**
     * Get autoPreferredStockLevel value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getAutoPreferredStockLevel()
    {
        return $this->autoPreferredStockLevel;
    }
    /**
     * This method is responsible for validating the values passed to the setAutoPreferredStockLevel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAutoPreferredStockLevel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAutoPreferredStockLevelForArrayConstraintsFromSetAutoPreferredStockLevel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAutoPreferredStockLevelItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAutoPreferredStockLevelItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicAutoPreferredStockLevelItem) ? get_class($itemSearchRowBasicAutoPreferredStockLevelItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAutoPreferredStockLevelItem), var_export($itemSearchRowBasicAutoPreferredStockLevelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The autoPreferredStockLevel 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 autoPreferredStockLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $autoPreferredStockLevel
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAutoPreferredStockLevel(array $autoPreferredStockLevel = array())
    {
        // validation for constraint: array
        if ('' !== ($autoPreferredStockLevelArrayErrorMessage = self::validateAutoPreferredStockLevelForArrayConstraintsFromSetAutoPreferredStockLevel($autoPreferredStockLevel))) {
            throw new \InvalidArgumentException($autoPreferredStockLevelArrayErrorMessage, __LINE__);
        }
        $this->autoPreferredStockLevel = $autoPreferredStockLevel;
        return $this;
    }
    /**
     * Add item to autoPreferredStockLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAutoPreferredStockLevel(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The autoPreferredStockLevel 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->autoPreferredStockLevel[] = $item;
        return $this;
    }
    /**
     * Get autoReorderPoint value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getAutoReorderPoint()
    {
        return $this->autoReorderPoint;
    }
    /**
     * This method is responsible for validating the values passed to the setAutoReorderPoint method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAutoReorderPoint method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAutoReorderPointForArrayConstraintsFromSetAutoReorderPoint(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAutoReorderPointItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAutoReorderPointItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicAutoReorderPointItem) ? get_class($itemSearchRowBasicAutoReorderPointItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAutoReorderPointItem), var_export($itemSearchRowBasicAutoReorderPointItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The autoReorderPoint 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 autoReorderPoint value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $autoReorderPoint
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAutoReorderPoint(array $autoReorderPoint = array())
    {
        // validation for constraint: array
        if ('' !== ($autoReorderPointArrayErrorMessage = self::validateAutoReorderPointForArrayConstraintsFromSetAutoReorderPoint($autoReorderPoint))) {
            throw new \InvalidArgumentException($autoReorderPointArrayErrorMessage, __LINE__);
        }
        $this->autoReorderPoint = $autoReorderPoint;
        return $this;
    }
    /**
     * Add item to autoReorderPoint value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAutoReorderPoint(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The autoReorderPoint 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->autoReorderPoint[] = $item;
        return $this;
    }
    /**
     * Get availableToPartners value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getAvailableToPartners()
    {
        return $this->availableToPartners;
    }
    /**
     * This method is responsible for validating the values passed to the setAvailableToPartners method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAvailableToPartners method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAvailableToPartnersForArrayConstraintsFromSetAvailableToPartners(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAvailableToPartnersItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAvailableToPartnersItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicAvailableToPartnersItem) ? get_class($itemSearchRowBasicAvailableToPartnersItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAvailableToPartnersItem), var_export($itemSearchRowBasicAvailableToPartnersItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The availableToPartners 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 availableToPartners value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $availableToPartners
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAvailableToPartners(array $availableToPartners = array())
    {
        // validation for constraint: array
        if ('' !== ($availableToPartnersArrayErrorMessage = self::validateAvailableToPartnersForArrayConstraintsFromSetAvailableToPartners($availableToPartners))) {
            throw new \InvalidArgumentException($availableToPartnersArrayErrorMessage, __LINE__);
        }
        $this->availableToPartners = $availableToPartners;
        return $this;
    }
    /**
     * Add item to availableToPartners value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAvailableToPartners(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The availableToPartners 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->availableToPartners[] = $item;
        return $this;
    }
    /**
     * Get averageCost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getAverageCost()
    {
        return $this->averageCost;
    }
    /**
     * This method is responsible for validating the values passed to the setAverageCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAverageCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAverageCostForArrayConstraintsFromSetAverageCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicAverageCostItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicAverageCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicAverageCostItem) ? get_class($itemSearchRowBasicAverageCostItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicAverageCostItem), var_export($itemSearchRowBasicAverageCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The averageCost 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 averageCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $averageCost
     * @return \StructType\ItemSearchRowBasic
     */
    public function setAverageCost(array $averageCost = array())
    {
        // validation for constraint: array
        if ('' !== ($averageCostArrayErrorMessage = self::validateAverageCostForArrayConstraintsFromSetAverageCost($averageCost))) {
            throw new \InvalidArgumentException($averageCostArrayErrorMessage, __LINE__);
        }
        $this->averageCost = $averageCost;
        return $this;
    }
    /**
     * Add item to averageCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToAverageCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The averageCost 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->averageCost[] = $item;
        return $this;
    }
    /**
     * Get backwardConsumptionDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getBackwardConsumptionDays()
    {
        return $this->backwardConsumptionDays;
    }
    /**
     * This method is responsible for validating the values passed to the setBackwardConsumptionDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBackwardConsumptionDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBackwardConsumptionDaysForArrayConstraintsFromSetBackwardConsumptionDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBackwardConsumptionDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBackwardConsumptionDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicBackwardConsumptionDaysItem) ? get_class($itemSearchRowBasicBackwardConsumptionDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBackwardConsumptionDaysItem), var_export($itemSearchRowBasicBackwardConsumptionDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The backwardConsumptionDays 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 backwardConsumptionDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $backwardConsumptionDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBackwardConsumptionDays(array $backwardConsumptionDays = array())
    {
        // validation for constraint: array
        if ('' !== ($backwardConsumptionDaysArrayErrorMessage = self::validateBackwardConsumptionDaysForArrayConstraintsFromSetBackwardConsumptionDays($backwardConsumptionDays))) {
            throw new \InvalidArgumentException($backwardConsumptionDaysArrayErrorMessage, __LINE__);
        }
        $this->backwardConsumptionDays = $backwardConsumptionDays;
        return $this;
    }
    /**
     * Add item to backwardConsumptionDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBackwardConsumptionDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The backwardConsumptionDays 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->backwardConsumptionDays[] = $item;
        return $this;
    }
    /**
     * Get basePrice value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getBasePrice()
    {
        return $this->basePrice;
    }
    /**
     * This method is responsible for validating the values passed to the setBasePrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBasePrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBasePriceForArrayConstraintsFromSetBasePrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBasePriceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBasePriceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicBasePriceItem) ? get_class($itemSearchRowBasicBasePriceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBasePriceItem), var_export($itemSearchRowBasicBasePriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The basePrice 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 basePrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $basePrice
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBasePrice(array $basePrice = array())
    {
        // validation for constraint: array
        if ('' !== ($basePriceArrayErrorMessage = self::validateBasePriceForArrayConstraintsFromSetBasePrice($basePrice))) {
            throw new \InvalidArgumentException($basePriceArrayErrorMessage, __LINE__);
        }
        $this->basePrice = $basePrice;
        return $this;
    }
    /**
     * Add item to basePrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBasePrice(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The basePrice 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->basePrice[] = $item;
        return $this;
    }
    /**
     * Get billExchRateVarianceAcct value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getBillExchRateVarianceAcct()
    {
        return $this->billExchRateVarianceAcct;
    }
    /**
     * This method is responsible for validating the values passed to the setBillExchRateVarianceAcct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillExchRateVarianceAcct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillExchRateVarianceAcctForArrayConstraintsFromSetBillExchRateVarianceAcct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBillExchRateVarianceAcctItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBillExchRateVarianceAcctItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicBillExchRateVarianceAcctItem) ? get_class($itemSearchRowBasicBillExchRateVarianceAcctItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBillExchRateVarianceAcctItem), var_export($itemSearchRowBasicBillExchRateVarianceAcctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billExchRateVarianceAcct 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 billExchRateVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $billExchRateVarianceAcct
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBillExchRateVarianceAcct(array $billExchRateVarianceAcct = array())
    {
        // validation for constraint: array
        if ('' !== ($billExchRateVarianceAcctArrayErrorMessage = self::validateBillExchRateVarianceAcctForArrayConstraintsFromSetBillExchRateVarianceAcct($billExchRateVarianceAcct))) {
            throw new \InvalidArgumentException($billExchRateVarianceAcctArrayErrorMessage, __LINE__);
        }
        $this->billExchRateVarianceAcct = $billExchRateVarianceAcct;
        return $this;
    }
    /**
     * Add item to billExchRateVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBillExchRateVarianceAcct(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The billExchRateVarianceAcct 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->billExchRateVarianceAcct[] = $item;
        return $this;
    }
    /**
     * Get billPriceVarianceAcct value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getBillPriceVarianceAcct()
    {
        return $this->billPriceVarianceAcct;
    }
    /**
     * This method is responsible for validating the values passed to the setBillPriceVarianceAcct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillPriceVarianceAcct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillPriceVarianceAcctForArrayConstraintsFromSetBillPriceVarianceAcct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBillPriceVarianceAcctItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBillPriceVarianceAcctItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicBillPriceVarianceAcctItem) ? get_class($itemSearchRowBasicBillPriceVarianceAcctItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBillPriceVarianceAcctItem), var_export($itemSearchRowBasicBillPriceVarianceAcctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billPriceVarianceAcct 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 billPriceVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $billPriceVarianceAcct
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBillPriceVarianceAcct(array $billPriceVarianceAcct = array())
    {
        // validation for constraint: array
        if ('' !== ($billPriceVarianceAcctArrayErrorMessage = self::validateBillPriceVarianceAcctForArrayConstraintsFromSetBillPriceVarianceAcct($billPriceVarianceAcct))) {
            throw new \InvalidArgumentException($billPriceVarianceAcctArrayErrorMessage, __LINE__);
        }
        $this->billPriceVarianceAcct = $billPriceVarianceAcct;
        return $this;
    }
    /**
     * Add item to billPriceVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBillPriceVarianceAcct(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The billPriceVarianceAcct 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->billPriceVarianceAcct[] = $item;
        return $this;
    }
    /**
     * Get billQtyVarianceAcct value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getBillQtyVarianceAcct()
    {
        return $this->billQtyVarianceAcct;
    }
    /**
     * This method is responsible for validating the values passed to the setBillQtyVarianceAcct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBillQtyVarianceAcct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBillQtyVarianceAcctForArrayConstraintsFromSetBillQtyVarianceAcct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBillQtyVarianceAcctItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBillQtyVarianceAcctItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicBillQtyVarianceAcctItem) ? get_class($itemSearchRowBasicBillQtyVarianceAcctItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBillQtyVarianceAcctItem), var_export($itemSearchRowBasicBillQtyVarianceAcctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The billQtyVarianceAcct 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 billQtyVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $billQtyVarianceAcct
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBillQtyVarianceAcct(array $billQtyVarianceAcct = array())
    {
        // validation for constraint: array
        if ('' !== ($billQtyVarianceAcctArrayErrorMessage = self::validateBillQtyVarianceAcctForArrayConstraintsFromSetBillQtyVarianceAcct($billQtyVarianceAcct))) {
            throw new \InvalidArgumentException($billQtyVarianceAcctArrayErrorMessage, __LINE__);
        }
        $this->billQtyVarianceAcct = $billQtyVarianceAcct;
        return $this;
    }
    /**
     * Add item to billQtyVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBillQtyVarianceAcct(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The billQtyVarianceAcct 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->billQtyVarianceAcct[] = $item;
        return $this;
    }
    /**
     * Get binNumber value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBinNumber()
    {
        return $this->binNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setBinNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBinNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBinNumberForArrayConstraintsFromSetBinNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBinNumberItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBinNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicBinNumberItem) ? get_class($itemSearchRowBasicBinNumberItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBinNumberItem), var_export($itemSearchRowBasicBinNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The binNumber 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 binNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $binNumber
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBinNumber(array $binNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($binNumberArrayErrorMessage = self::validateBinNumberForArrayConstraintsFromSetBinNumber($binNumber))) {
            throw new \InvalidArgumentException($binNumberArrayErrorMessage, __LINE__);
        }
        $this->binNumber = $binNumber;
        return $this;
    }
    /**
     * Add item to binNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBinNumber(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The binNumber 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->binNumber[] = $item;
        return $this;
    }
    /**
     * Get binOnHandAvail value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getBinOnHandAvail()
    {
        return $this->binOnHandAvail;
    }
    /**
     * This method is responsible for validating the values passed to the setBinOnHandAvail method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBinOnHandAvail method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBinOnHandAvailForArrayConstraintsFromSetBinOnHandAvail(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBinOnHandAvailItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBinOnHandAvailItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicBinOnHandAvailItem) ? get_class($itemSearchRowBasicBinOnHandAvailItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBinOnHandAvailItem), var_export($itemSearchRowBasicBinOnHandAvailItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The binOnHandAvail 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 binOnHandAvail value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $binOnHandAvail
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBinOnHandAvail(array $binOnHandAvail = array())
    {
        // validation for constraint: array
        if ('' !== ($binOnHandAvailArrayErrorMessage = self::validateBinOnHandAvailForArrayConstraintsFromSetBinOnHandAvail($binOnHandAvail))) {
            throw new \InvalidArgumentException($binOnHandAvailArrayErrorMessage, __LINE__);
        }
        $this->binOnHandAvail = $binOnHandAvail;
        return $this;
    }
    /**
     * Add item to binOnHandAvail value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBinOnHandAvail(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The binOnHandAvail 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->binOnHandAvail[] = $item;
        return $this;
    }
    /**
     * Get binOnHandCount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getBinOnHandCount()
    {
        return $this->binOnHandCount;
    }
    /**
     * This method is responsible for validating the values passed to the setBinOnHandCount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBinOnHandCount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBinOnHandCountForArrayConstraintsFromSetBinOnHandCount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBinOnHandCountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBinOnHandCountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicBinOnHandCountItem) ? get_class($itemSearchRowBasicBinOnHandCountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBinOnHandCountItem), var_export($itemSearchRowBasicBinOnHandCountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The binOnHandCount 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 binOnHandCount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $binOnHandCount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBinOnHandCount(array $binOnHandCount = array())
    {
        // validation for constraint: array
        if ('' !== ($binOnHandCountArrayErrorMessage = self::validateBinOnHandCountForArrayConstraintsFromSetBinOnHandCount($binOnHandCount))) {
            throw new \InvalidArgumentException($binOnHandCountArrayErrorMessage, __LINE__);
        }
        $this->binOnHandCount = $binOnHandCount;
        return $this;
    }
    /**
     * Add item to binOnHandCount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBinOnHandCount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The binOnHandCount 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->binOnHandCount[] = $item;
        return $this;
    }
    /**
     * Get bomQuantity value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getBomQuantity()
    {
        return $this->bomQuantity;
    }
    /**
     * This method is responsible for validating the values passed to the setBomQuantity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBomQuantity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBomQuantityForArrayConstraintsFromSetBomQuantity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBomQuantityItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBomQuantityItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicBomQuantityItem) ? get_class($itemSearchRowBasicBomQuantityItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBomQuantityItem), var_export($itemSearchRowBasicBomQuantityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The bomQuantity 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 bomQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $bomQuantity
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBomQuantity(array $bomQuantity = array())
    {
        // validation for constraint: array
        if ('' !== ($bomQuantityArrayErrorMessage = self::validateBomQuantityForArrayConstraintsFromSetBomQuantity($bomQuantity))) {
            throw new \InvalidArgumentException($bomQuantityArrayErrorMessage, __LINE__);
        }
        $this->bomQuantity = $bomQuantity;
        return $this;
    }
    /**
     * Add item to bomQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBomQuantity(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The bomQuantity 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->bomQuantity[] = $item;
        return $this;
    }
    /**
     * Get buildEntireAssembly value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getBuildEntireAssembly()
    {
        return $this->buildEntireAssembly;
    }
    /**
     * This method is responsible for validating the values passed to the setBuildEntireAssembly method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBuildEntireAssembly method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBuildEntireAssemblyForArrayConstraintsFromSetBuildEntireAssembly(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBuildEntireAssemblyItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBuildEntireAssemblyItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicBuildEntireAssemblyItem) ? get_class($itemSearchRowBasicBuildEntireAssemblyItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBuildEntireAssemblyItem), var_export($itemSearchRowBasicBuildEntireAssemblyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The buildEntireAssembly 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 buildEntireAssembly value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $buildEntireAssembly
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBuildEntireAssembly(array $buildEntireAssembly = array())
    {
        // validation for constraint: array
        if ('' !== ($buildEntireAssemblyArrayErrorMessage = self::validateBuildEntireAssemblyForArrayConstraintsFromSetBuildEntireAssembly($buildEntireAssembly))) {
            throw new \InvalidArgumentException($buildEntireAssemblyArrayErrorMessage, __LINE__);
        }
        $this->buildEntireAssembly = $buildEntireAssembly;
        return $this;
    }
    /**
     * Add item to buildEntireAssembly value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBuildEntireAssembly(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The buildEntireAssembly 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->buildEntireAssembly[] = $item;
        return $this;
    }
    /**
     * Get buildTime value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getBuildTime()
    {
        return $this->buildTime;
    }
    /**
     * This method is responsible for validating the values passed to the setBuildTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBuildTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBuildTimeForArrayConstraintsFromSetBuildTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBuildTimeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBuildTimeItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicBuildTimeItem) ? get_class($itemSearchRowBasicBuildTimeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBuildTimeItem), var_export($itemSearchRowBasicBuildTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The buildTime 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 buildTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $buildTime
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBuildTime(array $buildTime = array())
    {
        // validation for constraint: array
        if ('' !== ($buildTimeArrayErrorMessage = self::validateBuildTimeForArrayConstraintsFromSetBuildTime($buildTime))) {
            throw new \InvalidArgumentException($buildTimeArrayErrorMessage, __LINE__);
        }
        $this->buildTime = $buildTime;
        return $this;
    }
    /**
     * Add item to buildTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBuildTime(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The buildTime 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->buildTime[] = $item;
        return $this;
    }
    /**
     * Get buyItNowPrice value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getBuyItNowPrice()
    {
        return $this->buyItNowPrice;
    }
    /**
     * This method is responsible for validating the values passed to the setBuyItNowPrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBuyItNowPrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBuyItNowPriceForArrayConstraintsFromSetBuyItNowPrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicBuyItNowPriceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicBuyItNowPriceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicBuyItNowPriceItem) ? get_class($itemSearchRowBasicBuyItNowPriceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicBuyItNowPriceItem), var_export($itemSearchRowBasicBuyItNowPriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The buyItNowPrice 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 buyItNowPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $buyItNowPrice
     * @return \StructType\ItemSearchRowBasic
     */
    public function setBuyItNowPrice(array $buyItNowPrice = array())
    {
        // validation for constraint: array
        if ('' !== ($buyItNowPriceArrayErrorMessage = self::validateBuyItNowPriceForArrayConstraintsFromSetBuyItNowPrice($buyItNowPrice))) {
            throw new \InvalidArgumentException($buyItNowPriceArrayErrorMessage, __LINE__);
        }
        $this->buyItNowPrice = $buyItNowPrice;
        return $this;
    }
    /**
     * Add item to buyItNowPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToBuyItNowPrice(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The buyItNowPrice 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->buyItNowPrice[] = $item;
        return $this;
    }
    /**
     * Get category value
     * @return \StructType\SearchColumnStringField[]|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 $itemSearchRowBasicCategoryItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCategoryItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicCategoryItem) ? get_class($itemSearchRowBasicCategoryItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCategoryItem), var_export($itemSearchRowBasicCategoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The category 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 category value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $category
     * @return \StructType\ItemSearchRowBasic
     */
    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\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCategory(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The category 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->category[] = $item;
        return $this;
    }
    /**
     * Get categoryPreferred value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCategoryPreferred()
    {
        return $this->categoryPreferred;
    }
    /**
     * This method is responsible for validating the values passed to the setCategoryPreferred method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCategoryPreferred method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCategoryPreferredForArrayConstraintsFromSetCategoryPreferred(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCategoryPreferredItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCategoryPreferredItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicCategoryPreferredItem) ? get_class($itemSearchRowBasicCategoryPreferredItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCategoryPreferredItem), var_export($itemSearchRowBasicCategoryPreferredItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The categoryPreferred 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 categoryPreferred value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $categoryPreferred
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCategoryPreferred(array $categoryPreferred = array())
    {
        // validation for constraint: array
        if ('' !== ($categoryPreferredArrayErrorMessage = self::validateCategoryPreferredForArrayConstraintsFromSetCategoryPreferred($categoryPreferred))) {
            throw new \InvalidArgumentException($categoryPreferredArrayErrorMessage, __LINE__);
        }
        $this->categoryPreferred = $categoryPreferred;
        return $this;
    }
    /**
     * Add item to categoryPreferred value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCategoryPreferred(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The categoryPreferred 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->categoryPreferred[] = $item;
        return $this;
    }
    /**
     * Get class value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getClass()
    {
        return $this->class;
    }
    /**
     * This method is responsible for validating the values passed to the setClass method
     * This method is willingly generated in order to preserve the one-line inline validation within the setClass method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateClassForArrayConstraintsFromSetClass(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicClassItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicClassItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicClassItem) ? get_class($itemSearchRowBasicClassItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicClassItem), var_export($itemSearchRowBasicClassItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The class property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set class value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $class
     * @return \StructType\ItemSearchRowBasic
     */
    public function setClass(array $class = array())
    {
        // validation for constraint: array
        if ('' !== ($classArrayErrorMessage = self::validateClassForArrayConstraintsFromSetClass($class))) {
            throw new \InvalidArgumentException($classArrayErrorMessage, __LINE__);
        }
        $this->class = $class;
        return $this;
    }
    /**
     * Add item to class value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToClass(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The class property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->class[] = $item;
        return $this;
    }
    /**
     * Get componentYield value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getComponentYield()
    {
        return $this->componentYield;
    }
    /**
     * This method is responsible for validating the values passed to the setComponentYield method
     * This method is willingly generated in order to preserve the one-line inline validation within the setComponentYield method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateComponentYieldForArrayConstraintsFromSetComponentYield(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicComponentYieldItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicComponentYieldItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicComponentYieldItem) ? get_class($itemSearchRowBasicComponentYieldItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicComponentYieldItem), var_export($itemSearchRowBasicComponentYieldItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The componentYield 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 componentYield value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $componentYield
     * @return \StructType\ItemSearchRowBasic
     */
    public function setComponentYield(array $componentYield = array())
    {
        // validation for constraint: array
        if ('' !== ($componentYieldArrayErrorMessage = self::validateComponentYieldForArrayConstraintsFromSetComponentYield($componentYield))) {
            throw new \InvalidArgumentException($componentYieldArrayErrorMessage, __LINE__);
        }
        $this->componentYield = $componentYield;
        return $this;
    }
    /**
     * Add item to componentYield value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToComponentYield(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The componentYield 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->componentYield[] = $item;
        return $this;
    }
    /**
     * Get consumptionUnit value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getConsumptionUnit()
    {
        return $this->consumptionUnit;
    }
    /**
     * This method is responsible for validating the values passed to the setConsumptionUnit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setConsumptionUnit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateConsumptionUnitForArrayConstraintsFromSetConsumptionUnit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicConsumptionUnitItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicConsumptionUnitItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicConsumptionUnitItem) ? get_class($itemSearchRowBasicConsumptionUnitItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicConsumptionUnitItem), var_export($itemSearchRowBasicConsumptionUnitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The consumptionUnit 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 consumptionUnit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $consumptionUnit
     * @return \StructType\ItemSearchRowBasic
     */
    public function setConsumptionUnit(array $consumptionUnit = array())
    {
        // validation for constraint: array
        if ('' !== ($consumptionUnitArrayErrorMessage = self::validateConsumptionUnitForArrayConstraintsFromSetConsumptionUnit($consumptionUnit))) {
            throw new \InvalidArgumentException($consumptionUnitArrayErrorMessage, __LINE__);
        }
        $this->consumptionUnit = $consumptionUnit;
        return $this;
    }
    /**
     * Add item to consumptionUnit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToConsumptionUnit(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The consumptionUnit 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->consumptionUnit[] = $item;
        return $this;
    }
    /**
     * Get contingentRevenueHandling value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getContingentRevenueHandling()
    {
        return $this->contingentRevenueHandling;
    }
    /**
     * This method is responsible for validating the values passed to the setContingentRevenueHandling method
     * This method is willingly generated in order to preserve the one-line inline validation within the setContingentRevenueHandling method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateContingentRevenueHandlingForArrayConstraintsFromSetContingentRevenueHandling(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicContingentRevenueHandlingItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicContingentRevenueHandlingItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicContingentRevenueHandlingItem) ? get_class($itemSearchRowBasicContingentRevenueHandlingItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicContingentRevenueHandlingItem), var_export($itemSearchRowBasicContingentRevenueHandlingItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The contingentRevenueHandling 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 contingentRevenueHandling value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $contingentRevenueHandling
     * @return \StructType\ItemSearchRowBasic
     */
    public function setContingentRevenueHandling(array $contingentRevenueHandling = array())
    {
        // validation for constraint: array
        if ('' !== ($contingentRevenueHandlingArrayErrorMessage = self::validateContingentRevenueHandlingForArrayConstraintsFromSetContingentRevenueHandling($contingentRevenueHandling))) {
            throw new \InvalidArgumentException($contingentRevenueHandlingArrayErrorMessage, __LINE__);
        }
        $this->contingentRevenueHandling = $contingentRevenueHandling;
        return $this;
    }
    /**
     * Add item to contingentRevenueHandling value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToContingentRevenueHandling(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The contingentRevenueHandling 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->contingentRevenueHandling[] = $item;
        return $this;
    }
    /**
     * Get copyDescription value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getCopyDescription()
    {
        return $this->copyDescription;
    }
    /**
     * This method is responsible for validating the values passed to the setCopyDescription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCopyDescription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCopyDescriptionForArrayConstraintsFromSetCopyDescription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCopyDescriptionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCopyDescriptionItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicCopyDescriptionItem) ? get_class($itemSearchRowBasicCopyDescriptionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCopyDescriptionItem), var_export($itemSearchRowBasicCopyDescriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The copyDescription 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 copyDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $copyDescription
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCopyDescription(array $copyDescription = array())
    {
        // validation for constraint: array
        if ('' !== ($copyDescriptionArrayErrorMessage = self::validateCopyDescriptionForArrayConstraintsFromSetCopyDescription($copyDescription))) {
            throw new \InvalidArgumentException($copyDescriptionArrayErrorMessage, __LINE__);
        }
        $this->copyDescription = $copyDescription;
        return $this;
    }
    /**
     * Add item to copyDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCopyDescription(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The copyDescription 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->copyDescription[] = $item;
        return $this;
    }
    /**
     * Get correlatedItem value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCorrelatedItem()
    {
        return $this->correlatedItem;
    }
    /**
     * This method is responsible for validating the values passed to the setCorrelatedItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCorrelatedItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCorrelatedItemForArrayConstraintsFromSetCorrelatedItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCorrelatedItemItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCorrelatedItemItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicCorrelatedItemItem) ? get_class($itemSearchRowBasicCorrelatedItemItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCorrelatedItemItem), var_export($itemSearchRowBasicCorrelatedItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The correlatedItem 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 correlatedItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $correlatedItem
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCorrelatedItem(array $correlatedItem = array())
    {
        // validation for constraint: array
        if ('' !== ($correlatedItemArrayErrorMessage = self::validateCorrelatedItemForArrayConstraintsFromSetCorrelatedItem($correlatedItem))) {
            throw new \InvalidArgumentException($correlatedItemArrayErrorMessage, __LINE__);
        }
        $this->correlatedItem = $correlatedItem;
        return $this;
    }
    /**
     * Add item to correlatedItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCorrelatedItem(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The correlatedItem 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->correlatedItem[] = $item;
        return $this;
    }
    /**
     * Get correlatedItemCorrelation value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getCorrelatedItemCorrelation()
    {
        return $this->correlatedItemCorrelation;
    }
    /**
     * This method is responsible for validating the values passed to the setCorrelatedItemCorrelation method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCorrelatedItemCorrelation method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCorrelatedItemCorrelationForArrayConstraintsFromSetCorrelatedItemCorrelation(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCorrelatedItemCorrelationItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCorrelatedItemCorrelationItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicCorrelatedItemCorrelationItem) ? get_class($itemSearchRowBasicCorrelatedItemCorrelationItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCorrelatedItemCorrelationItem), var_export($itemSearchRowBasicCorrelatedItemCorrelationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The correlatedItemCorrelation 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 correlatedItemCorrelation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $correlatedItemCorrelation
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCorrelatedItemCorrelation(array $correlatedItemCorrelation = array())
    {
        // validation for constraint: array
        if ('' !== ($correlatedItemCorrelationArrayErrorMessage = self::validateCorrelatedItemCorrelationForArrayConstraintsFromSetCorrelatedItemCorrelation($correlatedItemCorrelation))) {
            throw new \InvalidArgumentException($correlatedItemCorrelationArrayErrorMessage, __LINE__);
        }
        $this->correlatedItemCorrelation = $correlatedItemCorrelation;
        return $this;
    }
    /**
     * Add item to correlatedItemCorrelation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCorrelatedItemCorrelation(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The correlatedItemCorrelation 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->correlatedItemCorrelation[] = $item;
        return $this;
    }
    /**
     * Get correlatedItemCount value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getCorrelatedItemCount()
    {
        return $this->correlatedItemCount;
    }
    /**
     * This method is responsible for validating the values passed to the setCorrelatedItemCount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCorrelatedItemCount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCorrelatedItemCountForArrayConstraintsFromSetCorrelatedItemCount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCorrelatedItemCountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCorrelatedItemCountItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicCorrelatedItemCountItem) ? get_class($itemSearchRowBasicCorrelatedItemCountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCorrelatedItemCountItem), var_export($itemSearchRowBasicCorrelatedItemCountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The correlatedItemCount 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 correlatedItemCount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $correlatedItemCount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCorrelatedItemCount(array $correlatedItemCount = array())
    {
        // validation for constraint: array
        if ('' !== ($correlatedItemCountArrayErrorMessage = self::validateCorrelatedItemCountForArrayConstraintsFromSetCorrelatedItemCount($correlatedItemCount))) {
            throw new \InvalidArgumentException($correlatedItemCountArrayErrorMessage, __LINE__);
        }
        $this->correlatedItemCount = $correlatedItemCount;
        return $this;
    }
    /**
     * Add item to correlatedItemCount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCorrelatedItemCount(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The correlatedItemCount 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->correlatedItemCount[] = $item;
        return $this;
    }
    /**
     * Get correlatedItemLift value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getCorrelatedItemLift()
    {
        return $this->correlatedItemLift;
    }
    /**
     * This method is responsible for validating the values passed to the setCorrelatedItemLift method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCorrelatedItemLift method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCorrelatedItemLiftForArrayConstraintsFromSetCorrelatedItemLift(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCorrelatedItemLiftItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCorrelatedItemLiftItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicCorrelatedItemLiftItem) ? get_class($itemSearchRowBasicCorrelatedItemLiftItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCorrelatedItemLiftItem), var_export($itemSearchRowBasicCorrelatedItemLiftItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The correlatedItemLift 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 correlatedItemLift value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $correlatedItemLift
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCorrelatedItemLift(array $correlatedItemLift = array())
    {
        // validation for constraint: array
        if ('' !== ($correlatedItemLiftArrayErrorMessage = self::validateCorrelatedItemLiftForArrayConstraintsFromSetCorrelatedItemLift($correlatedItemLift))) {
            throw new \InvalidArgumentException($correlatedItemLiftArrayErrorMessage, __LINE__);
        }
        $this->correlatedItemLift = $correlatedItemLift;
        return $this;
    }
    /**
     * Add item to correlatedItemLift value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCorrelatedItemLift(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The correlatedItemLift 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->correlatedItemLift[] = $item;
        return $this;
    }
    /**
     * Get correlatedItemPurchaseRate value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getCorrelatedItemPurchaseRate()
    {
        return $this->correlatedItemPurchaseRate;
    }
    /**
     * This method is responsible for validating the values passed to the setCorrelatedItemPurchaseRate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCorrelatedItemPurchaseRate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCorrelatedItemPurchaseRateForArrayConstraintsFromSetCorrelatedItemPurchaseRate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCorrelatedItemPurchaseRateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCorrelatedItemPurchaseRateItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicCorrelatedItemPurchaseRateItem) ? get_class($itemSearchRowBasicCorrelatedItemPurchaseRateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCorrelatedItemPurchaseRateItem), var_export($itemSearchRowBasicCorrelatedItemPurchaseRateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The correlatedItemPurchaseRate 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 correlatedItemPurchaseRate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $correlatedItemPurchaseRate
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCorrelatedItemPurchaseRate(array $correlatedItemPurchaseRate = array())
    {
        // validation for constraint: array
        if ('' !== ($correlatedItemPurchaseRateArrayErrorMessage = self::validateCorrelatedItemPurchaseRateForArrayConstraintsFromSetCorrelatedItemPurchaseRate($correlatedItemPurchaseRate))) {
            throw new \InvalidArgumentException($correlatedItemPurchaseRateArrayErrorMessage, __LINE__);
        }
        $this->correlatedItemPurchaseRate = $correlatedItemPurchaseRate;
        return $this;
    }
    /**
     * Add item to correlatedItemPurchaseRate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCorrelatedItemPurchaseRate(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The correlatedItemPurchaseRate 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->correlatedItemPurchaseRate[] = $item;
        return $this;
    }
    /**
     * Get cost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getCost()
    {
        return $this->cost;
    }
    /**
     * This method is responsible for validating the values passed to the setCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCostForArrayConstraintsFromSetCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCostItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicCostItem) ? get_class($itemSearchRowBasicCostItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCostItem), var_export($itemSearchRowBasicCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The cost 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 cost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $cost
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCost(array $cost = array())
    {
        // validation for constraint: array
        if ('' !== ($costArrayErrorMessage = self::validateCostForArrayConstraintsFromSetCost($cost))) {
            throw new \InvalidArgumentException($costArrayErrorMessage, __LINE__);
        }
        $this->cost = $cost;
        return $this;
    }
    /**
     * Add item to cost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The cost 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->cost[] = $item;
        return $this;
    }
    /**
     * Get costAccountingStatus value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getCostAccountingStatus()
    {
        return $this->costAccountingStatus;
    }
    /**
     * This method is responsible for validating the values passed to the setCostAccountingStatus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCostAccountingStatus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCostAccountingStatusForArrayConstraintsFromSetCostAccountingStatus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCostAccountingStatusItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCostAccountingStatusItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicCostAccountingStatusItem) ? get_class($itemSearchRowBasicCostAccountingStatusItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCostAccountingStatusItem), var_export($itemSearchRowBasicCostAccountingStatusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The costAccountingStatus 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 costAccountingStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $costAccountingStatus
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCostAccountingStatus(array $costAccountingStatus = array())
    {
        // validation for constraint: array
        if ('' !== ($costAccountingStatusArrayErrorMessage = self::validateCostAccountingStatusForArrayConstraintsFromSetCostAccountingStatus($costAccountingStatus))) {
            throw new \InvalidArgumentException($costAccountingStatusArrayErrorMessage, __LINE__);
        }
        $this->costAccountingStatus = $costAccountingStatus;
        return $this;
    }
    /**
     * Add item to costAccountingStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCostAccountingStatus(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The costAccountingStatus 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->costAccountingStatus[] = $item;
        return $this;
    }
    /**
     * Get costCategory value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCostCategory()
    {
        return $this->costCategory;
    }
    /**
     * This method is responsible for validating the values passed to the setCostCategory method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCostCategory method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCostCategoryForArrayConstraintsFromSetCostCategory(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCostCategoryItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCostCategoryItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicCostCategoryItem) ? get_class($itemSearchRowBasicCostCategoryItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCostCategoryItem), var_export($itemSearchRowBasicCostCategoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The costCategory 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 costCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $costCategory
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCostCategory(array $costCategory = array())
    {
        // validation for constraint: array
        if ('' !== ($costCategoryArrayErrorMessage = self::validateCostCategoryForArrayConstraintsFromSetCostCategory($costCategory))) {
            throw new \InvalidArgumentException($costCategoryArrayErrorMessage, __LINE__);
        }
        $this->costCategory = $costCategory;
        return $this;
    }
    /**
     * Add item to costCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCostCategory(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The costCategory 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->costCategory[] = $item;
        return $this;
    }
    /**
     * Get costEstimate value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getCostEstimate()
    {
        return $this->costEstimate;
    }
    /**
     * This method is responsible for validating the values passed to the setCostEstimate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCostEstimate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCostEstimateForArrayConstraintsFromSetCostEstimate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCostEstimateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCostEstimateItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicCostEstimateItem) ? get_class($itemSearchRowBasicCostEstimateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCostEstimateItem), var_export($itemSearchRowBasicCostEstimateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The costEstimate 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 costEstimate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $costEstimate
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCostEstimate(array $costEstimate = array())
    {
        // validation for constraint: array
        if ('' !== ($costEstimateArrayErrorMessage = self::validateCostEstimateForArrayConstraintsFromSetCostEstimate($costEstimate))) {
            throw new \InvalidArgumentException($costEstimateArrayErrorMessage, __LINE__);
        }
        $this->costEstimate = $costEstimate;
        return $this;
    }
    /**
     * Add item to costEstimate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCostEstimate(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The costEstimate 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->costEstimate[] = $item;
        return $this;
    }
    /**
     * Get costEstimateType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getCostEstimateType()
    {
        return $this->costEstimateType;
    }
    /**
     * This method is responsible for validating the values passed to the setCostEstimateType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCostEstimateType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCostEstimateTypeForArrayConstraintsFromSetCostEstimateType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCostEstimateTypeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCostEstimateTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicCostEstimateTypeItem) ? get_class($itemSearchRowBasicCostEstimateTypeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCostEstimateTypeItem), var_export($itemSearchRowBasicCostEstimateTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The costEstimateType 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 costEstimateType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $costEstimateType
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCostEstimateType(array $costEstimateType = array())
    {
        // validation for constraint: array
        if ('' !== ($costEstimateTypeArrayErrorMessage = self::validateCostEstimateTypeForArrayConstraintsFromSetCostEstimateType($costEstimateType))) {
            throw new \InvalidArgumentException($costEstimateTypeArrayErrorMessage, __LINE__);
        }
        $this->costEstimateType = $costEstimateType;
        return $this;
    }
    /**
     * Add item to costEstimateType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCostEstimateType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The costEstimateType 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->costEstimateType[] = $item;
        return $this;
    }
    /**
     * Get costingMethod value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getCostingMethod()
    {
        return $this->costingMethod;
    }
    /**
     * This method is responsible for validating the values passed to the setCostingMethod method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCostingMethod method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCostingMethodForArrayConstraintsFromSetCostingMethod(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCostingMethodItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCostingMethodItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicCostingMethodItem) ? get_class($itemSearchRowBasicCostingMethodItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCostingMethodItem), var_export($itemSearchRowBasicCostingMethodItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The costingMethod 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 costingMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $costingMethod
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCostingMethod(array $costingMethod = array())
    {
        // validation for constraint: array
        if ('' !== ($costingMethodArrayErrorMessage = self::validateCostingMethodForArrayConstraintsFromSetCostingMethod($costingMethod))) {
            throw new \InvalidArgumentException($costingMethodArrayErrorMessage, __LINE__);
        }
        $this->costingMethod = $costingMethod;
        return $this;
    }
    /**
     * Add item to costingMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCostingMethod(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The costingMethod 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->costingMethod[] = $item;
        return $this;
    }
    /**
     * Get countryOfManufacture value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getCountryOfManufacture()
    {
        return $this->countryOfManufacture;
    }
    /**
     * This method is responsible for validating the values passed to the setCountryOfManufacture method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCountryOfManufacture method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCountryOfManufactureForArrayConstraintsFromSetCountryOfManufacture(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCountryOfManufactureItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCountryOfManufactureItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicCountryOfManufactureItem) ? get_class($itemSearchRowBasicCountryOfManufactureItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCountryOfManufactureItem), var_export($itemSearchRowBasicCountryOfManufactureItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The countryOfManufacture 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 countryOfManufacture value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $countryOfManufacture
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCountryOfManufacture(array $countryOfManufacture = array())
    {
        // validation for constraint: array
        if ('' !== ($countryOfManufactureArrayErrorMessage = self::validateCountryOfManufactureForArrayConstraintsFromSetCountryOfManufacture($countryOfManufacture))) {
            throw new \InvalidArgumentException($countryOfManufactureArrayErrorMessage, __LINE__);
        }
        $this->countryOfManufacture = $countryOfManufacture;
        return $this;
    }
    /**
     * Add item to countryOfManufacture value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCountryOfManufacture(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The countryOfManufacture 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->countryOfManufacture[] = $item;
        return $this;
    }
    /**
     * Get created value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getCreated()
    {
        return $this->created;
    }
    /**
     * This method is responsible for validating the values passed to the setCreated method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCreated method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCreatedForArrayConstraintsFromSetCreated(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCreatedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCreatedItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($itemSearchRowBasicCreatedItem) ? get_class($itemSearchRowBasicCreatedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCreatedItem), var_export($itemSearchRowBasicCreatedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The created 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 created value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $created
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCreated(array $created = array())
    {
        // validation for constraint: array
        if ('' !== ($createdArrayErrorMessage = self::validateCreatedForArrayConstraintsFromSetCreated($created))) {
            throw new \InvalidArgumentException($createdArrayErrorMessage, __LINE__);
        }
        $this->created = $created;
        return $this;
    }
    /**
     * Add item to created value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCreated(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The created 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->created[] = $item;
        return $this;
    }
    /**
     * Get createJob value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getCreateJob()
    {
        return $this->createJob;
    }
    /**
     * This method is responsible for validating the values passed to the setCreateJob method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCreateJob method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCreateJobForArrayConstraintsFromSetCreateJob(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCreateJobItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCreateJobItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicCreateJobItem) ? get_class($itemSearchRowBasicCreateJobItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCreateJobItem), var_export($itemSearchRowBasicCreateJobItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The createJob 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 createJob value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $createJob
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCreateJob(array $createJob = array())
    {
        // validation for constraint: array
        if ('' !== ($createJobArrayErrorMessage = self::validateCreateJobForArrayConstraintsFromSetCreateJob($createJob))) {
            throw new \InvalidArgumentException($createJobArrayErrorMessage, __LINE__);
        }
        $this->createJob = $createJob;
        return $this;
    }
    /**
     * Add item to createJob value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCreateJob(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The createJob 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->createJob[] = $item;
        return $this;
    }
    /**
     * Get createRevenuePlansOn value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCreateRevenuePlansOn()
    {
        return $this->createRevenuePlansOn;
    }
    /**
     * This method is responsible for validating the values passed to the setCreateRevenuePlansOn method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCreateRevenuePlansOn method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCreateRevenuePlansOnForArrayConstraintsFromSetCreateRevenuePlansOn(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCreateRevenuePlansOnItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCreateRevenuePlansOnItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicCreateRevenuePlansOnItem) ? get_class($itemSearchRowBasicCreateRevenuePlansOnItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCreateRevenuePlansOnItem), var_export($itemSearchRowBasicCreateRevenuePlansOnItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The createRevenuePlansOn 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 createRevenuePlansOn value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $createRevenuePlansOn
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCreateRevenuePlansOn(array $createRevenuePlansOn = array())
    {
        // validation for constraint: array
        if ('' !== ($createRevenuePlansOnArrayErrorMessage = self::validateCreateRevenuePlansOnForArrayConstraintsFromSetCreateRevenuePlansOn($createRevenuePlansOn))) {
            throw new \InvalidArgumentException($createRevenuePlansOnArrayErrorMessage, __LINE__);
        }
        $this->createRevenuePlansOn = $createRevenuePlansOn;
        return $this;
    }
    /**
     * Add item to createRevenuePlansOn value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCreateRevenuePlansOn(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The createRevenuePlansOn 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->createRevenuePlansOn[] = $item;
        return $this;
    }
    /**
     * Get custReturnVarianceAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCustReturnVarianceAccount()
    {
        return $this->custReturnVarianceAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setCustReturnVarianceAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCustReturnVarianceAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCustReturnVarianceAccountForArrayConstraintsFromSetCustReturnVarianceAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicCustReturnVarianceAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicCustReturnVarianceAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicCustReturnVarianceAccountItem) ? get_class($itemSearchRowBasicCustReturnVarianceAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicCustReturnVarianceAccountItem), var_export($itemSearchRowBasicCustReturnVarianceAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The custReturnVarianceAccount 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 custReturnVarianceAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $custReturnVarianceAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setCustReturnVarianceAccount(array $custReturnVarianceAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($custReturnVarianceAccountArrayErrorMessage = self::validateCustReturnVarianceAccountForArrayConstraintsFromSetCustReturnVarianceAccount($custReturnVarianceAccount))) {
            throw new \InvalidArgumentException($custReturnVarianceAccountArrayErrorMessage, __LINE__);
        }
        $this->custReturnVarianceAccount = $custReturnVarianceAccount;
        return $this;
    }
    /**
     * Add item to custReturnVarianceAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToCustReturnVarianceAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The custReturnVarianceAccount 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->custReturnVarianceAccount[] = $item;
        return $this;
    }
    /**
     * Get dateViewed value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getDateViewed()
    {
        return $this->dateViewed;
    }
    /**
     * This method is responsible for validating the values passed to the setDateViewed method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDateViewed method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDateViewedForArrayConstraintsFromSetDateViewed(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDateViewedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDateViewedItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($itemSearchRowBasicDateViewedItem) ? get_class($itemSearchRowBasicDateViewedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDateViewedItem), var_export($itemSearchRowBasicDateViewedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The dateViewed 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 dateViewed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $dateViewed
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDateViewed(array $dateViewed = array())
    {
        // validation for constraint: array
        if ('' !== ($dateViewedArrayErrorMessage = self::validateDateViewedForArrayConstraintsFromSetDateViewed($dateViewed))) {
            throw new \InvalidArgumentException($dateViewedArrayErrorMessage, __LINE__);
        }
        $this->dateViewed = $dateViewed;
        return $this;
    }
    /**
     * Add item to dateViewed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDateViewed(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The dateViewed 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->dateViewed[] = $item;
        return $this;
    }
    /**
     * Get daysBeforeExpiration value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getDaysBeforeExpiration()
    {
        return $this->daysBeforeExpiration;
    }
    /**
     * This method is responsible for validating the values passed to the setDaysBeforeExpiration method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDaysBeforeExpiration method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDaysBeforeExpirationForArrayConstraintsFromSetDaysBeforeExpiration(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDaysBeforeExpirationItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDaysBeforeExpirationItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicDaysBeforeExpirationItem) ? get_class($itemSearchRowBasicDaysBeforeExpirationItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDaysBeforeExpirationItem), var_export($itemSearchRowBasicDaysBeforeExpirationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The daysBeforeExpiration 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 daysBeforeExpiration value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $daysBeforeExpiration
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDaysBeforeExpiration(array $daysBeforeExpiration = array())
    {
        // validation for constraint: array
        if ('' !== ($daysBeforeExpirationArrayErrorMessage = self::validateDaysBeforeExpirationForArrayConstraintsFromSetDaysBeforeExpiration($daysBeforeExpiration))) {
            throw new \InvalidArgumentException($daysBeforeExpirationArrayErrorMessage, __LINE__);
        }
        $this->daysBeforeExpiration = $daysBeforeExpiration;
        return $this;
    }
    /**
     * Add item to daysBeforeExpiration value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDaysBeforeExpiration(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The daysBeforeExpiration 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->daysBeforeExpiration[] = $item;
        return $this;
    }
    /**
     * Get defaultReturnCost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getDefaultReturnCost()
    {
        return $this->defaultReturnCost;
    }
    /**
     * This method is responsible for validating the values passed to the setDefaultReturnCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDefaultReturnCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDefaultReturnCostForArrayConstraintsFromSetDefaultReturnCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDefaultReturnCostItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDefaultReturnCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicDefaultReturnCostItem) ? get_class($itemSearchRowBasicDefaultReturnCostItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDefaultReturnCostItem), var_export($itemSearchRowBasicDefaultReturnCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The defaultReturnCost 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 defaultReturnCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $defaultReturnCost
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDefaultReturnCost(array $defaultReturnCost = array())
    {
        // validation for constraint: array
        if ('' !== ($defaultReturnCostArrayErrorMessage = self::validateDefaultReturnCostForArrayConstraintsFromSetDefaultReturnCost($defaultReturnCost))) {
            throw new \InvalidArgumentException($defaultReturnCostArrayErrorMessage, __LINE__);
        }
        $this->defaultReturnCost = $defaultReturnCost;
        return $this;
    }
    /**
     * Add item to defaultReturnCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDefaultReturnCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The defaultReturnCost 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->defaultReturnCost[] = $item;
        return $this;
    }
    /**
     * Get defaultShippingMethod value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getDefaultShippingMethod()
    {
        return $this->defaultShippingMethod;
    }
    /**
     * This method is responsible for validating the values passed to the setDefaultShippingMethod method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDefaultShippingMethod method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDefaultShippingMethodForArrayConstraintsFromSetDefaultShippingMethod(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDefaultShippingMethodItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDefaultShippingMethodItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicDefaultShippingMethodItem) ? get_class($itemSearchRowBasicDefaultShippingMethodItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDefaultShippingMethodItem), var_export($itemSearchRowBasicDefaultShippingMethodItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The defaultShippingMethod 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 defaultShippingMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $defaultShippingMethod
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDefaultShippingMethod(array $defaultShippingMethod = array())
    {
        // validation for constraint: array
        if ('' !== ($defaultShippingMethodArrayErrorMessage = self::validateDefaultShippingMethodForArrayConstraintsFromSetDefaultShippingMethod($defaultShippingMethod))) {
            throw new \InvalidArgumentException($defaultShippingMethodArrayErrorMessage, __LINE__);
        }
        $this->defaultShippingMethod = $defaultShippingMethod;
        return $this;
    }
    /**
     * Add item to defaultShippingMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDefaultShippingMethod(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The defaultShippingMethod 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->defaultShippingMethod[] = $item;
        return $this;
    }
    /**
     * Get deferredExpenseAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getDeferredExpenseAccount()
    {
        return $this->deferredExpenseAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setDeferredExpenseAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDeferredExpenseAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDeferredExpenseAccountForArrayConstraintsFromSetDeferredExpenseAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDeferredExpenseAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDeferredExpenseAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicDeferredExpenseAccountItem) ? get_class($itemSearchRowBasicDeferredExpenseAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDeferredExpenseAccountItem), var_export($itemSearchRowBasicDeferredExpenseAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The deferredExpenseAccount 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 deferredExpenseAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $deferredExpenseAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDeferredExpenseAccount(array $deferredExpenseAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($deferredExpenseAccountArrayErrorMessage = self::validateDeferredExpenseAccountForArrayConstraintsFromSetDeferredExpenseAccount($deferredExpenseAccount))) {
            throw new \InvalidArgumentException($deferredExpenseAccountArrayErrorMessage, __LINE__);
        }
        $this->deferredExpenseAccount = $deferredExpenseAccount;
        return $this;
    }
    /**
     * Add item to deferredExpenseAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDeferredExpenseAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The deferredExpenseAccount 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->deferredExpenseAccount[] = $item;
        return $this;
    }
    /**
     * Get deferredRevenueAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getDeferredRevenueAccount()
    {
        return $this->deferredRevenueAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setDeferredRevenueAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDeferredRevenueAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDeferredRevenueAccountForArrayConstraintsFromSetDeferredRevenueAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDeferredRevenueAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDeferredRevenueAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicDeferredRevenueAccountItem) ? get_class($itemSearchRowBasicDeferredRevenueAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDeferredRevenueAccountItem), var_export($itemSearchRowBasicDeferredRevenueAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The deferredRevenueAccount 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 deferredRevenueAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $deferredRevenueAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDeferredRevenueAccount(array $deferredRevenueAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($deferredRevenueAccountArrayErrorMessage = self::validateDeferredRevenueAccountForArrayConstraintsFromSetDeferredRevenueAccount($deferredRevenueAccount))) {
            throw new \InvalidArgumentException($deferredRevenueAccountArrayErrorMessage, __LINE__);
        }
        $this->deferredRevenueAccount = $deferredRevenueAccount;
        return $this;
    }
    /**
     * Add item to deferredRevenueAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDeferredRevenueAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The deferredRevenueAccount 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->deferredRevenueAccount[] = $item;
        return $this;
    }
    /**
     * Get deferRevRec value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getDeferRevRec()
    {
        return $this->deferRevRec;
    }
    /**
     * This method is responsible for validating the values passed to the setDeferRevRec method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDeferRevRec method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDeferRevRecForArrayConstraintsFromSetDeferRevRec(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDeferRevRecItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDeferRevRecItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicDeferRevRecItem) ? get_class($itemSearchRowBasicDeferRevRecItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDeferRevRecItem), var_export($itemSearchRowBasicDeferRevRecItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The deferRevRec 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 deferRevRec value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $deferRevRec
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDeferRevRec(array $deferRevRec = array())
    {
        // validation for constraint: array
        if ('' !== ($deferRevRecArrayErrorMessage = self::validateDeferRevRecForArrayConstraintsFromSetDeferRevRec($deferRevRec))) {
            throw new \InvalidArgumentException($deferRevRecArrayErrorMessage, __LINE__);
        }
        $this->deferRevRec = $deferRevRec;
        return $this;
    }
    /**
     * Add item to deferRevRec value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDeferRevRec(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The deferRevRec 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->deferRevRec[] = $item;
        return $this;
    }
    /**
     * Get demandModifier value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getDemandModifier()
    {
        return $this->demandModifier;
    }
    /**
     * This method is responsible for validating the values passed to the setDemandModifier method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDemandModifier method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDemandModifierForArrayConstraintsFromSetDemandModifier(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDemandModifierItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDemandModifierItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicDemandModifierItem) ? get_class($itemSearchRowBasicDemandModifierItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDemandModifierItem), var_export($itemSearchRowBasicDemandModifierItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The demandModifier 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 demandModifier value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $demandModifier
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDemandModifier(array $demandModifier = array())
    {
        // validation for constraint: array
        if ('' !== ($demandModifierArrayErrorMessage = self::validateDemandModifierForArrayConstraintsFromSetDemandModifier($demandModifier))) {
            throw new \InvalidArgumentException($demandModifierArrayErrorMessage, __LINE__);
        }
        $this->demandModifier = $demandModifier;
        return $this;
    }
    /**
     * Add item to demandModifier value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDemandModifier(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The demandModifier 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->demandModifier[] = $item;
        return $this;
    }
    /**
     * Get demandSource value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getDemandSource()
    {
        return $this->demandSource;
    }
    /**
     * This method is responsible for validating the values passed to the setDemandSource method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDemandSource method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDemandSourceForArrayConstraintsFromSetDemandSource(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDemandSourceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDemandSourceItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicDemandSourceItem) ? get_class($itemSearchRowBasicDemandSourceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDemandSourceItem), var_export($itemSearchRowBasicDemandSourceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The demandSource 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 demandSource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $demandSource
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDemandSource(array $demandSource = array())
    {
        // validation for constraint: array
        if ('' !== ($demandSourceArrayErrorMessage = self::validateDemandSourceForArrayConstraintsFromSetDemandSource($demandSource))) {
            throw new \InvalidArgumentException($demandSourceArrayErrorMessage, __LINE__);
        }
        $this->demandSource = $demandSource;
        return $this;
    }
    /**
     * Add item to demandSource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDemandSource(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The demandSource 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->demandSource[] = $item;
        return $this;
    }
    /**
     * Get demandTimeFence value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getDemandTimeFence()
    {
        return $this->demandTimeFence;
    }
    /**
     * This method is responsible for validating the values passed to the setDemandTimeFence method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDemandTimeFence method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDemandTimeFenceForArrayConstraintsFromSetDemandTimeFence(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDemandTimeFenceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDemandTimeFenceItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicDemandTimeFenceItem) ? get_class($itemSearchRowBasicDemandTimeFenceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDemandTimeFenceItem), var_export($itemSearchRowBasicDemandTimeFenceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The demandTimeFence 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 demandTimeFence value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $demandTimeFence
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDemandTimeFence(array $demandTimeFence = array())
    {
        // validation for constraint: array
        if ('' !== ($demandTimeFenceArrayErrorMessage = self::validateDemandTimeFenceForArrayConstraintsFromSetDemandTimeFence($demandTimeFence))) {
            throw new \InvalidArgumentException($demandTimeFenceArrayErrorMessage, __LINE__);
        }
        $this->demandTimeFence = $demandTimeFence;
        return $this;
    }
    /**
     * Add item to demandTimeFence value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDemandTimeFence(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The demandTimeFence 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->demandTimeFence[] = $item;
        return $this;
    }
    /**
     * Get department value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getDepartment()
    {
        return $this->department;
    }
    /**
     * This method is responsible for validating the values passed to the setDepartment method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDepartment method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDepartmentForArrayConstraintsFromSetDepartment(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDepartmentItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDepartmentItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicDepartmentItem) ? get_class($itemSearchRowBasicDepartmentItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDepartmentItem), var_export($itemSearchRowBasicDepartmentItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The department property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set department value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $department
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDepartment(array $department = array())
    {
        // validation for constraint: array
        if ('' !== ($departmentArrayErrorMessage = self::validateDepartmentForArrayConstraintsFromSetDepartment($department))) {
            throw new \InvalidArgumentException($departmentArrayErrorMessage, __LINE__);
        }
        $this->department = $department;
        return $this;
    }
    /**
     * Add item to department value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDepartment(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The department property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->department[] = $item;
        return $this;
    }
    /**
     * Get departmentnohierarchy value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getDepartmentnohierarchy()
    {
        return $this->departmentnohierarchy;
    }
    /**
     * This method is responsible for validating the values passed to the setDepartmentnohierarchy method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDepartmentnohierarchy method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDepartmentnohierarchyForArrayConstraintsFromSetDepartmentnohierarchy(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDepartmentnohierarchyItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDepartmentnohierarchyItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicDepartmentnohierarchyItem) ? get_class($itemSearchRowBasicDepartmentnohierarchyItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDepartmentnohierarchyItem), var_export($itemSearchRowBasicDepartmentnohierarchyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The departmentnohierarchy 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 departmentnohierarchy value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $departmentnohierarchy
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDepartmentnohierarchy(array $departmentnohierarchy = array())
    {
        // validation for constraint: array
        if ('' !== ($departmentnohierarchyArrayErrorMessage = self::validateDepartmentnohierarchyForArrayConstraintsFromSetDepartmentnohierarchy($departmentnohierarchy))) {
            throw new \InvalidArgumentException($departmentnohierarchyArrayErrorMessage, __LINE__);
        }
        $this->departmentnohierarchy = $departmentnohierarchy;
        return $this;
    }
    /**
     * Add item to departmentnohierarchy value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDepartmentnohierarchy(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The departmentnohierarchy 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->departmentnohierarchy[] = $item;
        return $this;
    }
    /**
     * Get directRevenuePosting value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getDirectRevenuePosting()
    {
        return $this->directRevenuePosting;
    }
    /**
     * This method is responsible for validating the values passed to the setDirectRevenuePosting method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDirectRevenuePosting method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDirectRevenuePostingForArrayConstraintsFromSetDirectRevenuePosting(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDirectRevenuePostingItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDirectRevenuePostingItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicDirectRevenuePostingItem) ? get_class($itemSearchRowBasicDirectRevenuePostingItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDirectRevenuePostingItem), var_export($itemSearchRowBasicDirectRevenuePostingItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The directRevenuePosting 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 directRevenuePosting value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $directRevenuePosting
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDirectRevenuePosting(array $directRevenuePosting = array())
    {
        // validation for constraint: array
        if ('' !== ($directRevenuePostingArrayErrorMessage = self::validateDirectRevenuePostingForArrayConstraintsFromSetDirectRevenuePosting($directRevenuePosting))) {
            throw new \InvalidArgumentException($directRevenuePostingArrayErrorMessage, __LINE__);
        }
        $this->directRevenuePosting = $directRevenuePosting;
        return $this;
    }
    /**
     * Add item to directRevenuePosting value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDirectRevenuePosting(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The directRevenuePosting 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->directRevenuePosting[] = $item;
        return $this;
    }
    /**
     * Get displayIneBayStore value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getDisplayIneBayStore()
    {
        return $this->displayIneBayStore;
    }
    /**
     * This method is responsible for validating the values passed to the setDisplayIneBayStore method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDisplayIneBayStore method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDisplayIneBayStoreForArrayConstraintsFromSetDisplayIneBayStore(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDisplayIneBayStoreItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDisplayIneBayStoreItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicDisplayIneBayStoreItem) ? get_class($itemSearchRowBasicDisplayIneBayStoreItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDisplayIneBayStoreItem), var_export($itemSearchRowBasicDisplayIneBayStoreItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The displayIneBayStore 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 displayIneBayStore value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $displayIneBayStore
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDisplayIneBayStore(array $displayIneBayStore = array())
    {
        // validation for constraint: array
        if ('' !== ($displayIneBayStoreArrayErrorMessage = self::validateDisplayIneBayStoreForArrayConstraintsFromSetDisplayIneBayStore($displayIneBayStore))) {
            throw new \InvalidArgumentException($displayIneBayStoreArrayErrorMessage, __LINE__);
        }
        $this->displayIneBayStore = $displayIneBayStore;
        return $this;
    }
    /**
     * Add item to displayIneBayStore value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDisplayIneBayStore(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The displayIneBayStore 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->displayIneBayStore[] = $item;
        return $this;
    }
    /**
     * Get displayName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getDisplayName()
    {
        return $this->displayName;
    }
    /**
     * This method is responsible for validating the values passed to the setDisplayName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDisplayName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDisplayNameForArrayConstraintsFromSetDisplayName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDisplayNameItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDisplayNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicDisplayNameItem) ? get_class($itemSearchRowBasicDisplayNameItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDisplayNameItem), var_export($itemSearchRowBasicDisplayNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The displayName 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 displayName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $displayName
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDisplayName(array $displayName = array())
    {
        // validation for constraint: array
        if ('' !== ($displayNameArrayErrorMessage = self::validateDisplayNameForArrayConstraintsFromSetDisplayName($displayName))) {
            throw new \InvalidArgumentException($displayNameArrayErrorMessage, __LINE__);
        }
        $this->displayName = $displayName;
        return $this;
    }
    /**
     * Add item to displayName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDisplayName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The displayName 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->displayName[] = $item;
        return $this;
    }
    /**
     * Get distributionCategory value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getDistributionCategory()
    {
        return $this->distributionCategory;
    }
    /**
     * This method is responsible for validating the values passed to the setDistributionCategory method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDistributionCategory method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDistributionCategoryForArrayConstraintsFromSetDistributionCategory(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDistributionCategoryItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDistributionCategoryItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicDistributionCategoryItem) ? get_class($itemSearchRowBasicDistributionCategoryItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDistributionCategoryItem), var_export($itemSearchRowBasicDistributionCategoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The distributionCategory 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 distributionCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $distributionCategory
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDistributionCategory(array $distributionCategory = array())
    {
        // validation for constraint: array
        if ('' !== ($distributionCategoryArrayErrorMessage = self::validateDistributionCategoryForArrayConstraintsFromSetDistributionCategory($distributionCategory))) {
            throw new \InvalidArgumentException($distributionCategoryArrayErrorMessage, __LINE__);
        }
        $this->distributionCategory = $distributionCategory;
        return $this;
    }
    /**
     * Add item to distributionCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDistributionCategory(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The distributionCategory 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->distributionCategory[] = $item;
        return $this;
    }
    /**
     * Get distributionNetwork value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getDistributionNetwork()
    {
        return $this->distributionNetwork;
    }
    /**
     * This method is responsible for validating the values passed to the setDistributionNetwork method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDistributionNetwork method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDistributionNetworkForArrayConstraintsFromSetDistributionNetwork(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDistributionNetworkItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDistributionNetworkItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicDistributionNetworkItem) ? get_class($itemSearchRowBasicDistributionNetworkItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDistributionNetworkItem), var_export($itemSearchRowBasicDistributionNetworkItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The distributionNetwork 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 distributionNetwork value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $distributionNetwork
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDistributionNetwork(array $distributionNetwork = array())
    {
        // validation for constraint: array
        if ('' !== ($distributionNetworkArrayErrorMessage = self::validateDistributionNetworkForArrayConstraintsFromSetDistributionNetwork($distributionNetwork))) {
            throw new \InvalidArgumentException($distributionNetworkArrayErrorMessage, __LINE__);
        }
        $this->distributionNetwork = $distributionNetwork;
        return $this;
    }
    /**
     * Add item to distributionNetwork value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDistributionNetwork(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The distributionNetwork 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->distributionNetwork[] = $item;
        return $this;
    }
    /**
     * Get dontShowPrice value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getDontShowPrice()
    {
        return $this->dontShowPrice;
    }
    /**
     * This method is responsible for validating the values passed to the setDontShowPrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDontShowPrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDontShowPriceForArrayConstraintsFromSetDontShowPrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicDontShowPriceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicDontShowPriceItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicDontShowPriceItem) ? get_class($itemSearchRowBasicDontShowPriceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicDontShowPriceItem), var_export($itemSearchRowBasicDontShowPriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The dontShowPrice 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 dontShowPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $dontShowPrice
     * @return \StructType\ItemSearchRowBasic
     */
    public function setDontShowPrice(array $dontShowPrice = array())
    {
        // validation for constraint: array
        if ('' !== ($dontShowPriceArrayErrorMessage = self::validateDontShowPriceForArrayConstraintsFromSetDontShowPrice($dontShowPrice))) {
            throw new \InvalidArgumentException($dontShowPriceArrayErrorMessage, __LINE__);
        }
        $this->dontShowPrice = $dontShowPrice;
        return $this;
    }
    /**
     * Add item to dontShowPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToDontShowPrice(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The dontShowPrice 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->dontShowPrice[] = $item;
        return $this;
    }
    /**
     * Get eBayItemDescription value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getEBayItemDescription()
    {
        return $this->eBayItemDescription;
    }
    /**
     * This method is responsible for validating the values passed to the setEBayItemDescription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEBayItemDescription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEBayItemDescriptionForArrayConstraintsFromSetEBayItemDescription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicEBayItemDescriptionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicEBayItemDescriptionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicEBayItemDescriptionItem) ? get_class($itemSearchRowBasicEBayItemDescriptionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicEBayItemDescriptionItem), var_export($itemSearchRowBasicEBayItemDescriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The eBayItemDescription 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 eBayItemDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $eBayItemDescription
     * @return \StructType\ItemSearchRowBasic
     */
    public function setEBayItemDescription(array $eBayItemDescription = array())
    {
        // validation for constraint: array
        if ('' !== ($eBayItemDescriptionArrayErrorMessage = self::validateEBayItemDescriptionForArrayConstraintsFromSetEBayItemDescription($eBayItemDescription))) {
            throw new \InvalidArgumentException($eBayItemDescriptionArrayErrorMessage, __LINE__);
        }
        $this->eBayItemDescription = $eBayItemDescription;
        return $this;
    }
    /**
     * Add item to eBayItemDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToEBayItemDescription(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The eBayItemDescription 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->eBayItemDescription[] = $item;
        return $this;
    }
    /**
     * Get eBayItemSubtitle value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getEBayItemSubtitle()
    {
        return $this->eBayItemSubtitle;
    }
    /**
     * This method is responsible for validating the values passed to the setEBayItemSubtitle method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEBayItemSubtitle method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEBayItemSubtitleForArrayConstraintsFromSetEBayItemSubtitle(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicEBayItemSubtitleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicEBayItemSubtitleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicEBayItemSubtitleItem) ? get_class($itemSearchRowBasicEBayItemSubtitleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicEBayItemSubtitleItem), var_export($itemSearchRowBasicEBayItemSubtitleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The eBayItemSubtitle 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 eBayItemSubtitle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $eBayItemSubtitle
     * @return \StructType\ItemSearchRowBasic
     */
    public function setEBayItemSubtitle(array $eBayItemSubtitle = array())
    {
        // validation for constraint: array
        if ('' !== ($eBayItemSubtitleArrayErrorMessage = self::validateEBayItemSubtitleForArrayConstraintsFromSetEBayItemSubtitle($eBayItemSubtitle))) {
            throw new \InvalidArgumentException($eBayItemSubtitleArrayErrorMessage, __LINE__);
        }
        $this->eBayItemSubtitle = $eBayItemSubtitle;
        return $this;
    }
    /**
     * Add item to eBayItemSubtitle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToEBayItemSubtitle(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The eBayItemSubtitle 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->eBayItemSubtitle[] = $item;
        return $this;
    }
    /**
     * Get eBayItemTitle value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getEBayItemTitle()
    {
        return $this->eBayItemTitle;
    }
    /**
     * This method is responsible for validating the values passed to the setEBayItemTitle method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEBayItemTitle method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEBayItemTitleForArrayConstraintsFromSetEBayItemTitle(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicEBayItemTitleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicEBayItemTitleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicEBayItemTitleItem) ? get_class($itemSearchRowBasicEBayItemTitleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicEBayItemTitleItem), var_export($itemSearchRowBasicEBayItemTitleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The eBayItemTitle 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 eBayItemTitle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $eBayItemTitle
     * @return \StructType\ItemSearchRowBasic
     */
    public function setEBayItemTitle(array $eBayItemTitle = array())
    {
        // validation for constraint: array
        if ('' !== ($eBayItemTitleArrayErrorMessage = self::validateEBayItemTitleForArrayConstraintsFromSetEBayItemTitle($eBayItemTitle))) {
            throw new \InvalidArgumentException($eBayItemTitleArrayErrorMessage, __LINE__);
        }
        $this->eBayItemTitle = $eBayItemTitle;
        return $this;
    }
    /**
     * Add item to eBayItemTitle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToEBayItemTitle(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The eBayItemTitle 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->eBayItemTitle[] = $item;
        return $this;
    }
    /**
     * Get ebayRelistingOption value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getEbayRelistingOption()
    {
        return $this->ebayRelistingOption;
    }
    /**
     * This method is responsible for validating the values passed to the setEbayRelistingOption method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEbayRelistingOption method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEbayRelistingOptionForArrayConstraintsFromSetEbayRelistingOption(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicEbayRelistingOptionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicEbayRelistingOptionItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicEbayRelistingOptionItem) ? get_class($itemSearchRowBasicEbayRelistingOptionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicEbayRelistingOptionItem), var_export($itemSearchRowBasicEbayRelistingOptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The ebayRelistingOption 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 ebayRelistingOption value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $ebayRelistingOption
     * @return \StructType\ItemSearchRowBasic
     */
    public function setEbayRelistingOption(array $ebayRelistingOption = array())
    {
        // validation for constraint: array
        if ('' !== ($ebayRelistingOptionArrayErrorMessage = self::validateEbayRelistingOptionForArrayConstraintsFromSetEbayRelistingOption($ebayRelistingOption))) {
            throw new \InvalidArgumentException($ebayRelistingOptionArrayErrorMessage, __LINE__);
        }
        $this->ebayRelistingOption = $ebayRelistingOption;
        return $this;
    }
    /**
     * Add item to ebayRelistingOption value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToEbayRelistingOption(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The ebayRelistingOption 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->ebayRelistingOption[] = $item;
        return $this;
    }
    /**
     * Get effectiveBomControl value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getEffectiveBomControl()
    {
        return $this->effectiveBomControl;
    }
    /**
     * This method is responsible for validating the values passed to the setEffectiveBomControl method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEffectiveBomControl method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEffectiveBomControlForArrayConstraintsFromSetEffectiveBomControl(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicEffectiveBomControlItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicEffectiveBomControlItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicEffectiveBomControlItem) ? get_class($itemSearchRowBasicEffectiveBomControlItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicEffectiveBomControlItem), var_export($itemSearchRowBasicEffectiveBomControlItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The effectiveBomControl 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 effectiveBomControl value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $effectiveBomControl
     * @return \StructType\ItemSearchRowBasic
     */
    public function setEffectiveBomControl(array $effectiveBomControl = array())
    {
        // validation for constraint: array
        if ('' !== ($effectiveBomControlArrayErrorMessage = self::validateEffectiveBomControlForArrayConstraintsFromSetEffectiveBomControl($effectiveBomControl))) {
            throw new \InvalidArgumentException($effectiveBomControlArrayErrorMessage, __LINE__);
        }
        $this->effectiveBomControl = $effectiveBomControl;
        return $this;
    }
    /**
     * Add item to effectiveBomControl value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToEffectiveBomControl(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The effectiveBomControl 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->effectiveBomControl[] = $item;
        return $this;
    }
    /**
     * Get effectiveDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getEffectiveDate()
    {
        return $this->effectiveDate;
    }
    /**
     * This method is responsible for validating the values passed to the setEffectiveDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEffectiveDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEffectiveDateForArrayConstraintsFromSetEffectiveDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicEffectiveDateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicEffectiveDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($itemSearchRowBasicEffectiveDateItem) ? get_class($itemSearchRowBasicEffectiveDateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicEffectiveDateItem), var_export($itemSearchRowBasicEffectiveDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The effectiveDate 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 effectiveDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $effectiveDate
     * @return \StructType\ItemSearchRowBasic
     */
    public function setEffectiveDate(array $effectiveDate = array())
    {
        // validation for constraint: array
        if ('' !== ($effectiveDateArrayErrorMessage = self::validateEffectiveDateForArrayConstraintsFromSetEffectiveDate($effectiveDate))) {
            throw new \InvalidArgumentException($effectiveDateArrayErrorMessage, __LINE__);
        }
        $this->effectiveDate = $effectiveDate;
        return $this;
    }
    /**
     * Add item to effectiveDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToEffectiveDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The effectiveDate 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->effectiveDate[] = $item;
        return $this;
    }
    /**
     * Get effectiveRevision value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getEffectiveRevision()
    {
        return $this->effectiveRevision;
    }
    /**
     * This method is responsible for validating the values passed to the setEffectiveRevision method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEffectiveRevision method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEffectiveRevisionForArrayConstraintsFromSetEffectiveRevision(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicEffectiveRevisionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicEffectiveRevisionItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicEffectiveRevisionItem) ? get_class($itemSearchRowBasicEffectiveRevisionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicEffectiveRevisionItem), var_export($itemSearchRowBasicEffectiveRevisionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The effectiveRevision 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 effectiveRevision value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $effectiveRevision
     * @return \StructType\ItemSearchRowBasic
     */
    public function setEffectiveRevision(array $effectiveRevision = array())
    {
        // validation for constraint: array
        if ('' !== ($effectiveRevisionArrayErrorMessage = self::validateEffectiveRevisionForArrayConstraintsFromSetEffectiveRevision($effectiveRevision))) {
            throw new \InvalidArgumentException($effectiveRevisionArrayErrorMessage, __LINE__);
        }
        $this->effectiveRevision = $effectiveRevision;
        return $this;
    }
    /**
     * Add item to effectiveRevision value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToEffectiveRevision(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The effectiveRevision 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->effectiveRevision[] = $item;
        return $this;
    }
    /**
     * Get endAuctionsWhenOutOfStock value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getEndAuctionsWhenOutOfStock()
    {
        return $this->endAuctionsWhenOutOfStock;
    }
    /**
     * This method is responsible for validating the values passed to the setEndAuctionsWhenOutOfStock method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEndAuctionsWhenOutOfStock method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEndAuctionsWhenOutOfStockForArrayConstraintsFromSetEndAuctionsWhenOutOfStock(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicEndAuctionsWhenOutOfStockItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicEndAuctionsWhenOutOfStockItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicEndAuctionsWhenOutOfStockItem) ? get_class($itemSearchRowBasicEndAuctionsWhenOutOfStockItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicEndAuctionsWhenOutOfStockItem), var_export($itemSearchRowBasicEndAuctionsWhenOutOfStockItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The endAuctionsWhenOutOfStock 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 endAuctionsWhenOutOfStock value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $endAuctionsWhenOutOfStock
     * @return \StructType\ItemSearchRowBasic
     */
    public function setEndAuctionsWhenOutOfStock(array $endAuctionsWhenOutOfStock = array())
    {
        // validation for constraint: array
        if ('' !== ($endAuctionsWhenOutOfStockArrayErrorMessage = self::validateEndAuctionsWhenOutOfStockForArrayConstraintsFromSetEndAuctionsWhenOutOfStock($endAuctionsWhenOutOfStock))) {
            throw new \InvalidArgumentException($endAuctionsWhenOutOfStockArrayErrorMessage, __LINE__);
        }
        $this->endAuctionsWhenOutOfStock = $endAuctionsWhenOutOfStock;
        return $this;
    }
    /**
     * Add item to endAuctionsWhenOutOfStock value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToEndAuctionsWhenOutOfStock(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The endAuctionsWhenOutOfStock 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->endAuctionsWhenOutOfStock[] = $item;
        return $this;
    }
    /**
     * Get excludeFromSitemap value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getExcludeFromSitemap()
    {
        return $this->excludeFromSitemap;
    }
    /**
     * This method is responsible for validating the values passed to the setExcludeFromSitemap method
     * This method is willingly generated in order to preserve the one-line inline validation within the setExcludeFromSitemap method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateExcludeFromSitemapForArrayConstraintsFromSetExcludeFromSitemap(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicExcludeFromSitemapItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicExcludeFromSitemapItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicExcludeFromSitemapItem) ? get_class($itemSearchRowBasicExcludeFromSitemapItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicExcludeFromSitemapItem), var_export($itemSearchRowBasicExcludeFromSitemapItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The excludeFromSitemap 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 excludeFromSitemap value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $excludeFromSitemap
     * @return \StructType\ItemSearchRowBasic
     */
    public function setExcludeFromSitemap(array $excludeFromSitemap = array())
    {
        // validation for constraint: array
        if ('' !== ($excludeFromSitemapArrayErrorMessage = self::validateExcludeFromSitemapForArrayConstraintsFromSetExcludeFromSitemap($excludeFromSitemap))) {
            throw new \InvalidArgumentException($excludeFromSitemapArrayErrorMessage, __LINE__);
        }
        $this->excludeFromSitemap = $excludeFromSitemap;
        return $this;
    }
    /**
     * Add item to excludeFromSitemap value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToExcludeFromSitemap(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The excludeFromSitemap 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->excludeFromSitemap[] = $item;
        return $this;
    }
    /**
     * Get expenseAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getExpenseAccount()
    {
        return $this->expenseAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setExpenseAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setExpenseAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateExpenseAccountForArrayConstraintsFromSetExpenseAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicExpenseAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicExpenseAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicExpenseAccountItem) ? get_class($itemSearchRowBasicExpenseAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicExpenseAccountItem), var_export($itemSearchRowBasicExpenseAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The expenseAccount 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 expenseAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $expenseAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setExpenseAccount(array $expenseAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($expenseAccountArrayErrorMessage = self::validateExpenseAccountForArrayConstraintsFromSetExpenseAccount($expenseAccount))) {
            throw new \InvalidArgumentException($expenseAccountArrayErrorMessage, __LINE__);
        }
        $this->expenseAccount = $expenseAccount;
        return $this;
    }
    /**
     * Add item to expenseAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToExpenseAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The expenseAccount 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->expenseAccount[] = $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 $itemSearchRowBasicExternalIdItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicExternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicExternalIdItem) ? get_class($itemSearchRowBasicExternalIdItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicExternalIdItem), var_export($itemSearchRowBasicExternalIdItem, 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\ItemSearchRowBasic
     */
    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\ItemSearchRowBasic
     */
    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 featuredDescription value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getFeaturedDescription()
    {
        return $this->featuredDescription;
    }
    /**
     * This method is responsible for validating the values passed to the setFeaturedDescription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFeaturedDescription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFeaturedDescriptionForArrayConstraintsFromSetFeaturedDescription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicFeaturedDescriptionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicFeaturedDescriptionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicFeaturedDescriptionItem) ? get_class($itemSearchRowBasicFeaturedDescriptionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicFeaturedDescriptionItem), var_export($itemSearchRowBasicFeaturedDescriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The featuredDescription 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 featuredDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $featuredDescription
     * @return \StructType\ItemSearchRowBasic
     */
    public function setFeaturedDescription(array $featuredDescription = array())
    {
        // validation for constraint: array
        if ('' !== ($featuredDescriptionArrayErrorMessage = self::validateFeaturedDescriptionForArrayConstraintsFromSetFeaturedDescription($featuredDescription))) {
            throw new \InvalidArgumentException($featuredDescriptionArrayErrorMessage, __LINE__);
        }
        $this->featuredDescription = $featuredDescription;
        return $this;
    }
    /**
     * Add item to featuredDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToFeaturedDescription(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The featuredDescription 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->featuredDescription[] = $item;
        return $this;
    }
    /**
     * Get feedDescription value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getFeedDescription()
    {
        return $this->feedDescription;
    }
    /**
     * This method is responsible for validating the values passed to the setFeedDescription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFeedDescription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFeedDescriptionForArrayConstraintsFromSetFeedDescription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicFeedDescriptionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicFeedDescriptionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicFeedDescriptionItem) ? get_class($itemSearchRowBasicFeedDescriptionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicFeedDescriptionItem), var_export($itemSearchRowBasicFeedDescriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The feedDescription 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 feedDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $feedDescription
     * @return \StructType\ItemSearchRowBasic
     */
    public function setFeedDescription(array $feedDescription = array())
    {
        // validation for constraint: array
        if ('' !== ($feedDescriptionArrayErrorMessage = self::validateFeedDescriptionForArrayConstraintsFromSetFeedDescription($feedDescription))) {
            throw new \InvalidArgumentException($feedDescriptionArrayErrorMessage, __LINE__);
        }
        $this->feedDescription = $feedDescription;
        return $this;
    }
    /**
     * Add item to feedDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToFeedDescription(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The feedDescription 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->feedDescription[] = $item;
        return $this;
    }
    /**
     * Get feedName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getFeedName()
    {
        return $this->feedName;
    }
    /**
     * This method is responsible for validating the values passed to the setFeedName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFeedName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFeedNameForArrayConstraintsFromSetFeedName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicFeedNameItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicFeedNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicFeedNameItem) ? get_class($itemSearchRowBasicFeedNameItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicFeedNameItem), var_export($itemSearchRowBasicFeedNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The feedName 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 feedName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $feedName
     * @return \StructType\ItemSearchRowBasic
     */
    public function setFeedName(array $feedName = array())
    {
        // validation for constraint: array
        if ('' !== ($feedNameArrayErrorMessage = self::validateFeedNameForArrayConstraintsFromSetFeedName($feedName))) {
            throw new \InvalidArgumentException($feedNameArrayErrorMessage, __LINE__);
        }
        $this->feedName = $feedName;
        return $this;
    }
    /**
     * Add item to feedName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToFeedName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The feedName 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->feedName[] = $item;
        return $this;
    }
    /**
     * Get fixedLotSize value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getFixedLotSize()
    {
        return $this->fixedLotSize;
    }
    /**
     * This method is responsible for validating the values passed to the setFixedLotSize method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFixedLotSize method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFixedLotSizeForArrayConstraintsFromSetFixedLotSize(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicFixedLotSizeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicFixedLotSizeItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicFixedLotSizeItem) ? get_class($itemSearchRowBasicFixedLotSizeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicFixedLotSizeItem), var_export($itemSearchRowBasicFixedLotSizeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The fixedLotSize 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 fixedLotSize value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $fixedLotSize
     * @return \StructType\ItemSearchRowBasic
     */
    public function setFixedLotSize(array $fixedLotSize = array())
    {
        // validation for constraint: array
        if ('' !== ($fixedLotSizeArrayErrorMessage = self::validateFixedLotSizeForArrayConstraintsFromSetFixedLotSize($fixedLotSize))) {
            throw new \InvalidArgumentException($fixedLotSizeArrayErrorMessage, __LINE__);
        }
        $this->fixedLotSize = $fixedLotSize;
        return $this;
    }
    /**
     * Add item to fixedLotSize value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToFixedLotSize(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The fixedLotSize 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->fixedLotSize[] = $item;
        return $this;
    }
    /**
     * Get forwardConsumptionDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getForwardConsumptionDays()
    {
        return $this->forwardConsumptionDays;
    }
    /**
     * This method is responsible for validating the values passed to the setForwardConsumptionDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setForwardConsumptionDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateForwardConsumptionDaysForArrayConstraintsFromSetForwardConsumptionDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicForwardConsumptionDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicForwardConsumptionDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicForwardConsumptionDaysItem) ? get_class($itemSearchRowBasicForwardConsumptionDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicForwardConsumptionDaysItem), var_export($itemSearchRowBasicForwardConsumptionDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The forwardConsumptionDays 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 forwardConsumptionDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $forwardConsumptionDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setForwardConsumptionDays(array $forwardConsumptionDays = array())
    {
        // validation for constraint: array
        if ('' !== ($forwardConsumptionDaysArrayErrorMessage = self::validateForwardConsumptionDaysForArrayConstraintsFromSetForwardConsumptionDays($forwardConsumptionDays))) {
            throw new \InvalidArgumentException($forwardConsumptionDaysArrayErrorMessage, __LINE__);
        }
        $this->forwardConsumptionDays = $forwardConsumptionDays;
        return $this;
    }
    /**
     * Add item to forwardConsumptionDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToForwardConsumptionDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The forwardConsumptionDays 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->forwardConsumptionDays[] = $item;
        return $this;
    }
    /**
     * Get fraudRisk value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getFraudRisk()
    {
        return $this->fraudRisk;
    }
    /**
     * This method is responsible for validating the values passed to the setFraudRisk method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFraudRisk method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFraudRiskForArrayConstraintsFromSetFraudRisk(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicFraudRiskItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicFraudRiskItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicFraudRiskItem) ? get_class($itemSearchRowBasicFraudRiskItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicFraudRiskItem), var_export($itemSearchRowBasicFraudRiskItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The fraudRisk 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 fraudRisk value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $fraudRisk
     * @return \StructType\ItemSearchRowBasic
     */
    public function setFraudRisk(array $fraudRisk = array())
    {
        // validation for constraint: array
        if ('' !== ($fraudRiskArrayErrorMessage = self::validateFraudRiskForArrayConstraintsFromSetFraudRisk($fraudRisk))) {
            throw new \InvalidArgumentException($fraudRiskArrayErrorMessage, __LINE__);
        }
        $this->fraudRisk = $fraudRisk;
        return $this;
    }
    /**
     * Add item to fraudRisk value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToFraudRisk(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The fraudRisk 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->fraudRisk[] = $item;
        return $this;
    }
    /**
     * Get froogleProductFeed value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getFroogleProductFeed()
    {
        return $this->froogleProductFeed;
    }
    /**
     * This method is responsible for validating the values passed to the setFroogleProductFeed method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFroogleProductFeed method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFroogleProductFeedForArrayConstraintsFromSetFroogleProductFeed(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicFroogleProductFeedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicFroogleProductFeedItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicFroogleProductFeedItem) ? get_class($itemSearchRowBasicFroogleProductFeedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicFroogleProductFeedItem), var_export($itemSearchRowBasicFroogleProductFeedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The froogleProductFeed 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 froogleProductFeed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $froogleProductFeed
     * @return \StructType\ItemSearchRowBasic
     */
    public function setFroogleProductFeed(array $froogleProductFeed = array())
    {
        // validation for constraint: array
        if ('' !== ($froogleProductFeedArrayErrorMessage = self::validateFroogleProductFeedForArrayConstraintsFromSetFroogleProductFeed($froogleProductFeed))) {
            throw new \InvalidArgumentException($froogleProductFeedArrayErrorMessage, __LINE__);
        }
        $this->froogleProductFeed = $froogleProductFeed;
        return $this;
    }
    /**
     * Add item to froogleProductFeed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToFroogleProductFeed(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The froogleProductFeed 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->froogleProductFeed[] = $item;
        return $this;
    }
    /**
     * Get futureHorizon value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getFutureHorizon()
    {
        return $this->futureHorizon;
    }
    /**
     * This method is responsible for validating the values passed to the setFutureHorizon method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFutureHorizon method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFutureHorizonForArrayConstraintsFromSetFutureHorizon(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicFutureHorizonItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicFutureHorizonItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicFutureHorizonItem) ? get_class($itemSearchRowBasicFutureHorizonItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicFutureHorizonItem), var_export($itemSearchRowBasicFutureHorizonItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The futureHorizon 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 futureHorizon value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $futureHorizon
     * @return \StructType\ItemSearchRowBasic
     */
    public function setFutureHorizon(array $futureHorizon = array())
    {
        // validation for constraint: array
        if ('' !== ($futureHorizonArrayErrorMessage = self::validateFutureHorizonForArrayConstraintsFromSetFutureHorizon($futureHorizon))) {
            throw new \InvalidArgumentException($futureHorizonArrayErrorMessage, __LINE__);
        }
        $this->futureHorizon = $futureHorizon;
        return $this;
    }
    /**
     * Add item to futureHorizon value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToFutureHorizon(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The futureHorizon 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->futureHorizon[] = $item;
        return $this;
    }
    /**
     * Get fxCost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getFxCost()
    {
        return $this->fxCost;
    }
    /**
     * This method is responsible for validating the values passed to the setFxCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFxCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFxCostForArrayConstraintsFromSetFxCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicFxCostItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicFxCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicFxCostItem) ? get_class($itemSearchRowBasicFxCostItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicFxCostItem), var_export($itemSearchRowBasicFxCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The fxCost 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 fxCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $fxCost
     * @return \StructType\ItemSearchRowBasic
     */
    public function setFxCost(array $fxCost = array())
    {
        // validation for constraint: array
        if ('' !== ($fxCostArrayErrorMessage = self::validateFxCostForArrayConstraintsFromSetFxCost($fxCost))) {
            throw new \InvalidArgumentException($fxCostArrayErrorMessage, __LINE__);
        }
        $this->fxCost = $fxCost;
        return $this;
    }
    /**
     * Add item to fxCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToFxCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The fxCost 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->fxCost[] = $item;
        return $this;
    }
    /**
     * Get gainLossAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getGainLossAccount()
    {
        return $this->gainLossAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setGainLossAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGainLossAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGainLossAccountForArrayConstraintsFromSetGainLossAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicGainLossAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicGainLossAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicGainLossAccountItem) ? get_class($itemSearchRowBasicGainLossAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicGainLossAccountItem), var_export($itemSearchRowBasicGainLossAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The gainLossAccount 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 gainLossAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $gainLossAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setGainLossAccount(array $gainLossAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($gainLossAccountArrayErrorMessage = self::validateGainLossAccountForArrayConstraintsFromSetGainLossAccount($gainLossAccount))) {
            throw new \InvalidArgumentException($gainLossAccountArrayErrorMessage, __LINE__);
        }
        $this->gainLossAccount = $gainLossAccount;
        return $this;
    }
    /**
     * Add item to gainLossAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToGainLossAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The gainLossAccount 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->gainLossAccount[] = $item;
        return $this;
    }
    /**
     * Get generateAccruals value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getGenerateAccruals()
    {
        return $this->generateAccruals;
    }
    /**
     * This method is responsible for validating the values passed to the setGenerateAccruals method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGenerateAccruals method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGenerateAccrualsForArrayConstraintsFromSetGenerateAccruals(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicGenerateAccrualsItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicGenerateAccrualsItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicGenerateAccrualsItem) ? get_class($itemSearchRowBasicGenerateAccrualsItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicGenerateAccrualsItem), var_export($itemSearchRowBasicGenerateAccrualsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The generateAccruals 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 generateAccruals value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $generateAccruals
     * @return \StructType\ItemSearchRowBasic
     */
    public function setGenerateAccruals(array $generateAccruals = array())
    {
        // validation for constraint: array
        if ('' !== ($generateAccrualsArrayErrorMessage = self::validateGenerateAccrualsForArrayConstraintsFromSetGenerateAccruals($generateAccruals))) {
            throw new \InvalidArgumentException($generateAccrualsArrayErrorMessage, __LINE__);
        }
        $this->generateAccruals = $generateAccruals;
        return $this;
    }
    /**
     * Add item to generateAccruals value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToGenerateAccruals(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The generateAccruals 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->generateAccruals[] = $item;
        return $this;
    }
    /**
     * Get giftCertAuthCode value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getGiftCertAuthCode()
    {
        return $this->giftCertAuthCode;
    }
    /**
     * This method is responsible for validating the values passed to the setGiftCertAuthCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGiftCertAuthCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGiftCertAuthCodeForArrayConstraintsFromSetGiftCertAuthCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicGiftCertAuthCodeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicGiftCertAuthCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicGiftCertAuthCodeItem) ? get_class($itemSearchRowBasicGiftCertAuthCodeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicGiftCertAuthCodeItem), var_export($itemSearchRowBasicGiftCertAuthCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The giftCertAuthCode 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 giftCertAuthCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $giftCertAuthCode
     * @return \StructType\ItemSearchRowBasic
     */
    public function setGiftCertAuthCode(array $giftCertAuthCode = array())
    {
        // validation for constraint: array
        if ('' !== ($giftCertAuthCodeArrayErrorMessage = self::validateGiftCertAuthCodeForArrayConstraintsFromSetGiftCertAuthCode($giftCertAuthCode))) {
            throw new \InvalidArgumentException($giftCertAuthCodeArrayErrorMessage, __LINE__);
        }
        $this->giftCertAuthCode = $giftCertAuthCode;
        return $this;
    }
    /**
     * Add item to giftCertAuthCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToGiftCertAuthCode(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The giftCertAuthCode 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->giftCertAuthCode[] = $item;
        return $this;
    }
    /**
     * Get giftCertEmail value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getGiftCertEmail()
    {
        return $this->giftCertEmail;
    }
    /**
     * This method is responsible for validating the values passed to the setGiftCertEmail method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGiftCertEmail method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGiftCertEmailForArrayConstraintsFromSetGiftCertEmail(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicGiftCertEmailItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicGiftCertEmailItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicGiftCertEmailItem) ? get_class($itemSearchRowBasicGiftCertEmailItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicGiftCertEmailItem), var_export($itemSearchRowBasicGiftCertEmailItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The giftCertEmail 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 giftCertEmail value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $giftCertEmail
     * @return \StructType\ItemSearchRowBasic
     */
    public function setGiftCertEmail(array $giftCertEmail = array())
    {
        // validation for constraint: array
        if ('' !== ($giftCertEmailArrayErrorMessage = self::validateGiftCertEmailForArrayConstraintsFromSetGiftCertEmail($giftCertEmail))) {
            throw new \InvalidArgumentException($giftCertEmailArrayErrorMessage, __LINE__);
        }
        $this->giftCertEmail = $giftCertEmail;
        return $this;
    }
    /**
     * Add item to giftCertEmail value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToGiftCertEmail(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The giftCertEmail 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->giftCertEmail[] = $item;
        return $this;
    }
    /**
     * Get giftCertExpirationDate value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getGiftCertExpirationDate()
    {
        return $this->giftCertExpirationDate;
    }
    /**
     * This method is responsible for validating the values passed to the setGiftCertExpirationDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGiftCertExpirationDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGiftCertExpirationDateForArrayConstraintsFromSetGiftCertExpirationDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicGiftCertExpirationDateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicGiftCertExpirationDateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicGiftCertExpirationDateItem) ? get_class($itemSearchRowBasicGiftCertExpirationDateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicGiftCertExpirationDateItem), var_export($itemSearchRowBasicGiftCertExpirationDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The giftCertExpirationDate 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 giftCertExpirationDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $giftCertExpirationDate
     * @return \StructType\ItemSearchRowBasic
     */
    public function setGiftCertExpirationDate(array $giftCertExpirationDate = array())
    {
        // validation for constraint: array
        if ('' !== ($giftCertExpirationDateArrayErrorMessage = self::validateGiftCertExpirationDateForArrayConstraintsFromSetGiftCertExpirationDate($giftCertExpirationDate))) {
            throw new \InvalidArgumentException($giftCertExpirationDateArrayErrorMessage, __LINE__);
        }
        $this->giftCertExpirationDate = $giftCertExpirationDate;
        return $this;
    }
    /**
     * Add item to giftCertExpirationDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToGiftCertExpirationDate(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The giftCertExpirationDate 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->giftCertExpirationDate[] = $item;
        return $this;
    }
    /**
     * Get giftCertFrom value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getGiftCertFrom()
    {
        return $this->giftCertFrom;
    }
    /**
     * This method is responsible for validating the values passed to the setGiftCertFrom method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGiftCertFrom method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGiftCertFromForArrayConstraintsFromSetGiftCertFrom(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicGiftCertFromItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicGiftCertFromItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicGiftCertFromItem) ? get_class($itemSearchRowBasicGiftCertFromItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicGiftCertFromItem), var_export($itemSearchRowBasicGiftCertFromItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The giftCertFrom 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 giftCertFrom value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $giftCertFrom
     * @return \StructType\ItemSearchRowBasic
     */
    public function setGiftCertFrom(array $giftCertFrom = array())
    {
        // validation for constraint: array
        if ('' !== ($giftCertFromArrayErrorMessage = self::validateGiftCertFromForArrayConstraintsFromSetGiftCertFrom($giftCertFrom))) {
            throw new \InvalidArgumentException($giftCertFromArrayErrorMessage, __LINE__);
        }
        $this->giftCertFrom = $giftCertFrom;
        return $this;
    }
    /**
     * Add item to giftCertFrom value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToGiftCertFrom(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The giftCertFrom 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->giftCertFrom[] = $item;
        return $this;
    }
    /**
     * Get giftCertMessage value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getGiftCertMessage()
    {
        return $this->giftCertMessage;
    }
    /**
     * This method is responsible for validating the values passed to the setGiftCertMessage method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGiftCertMessage method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGiftCertMessageForArrayConstraintsFromSetGiftCertMessage(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicGiftCertMessageItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicGiftCertMessageItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicGiftCertMessageItem) ? get_class($itemSearchRowBasicGiftCertMessageItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicGiftCertMessageItem), var_export($itemSearchRowBasicGiftCertMessageItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The giftCertMessage 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 giftCertMessage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $giftCertMessage
     * @return \StructType\ItemSearchRowBasic
     */
    public function setGiftCertMessage(array $giftCertMessage = array())
    {
        // validation for constraint: array
        if ('' !== ($giftCertMessageArrayErrorMessage = self::validateGiftCertMessageForArrayConstraintsFromSetGiftCertMessage($giftCertMessage))) {
            throw new \InvalidArgumentException($giftCertMessageArrayErrorMessage, __LINE__);
        }
        $this->giftCertMessage = $giftCertMessage;
        return $this;
    }
    /**
     * Add item to giftCertMessage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToGiftCertMessage(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The giftCertMessage 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->giftCertMessage[] = $item;
        return $this;
    }
    /**
     * Get giftCertOriginalAmount value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getGiftCertOriginalAmount()
    {
        return $this->giftCertOriginalAmount;
    }
    /**
     * This method is responsible for validating the values passed to the setGiftCertOriginalAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGiftCertOriginalAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGiftCertOriginalAmountForArrayConstraintsFromSetGiftCertOriginalAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicGiftCertOriginalAmountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicGiftCertOriginalAmountItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicGiftCertOriginalAmountItem) ? get_class($itemSearchRowBasicGiftCertOriginalAmountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicGiftCertOriginalAmountItem), var_export($itemSearchRowBasicGiftCertOriginalAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The giftCertOriginalAmount 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 giftCertOriginalAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $giftCertOriginalAmount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setGiftCertOriginalAmount(array $giftCertOriginalAmount = array())
    {
        // validation for constraint: array
        if ('' !== ($giftCertOriginalAmountArrayErrorMessage = self::validateGiftCertOriginalAmountForArrayConstraintsFromSetGiftCertOriginalAmount($giftCertOriginalAmount))) {
            throw new \InvalidArgumentException($giftCertOriginalAmountArrayErrorMessage, __LINE__);
        }
        $this->giftCertOriginalAmount = $giftCertOriginalAmount;
        return $this;
    }
    /**
     * Add item to giftCertOriginalAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToGiftCertOriginalAmount(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The giftCertOriginalAmount 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->giftCertOriginalAmount[] = $item;
        return $this;
    }
    /**
     * Get giftCertRecipient value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getGiftCertRecipient()
    {
        return $this->giftCertRecipient;
    }
    /**
     * This method is responsible for validating the values passed to the setGiftCertRecipient method
     * This method is willingly generated in order to preserve the one-line inline validation within the setGiftCertRecipient method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateGiftCertRecipientForArrayConstraintsFromSetGiftCertRecipient(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicGiftCertRecipientItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicGiftCertRecipientItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicGiftCertRecipientItem) ? get_class($itemSearchRowBasicGiftCertRecipientItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicGiftCertRecipientItem), var_export($itemSearchRowBasicGiftCertRecipientItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The giftCertRecipient 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 giftCertRecipient value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $giftCertRecipient
     * @return \StructType\ItemSearchRowBasic
     */
    public function setGiftCertRecipient(array $giftCertRecipient = array())
    {
        // validation for constraint: array
        if ('' !== ($giftCertRecipientArrayErrorMessage = self::validateGiftCertRecipientForArrayConstraintsFromSetGiftCertRecipient($giftCertRecipient))) {
            throw new \InvalidArgumentException($giftCertRecipientArrayErrorMessage, __LINE__);
        }
        $this->giftCertRecipient = $giftCertRecipient;
        return $this;
    }
    /**
     * Add item to giftCertRecipient value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToGiftCertRecipient(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The giftCertRecipient 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->giftCertRecipient[] = $item;
        return $this;
    }
    /**
     * Get hierarchyNode value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getHierarchyNode()
    {
        return $this->hierarchyNode;
    }
    /**
     * This method is responsible for validating the values passed to the setHierarchyNode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setHierarchyNode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateHierarchyNodeForArrayConstraintsFromSetHierarchyNode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicHierarchyNodeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicHierarchyNodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicHierarchyNodeItem) ? get_class($itemSearchRowBasicHierarchyNodeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicHierarchyNodeItem), var_export($itemSearchRowBasicHierarchyNodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The hierarchyNode 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 hierarchyNode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $hierarchyNode
     * @return \StructType\ItemSearchRowBasic
     */
    public function setHierarchyNode(array $hierarchyNode = array())
    {
        // validation for constraint: array
        if ('' !== ($hierarchyNodeArrayErrorMessage = self::validateHierarchyNodeForArrayConstraintsFromSetHierarchyNode($hierarchyNode))) {
            throw new \InvalidArgumentException($hierarchyNodeArrayErrorMessage, __LINE__);
        }
        $this->hierarchyNode = $hierarchyNode;
        return $this;
    }
    /**
     * Add item to hierarchyNode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToHierarchyNode(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The hierarchyNode 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->hierarchyNode[] = $item;
        return $this;
    }
    /**
     * Get hierarchyVersion value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getHierarchyVersion()
    {
        return $this->hierarchyVersion;
    }
    /**
     * This method is responsible for validating the values passed to the setHierarchyVersion method
     * This method is willingly generated in order to preserve the one-line inline validation within the setHierarchyVersion method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateHierarchyVersionForArrayConstraintsFromSetHierarchyVersion(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicHierarchyVersionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicHierarchyVersionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicHierarchyVersionItem) ? get_class($itemSearchRowBasicHierarchyVersionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicHierarchyVersionItem), var_export($itemSearchRowBasicHierarchyVersionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The hierarchyVersion 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 hierarchyVersion value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $hierarchyVersion
     * @return \StructType\ItemSearchRowBasic
     */
    public function setHierarchyVersion(array $hierarchyVersion = array())
    {
        // validation for constraint: array
        if ('' !== ($hierarchyVersionArrayErrorMessage = self::validateHierarchyVersionForArrayConstraintsFromSetHierarchyVersion($hierarchyVersion))) {
            throw new \InvalidArgumentException($hierarchyVersionArrayErrorMessage, __LINE__);
        }
        $this->hierarchyVersion = $hierarchyVersion;
        return $this;
    }
    /**
     * Add item to hierarchyVersion value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToHierarchyVersion(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The hierarchyVersion 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->hierarchyVersion[] = $item;
        return $this;
    }
    /**
     * Get hits value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getHits()
    {
        return $this->hits;
    }
    /**
     * This method is responsible for validating the values passed to the setHits method
     * This method is willingly generated in order to preserve the one-line inline validation within the setHits method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateHitsForArrayConstraintsFromSetHits(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicHitsItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicHitsItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicHitsItem) ? get_class($itemSearchRowBasicHitsItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicHitsItem), var_export($itemSearchRowBasicHitsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The hits 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 hits value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $hits
     * @return \StructType\ItemSearchRowBasic
     */
    public function setHits(array $hits = array())
    {
        // validation for constraint: array
        if ('' !== ($hitsArrayErrorMessage = self::validateHitsForArrayConstraintsFromSetHits($hits))) {
            throw new \InvalidArgumentException($hitsArrayErrorMessage, __LINE__);
        }
        $this->hits = $hits;
        return $this;
    }
    /**
     * Add item to hits value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToHits(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The hits 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->hits[] = $item;
        return $this;
    }
    /**
     * Get imageUrl value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getImageUrl()
    {
        return $this->imageUrl;
    }
    /**
     * This method is responsible for validating the values passed to the setImageUrl method
     * This method is willingly generated in order to preserve the one-line inline validation within the setImageUrl method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateImageUrlForArrayConstraintsFromSetImageUrl(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicImageUrlItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicImageUrlItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicImageUrlItem) ? get_class($itemSearchRowBasicImageUrlItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicImageUrlItem), var_export($itemSearchRowBasicImageUrlItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The imageUrl 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 imageUrl value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $imageUrl
     * @return \StructType\ItemSearchRowBasic
     */
    public function setImageUrl(array $imageUrl = array())
    {
        // validation for constraint: array
        if ('' !== ($imageUrlArrayErrorMessage = self::validateImageUrlForArrayConstraintsFromSetImageUrl($imageUrl))) {
            throw new \InvalidArgumentException($imageUrlArrayErrorMessage, __LINE__);
        }
        $this->imageUrl = $imageUrl;
        return $this;
    }
    /**
     * Add item to imageUrl value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToImageUrl(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The imageUrl 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->imageUrl[] = $item;
        return $this;
    }
    /**
     * Get includeChildren value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIncludeChildren()
    {
        return $this->includeChildren;
    }
    /**
     * This method is responsible for validating the values passed to the setIncludeChildren method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIncludeChildren method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIncludeChildrenForArrayConstraintsFromSetIncludeChildren(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIncludeChildrenItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIncludeChildrenItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIncludeChildrenItem) ? get_class($itemSearchRowBasicIncludeChildrenItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIncludeChildrenItem), var_export($itemSearchRowBasicIncludeChildrenItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The includeChildren 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 includeChildren value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $includeChildren
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIncludeChildren(array $includeChildren = array())
    {
        // validation for constraint: array
        if ('' !== ($includeChildrenArrayErrorMessage = self::validateIncludeChildrenForArrayConstraintsFromSetIncludeChildren($includeChildren))) {
            throw new \InvalidArgumentException($includeChildrenArrayErrorMessage, __LINE__);
        }
        $this->includeChildren = $includeChildren;
        return $this;
    }
    /**
     * Add item to includeChildren value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIncludeChildren(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The includeChildren 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->includeChildren[] = $item;
        return $this;
    }
    /**
     * Get incomeAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getIncomeAccount()
    {
        return $this->incomeAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setIncomeAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIncomeAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIncomeAccountForArrayConstraintsFromSetIncomeAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIncomeAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIncomeAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicIncomeAccountItem) ? get_class($itemSearchRowBasicIncomeAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIncomeAccountItem), var_export($itemSearchRowBasicIncomeAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The incomeAccount 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 incomeAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $incomeAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIncomeAccount(array $incomeAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($incomeAccountArrayErrorMessage = self::validateIncomeAccountForArrayConstraintsFromSetIncomeAccount($incomeAccount))) {
            throw new \InvalidArgumentException($incomeAccountArrayErrorMessage, __LINE__);
        }
        $this->incomeAccount = $incomeAccount;
        return $this;
    }
    /**
     * Add item to incomeAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIncomeAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The incomeAccount 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->incomeAccount[] = $item;
        return $this;
    }
    /**
     * Get intercoDefRevAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getIntercoDefRevAccount()
    {
        return $this->intercoDefRevAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setIntercoDefRevAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIntercoDefRevAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIntercoDefRevAccountForArrayConstraintsFromSetIntercoDefRevAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIntercoDefRevAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIntercoDefRevAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicIntercoDefRevAccountItem) ? get_class($itemSearchRowBasicIntercoDefRevAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIntercoDefRevAccountItem), var_export($itemSearchRowBasicIntercoDefRevAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The intercoDefRevAccount 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 intercoDefRevAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $intercoDefRevAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIntercoDefRevAccount(array $intercoDefRevAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($intercoDefRevAccountArrayErrorMessage = self::validateIntercoDefRevAccountForArrayConstraintsFromSetIntercoDefRevAccount($intercoDefRevAccount))) {
            throw new \InvalidArgumentException($intercoDefRevAccountArrayErrorMessage, __LINE__);
        }
        $this->intercoDefRevAccount = $intercoDefRevAccount;
        return $this;
    }
    /**
     * Add item to intercoDefRevAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIntercoDefRevAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The intercoDefRevAccount 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->intercoDefRevAccount[] = $item;
        return $this;
    }
    /**
     * Get intercoExpenseAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getIntercoExpenseAccount()
    {
        return $this->intercoExpenseAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setIntercoExpenseAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIntercoExpenseAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIntercoExpenseAccountForArrayConstraintsFromSetIntercoExpenseAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIntercoExpenseAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIntercoExpenseAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicIntercoExpenseAccountItem) ? get_class($itemSearchRowBasicIntercoExpenseAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIntercoExpenseAccountItem), var_export($itemSearchRowBasicIntercoExpenseAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The intercoExpenseAccount 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 intercoExpenseAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $intercoExpenseAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIntercoExpenseAccount(array $intercoExpenseAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($intercoExpenseAccountArrayErrorMessage = self::validateIntercoExpenseAccountForArrayConstraintsFromSetIntercoExpenseAccount($intercoExpenseAccount))) {
            throw new \InvalidArgumentException($intercoExpenseAccountArrayErrorMessage, __LINE__);
        }
        $this->intercoExpenseAccount = $intercoExpenseAccount;
        return $this;
    }
    /**
     * Add item to intercoExpenseAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIntercoExpenseAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The intercoExpenseAccount 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->intercoExpenseAccount[] = $item;
        return $this;
    }
    /**
     * Get intercoIncomeAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getIntercoIncomeAccount()
    {
        return $this->intercoIncomeAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setIntercoIncomeAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIntercoIncomeAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIntercoIncomeAccountForArrayConstraintsFromSetIntercoIncomeAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIntercoIncomeAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIntercoIncomeAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicIntercoIncomeAccountItem) ? get_class($itemSearchRowBasicIntercoIncomeAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIntercoIncomeAccountItem), var_export($itemSearchRowBasicIntercoIncomeAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The intercoIncomeAccount 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 intercoIncomeAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $intercoIncomeAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIntercoIncomeAccount(array $intercoIncomeAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($intercoIncomeAccountArrayErrorMessage = self::validateIntercoIncomeAccountForArrayConstraintsFromSetIntercoIncomeAccount($intercoIncomeAccount))) {
            throw new \InvalidArgumentException($intercoIncomeAccountArrayErrorMessage, __LINE__);
        }
        $this->intercoIncomeAccount = $intercoIncomeAccount;
        return $this;
    }
    /**
     * Add item to intercoIncomeAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIntercoIncomeAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The intercoIncomeAccount 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->intercoIncomeAccount[] = $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 $itemSearchRowBasicInternalIdItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicInternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicInternalIdItem) ? get_class($itemSearchRowBasicInternalIdItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicInternalIdItem), var_export($itemSearchRowBasicInternalIdItem, 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\ItemSearchRowBasic
     */
    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\ItemSearchRowBasic
     */
    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 inventoryLocation value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getInventoryLocation()
    {
        return $this->inventoryLocation;
    }
    /**
     * This method is responsible for validating the values passed to the setInventoryLocation method
     * This method is willingly generated in order to preserve the one-line inline validation within the setInventoryLocation method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateInventoryLocationForArrayConstraintsFromSetInventoryLocation(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicInventoryLocationItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicInventoryLocationItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicInventoryLocationItem) ? get_class($itemSearchRowBasicInventoryLocationItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicInventoryLocationItem), var_export($itemSearchRowBasicInventoryLocationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The inventoryLocation 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 inventoryLocation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $inventoryLocation
     * @return \StructType\ItemSearchRowBasic
     */
    public function setInventoryLocation(array $inventoryLocation = array())
    {
        // validation for constraint: array
        if ('' !== ($inventoryLocationArrayErrorMessage = self::validateInventoryLocationForArrayConstraintsFromSetInventoryLocation($inventoryLocation))) {
            throw new \InvalidArgumentException($inventoryLocationArrayErrorMessage, __LINE__);
        }
        $this->inventoryLocation = $inventoryLocation;
        return $this;
    }
    /**
     * Add item to inventoryLocation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToInventoryLocation(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The inventoryLocation 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->inventoryLocation[] = $item;
        return $this;
    }
    /**
     * Get invtClassification value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getInvtClassification()
    {
        return $this->invtClassification;
    }
    /**
     * This method is responsible for validating the values passed to the setInvtClassification method
     * This method is willingly generated in order to preserve the one-line inline validation within the setInvtClassification method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateInvtClassificationForArrayConstraintsFromSetInvtClassification(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicInvtClassificationItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicInvtClassificationItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicInvtClassificationItem) ? get_class($itemSearchRowBasicInvtClassificationItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicInvtClassificationItem), var_export($itemSearchRowBasicInvtClassificationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The invtClassification 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 invtClassification value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $invtClassification
     * @return \StructType\ItemSearchRowBasic
     */
    public function setInvtClassification(array $invtClassification = array())
    {
        // validation for constraint: array
        if ('' !== ($invtClassificationArrayErrorMessage = self::validateInvtClassificationForArrayConstraintsFromSetInvtClassification($invtClassification))) {
            throw new \InvalidArgumentException($invtClassificationArrayErrorMessage, __LINE__);
        }
        $this->invtClassification = $invtClassification;
        return $this;
    }
    /**
     * Add item to invtClassification value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToInvtClassification(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The invtClassification 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->invtClassification[] = $item;
        return $this;
    }
    /**
     * Get invtCountInterval value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getInvtCountInterval()
    {
        return $this->invtCountInterval;
    }
    /**
     * This method is responsible for validating the values passed to the setInvtCountInterval method
     * This method is willingly generated in order to preserve the one-line inline validation within the setInvtCountInterval method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateInvtCountIntervalForArrayConstraintsFromSetInvtCountInterval(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicInvtCountIntervalItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicInvtCountIntervalItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicInvtCountIntervalItem) ? get_class($itemSearchRowBasicInvtCountIntervalItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicInvtCountIntervalItem), var_export($itemSearchRowBasicInvtCountIntervalItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The invtCountInterval 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 invtCountInterval value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $invtCountInterval
     * @return \StructType\ItemSearchRowBasic
     */
    public function setInvtCountInterval(array $invtCountInterval = array())
    {
        // validation for constraint: array
        if ('' !== ($invtCountIntervalArrayErrorMessage = self::validateInvtCountIntervalForArrayConstraintsFromSetInvtCountInterval($invtCountInterval))) {
            throw new \InvalidArgumentException($invtCountIntervalArrayErrorMessage, __LINE__);
        }
        $this->invtCountInterval = $invtCountInterval;
        return $this;
    }
    /**
     * Add item to invtCountInterval value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToInvtCountInterval(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The invtCountInterval 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->invtCountInterval[] = $item;
        return $this;
    }
    /**
     * Get isAvailable value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsAvailable()
    {
        return $this->isAvailable;
    }
    /**
     * This method is responsible for validating the values passed to the setIsAvailable method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsAvailable method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsAvailableForArrayConstraintsFromSetIsAvailable(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsAvailableItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsAvailableItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsAvailableItem) ? get_class($itemSearchRowBasicIsAvailableItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsAvailableItem), var_export($itemSearchRowBasicIsAvailableItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isAvailable 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 isAvailable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isAvailable
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsAvailable(array $isAvailable = array())
    {
        // validation for constraint: array
        if ('' !== ($isAvailableArrayErrorMessage = self::validateIsAvailableForArrayConstraintsFromSetIsAvailable($isAvailable))) {
            throw new \InvalidArgumentException($isAvailableArrayErrorMessage, __LINE__);
        }
        $this->isAvailable = $isAvailable;
        return $this;
    }
    /**
     * Add item to isAvailable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsAvailable(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isAvailable 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->isAvailable[] = $item;
        return $this;
    }
    /**
     * Get isDropShipItem value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsDropShipItem()
    {
        return $this->isDropShipItem;
    }
    /**
     * This method is responsible for validating the values passed to the setIsDropShipItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsDropShipItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsDropShipItemForArrayConstraintsFromSetIsDropShipItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsDropShipItemItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsDropShipItemItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsDropShipItemItem) ? get_class($itemSearchRowBasicIsDropShipItemItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsDropShipItemItem), var_export($itemSearchRowBasicIsDropShipItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isDropShipItem 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 isDropShipItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isDropShipItem
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsDropShipItem(array $isDropShipItem = array())
    {
        // validation for constraint: array
        if ('' !== ($isDropShipItemArrayErrorMessage = self::validateIsDropShipItemForArrayConstraintsFromSetIsDropShipItem($isDropShipItem))) {
            throw new \InvalidArgumentException($isDropShipItemArrayErrorMessage, __LINE__);
        }
        $this->isDropShipItem = $isDropShipItem;
        return $this;
    }
    /**
     * Add item to isDropShipItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsDropShipItem(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isDropShipItem 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->isDropShipItem[] = $item;
        return $this;
    }
    /**
     * Get isFulfillable value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsFulfillable()
    {
        return $this->isFulfillable;
    }
    /**
     * This method is responsible for validating the values passed to the setIsFulfillable method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsFulfillable method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsFulfillableForArrayConstraintsFromSetIsFulfillable(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsFulfillableItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsFulfillableItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsFulfillableItem) ? get_class($itemSearchRowBasicIsFulfillableItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsFulfillableItem), var_export($itemSearchRowBasicIsFulfillableItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isFulfillable 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 isFulfillable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isFulfillable
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsFulfillable(array $isFulfillable = array())
    {
        // validation for constraint: array
        if ('' !== ($isFulfillableArrayErrorMessage = self::validateIsFulfillableForArrayConstraintsFromSetIsFulfillable($isFulfillable))) {
            throw new \InvalidArgumentException($isFulfillableArrayErrorMessage, __LINE__);
        }
        $this->isFulfillable = $isFulfillable;
        return $this;
    }
    /**
     * Add item to isFulfillable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsFulfillable(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isFulfillable 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->isFulfillable[] = $item;
        return $this;
    }
    /**
     * Get isGcoCompliant value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsGcoCompliant()
    {
        return $this->isGcoCompliant;
    }
    /**
     * This method is responsible for validating the values passed to the setIsGcoCompliant method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsGcoCompliant method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsGcoCompliantForArrayConstraintsFromSetIsGcoCompliant(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsGcoCompliantItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsGcoCompliantItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsGcoCompliantItem) ? get_class($itemSearchRowBasicIsGcoCompliantItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsGcoCompliantItem), var_export($itemSearchRowBasicIsGcoCompliantItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isGcoCompliant 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 isGcoCompliant value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isGcoCompliant
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsGcoCompliant(array $isGcoCompliant = array())
    {
        // validation for constraint: array
        if ('' !== ($isGcoCompliantArrayErrorMessage = self::validateIsGcoCompliantForArrayConstraintsFromSetIsGcoCompliant($isGcoCompliant))) {
            throw new \InvalidArgumentException($isGcoCompliantArrayErrorMessage, __LINE__);
        }
        $this->isGcoCompliant = $isGcoCompliant;
        return $this;
    }
    /**
     * Add item to isGcoCompliant value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsGcoCompliant(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isGcoCompliant 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->isGcoCompliant[] = $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 $itemSearchRowBasicIsInactiveItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsInactiveItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsInactiveItem) ? get_class($itemSearchRowBasicIsInactiveItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsInactiveItem), var_export($itemSearchRowBasicIsInactiveItem, 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\ItemSearchRowBasic
     */
    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\ItemSearchRowBasic
     */
    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 isLotItem value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsLotItem()
    {
        return $this->isLotItem;
    }
    /**
     * This method is responsible for validating the values passed to the setIsLotItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsLotItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsLotItemForArrayConstraintsFromSetIsLotItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsLotItemItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsLotItemItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsLotItemItem) ? get_class($itemSearchRowBasicIsLotItemItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsLotItemItem), var_export($itemSearchRowBasicIsLotItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isLotItem 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 isLotItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isLotItem
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsLotItem(array $isLotItem = array())
    {
        // validation for constraint: array
        if ('' !== ($isLotItemArrayErrorMessage = self::validateIsLotItemForArrayConstraintsFromSetIsLotItem($isLotItem))) {
            throw new \InvalidArgumentException($isLotItemArrayErrorMessage, __LINE__);
        }
        $this->isLotItem = $isLotItem;
        return $this;
    }
    /**
     * Add item to isLotItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsLotItem(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isLotItem 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->isLotItem[] = $item;
        return $this;
    }
    /**
     * Get isOnline value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsOnline()
    {
        return $this->isOnline;
    }
    /**
     * This method is responsible for validating the values passed to the setIsOnline method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsOnline method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsOnlineForArrayConstraintsFromSetIsOnline(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsOnlineItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsOnlineItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsOnlineItem) ? get_class($itemSearchRowBasicIsOnlineItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsOnlineItem), var_export($itemSearchRowBasicIsOnlineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isOnline 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 isOnline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isOnline
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsOnline(array $isOnline = array())
    {
        // validation for constraint: array
        if ('' !== ($isOnlineArrayErrorMessage = self::validateIsOnlineForArrayConstraintsFromSetIsOnline($isOnline))) {
            throw new \InvalidArgumentException($isOnlineArrayErrorMessage, __LINE__);
        }
        $this->isOnline = $isOnline;
        return $this;
    }
    /**
     * Add item to isOnline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsOnline(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isOnline 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->isOnline[] = $item;
        return $this;
    }
    /**
     * Get isSerialItem value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsSerialItem()
    {
        return $this->isSerialItem;
    }
    /**
     * This method is responsible for validating the values passed to the setIsSerialItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsSerialItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsSerialItemForArrayConstraintsFromSetIsSerialItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsSerialItemItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsSerialItemItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsSerialItemItem) ? get_class($itemSearchRowBasicIsSerialItemItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsSerialItemItem), var_export($itemSearchRowBasicIsSerialItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isSerialItem 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 isSerialItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isSerialItem
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsSerialItem(array $isSerialItem = array())
    {
        // validation for constraint: array
        if ('' !== ($isSerialItemArrayErrorMessage = self::validateIsSerialItemForArrayConstraintsFromSetIsSerialItem($isSerialItem))) {
            throw new \InvalidArgumentException($isSerialItemArrayErrorMessage, __LINE__);
        }
        $this->isSerialItem = $isSerialItem;
        return $this;
    }
    /**
     * Add item to isSerialItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsSerialItem(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isSerialItem 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->isSerialItem[] = $item;
        return $this;
    }
    /**
     * Get isSpecialOrderItem value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsSpecialOrderItem()
    {
        return $this->isSpecialOrderItem;
    }
    /**
     * This method is responsible for validating the values passed to the setIsSpecialOrderItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsSpecialOrderItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsSpecialOrderItemForArrayConstraintsFromSetIsSpecialOrderItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsSpecialOrderItemItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsSpecialOrderItemItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsSpecialOrderItemItem) ? get_class($itemSearchRowBasicIsSpecialOrderItemItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsSpecialOrderItemItem), var_export($itemSearchRowBasicIsSpecialOrderItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isSpecialOrderItem 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 isSpecialOrderItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isSpecialOrderItem
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsSpecialOrderItem(array $isSpecialOrderItem = array())
    {
        // validation for constraint: array
        if ('' !== ($isSpecialOrderItemArrayErrorMessage = self::validateIsSpecialOrderItemForArrayConstraintsFromSetIsSpecialOrderItem($isSpecialOrderItem))) {
            throw new \InvalidArgumentException($isSpecialOrderItemArrayErrorMessage, __LINE__);
        }
        $this->isSpecialOrderItem = $isSpecialOrderItem;
        return $this;
    }
    /**
     * Add item to isSpecialOrderItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsSpecialOrderItem(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isSpecialOrderItem 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->isSpecialOrderItem[] = $item;
        return $this;
    }
    /**
     * Get isSpecialWorkOrderItem value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsSpecialWorkOrderItem()
    {
        return $this->isSpecialWorkOrderItem;
    }
    /**
     * This method is responsible for validating the values passed to the setIsSpecialWorkOrderItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsSpecialWorkOrderItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsSpecialWorkOrderItemForArrayConstraintsFromSetIsSpecialWorkOrderItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsSpecialWorkOrderItemItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsSpecialWorkOrderItemItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsSpecialWorkOrderItemItem) ? get_class($itemSearchRowBasicIsSpecialWorkOrderItemItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsSpecialWorkOrderItemItem), var_export($itemSearchRowBasicIsSpecialWorkOrderItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isSpecialWorkOrderItem 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 isSpecialWorkOrderItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isSpecialWorkOrderItem
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsSpecialWorkOrderItem(array $isSpecialWorkOrderItem = array())
    {
        // validation for constraint: array
        if ('' !== ($isSpecialWorkOrderItemArrayErrorMessage = self::validateIsSpecialWorkOrderItemForArrayConstraintsFromSetIsSpecialWorkOrderItem($isSpecialWorkOrderItem))) {
            throw new \InvalidArgumentException($isSpecialWorkOrderItemArrayErrorMessage, __LINE__);
        }
        $this->isSpecialWorkOrderItem = $isSpecialWorkOrderItem;
        return $this;
    }
    /**
     * Add item to isSpecialWorkOrderItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsSpecialWorkOrderItem(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isSpecialWorkOrderItem 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->isSpecialWorkOrderItem[] = $item;
        return $this;
    }
    /**
     * Get isStorePickupAllowed value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsStorePickupAllowed()
    {
        return $this->isStorePickupAllowed;
    }
    /**
     * This method is responsible for validating the values passed to the setIsStorePickupAllowed method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsStorePickupAllowed method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsStorePickupAllowedForArrayConstraintsFromSetIsStorePickupAllowed(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsStorePickupAllowedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsStorePickupAllowedItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsStorePickupAllowedItem) ? get_class($itemSearchRowBasicIsStorePickupAllowedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsStorePickupAllowedItem), var_export($itemSearchRowBasicIsStorePickupAllowedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isStorePickupAllowed 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 isStorePickupAllowed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isStorePickupAllowed
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsStorePickupAllowed(array $isStorePickupAllowed = array())
    {
        // validation for constraint: array
        if ('' !== ($isStorePickupAllowedArrayErrorMessage = self::validateIsStorePickupAllowedForArrayConstraintsFromSetIsStorePickupAllowed($isStorePickupAllowed))) {
            throw new \InvalidArgumentException($isStorePickupAllowedArrayErrorMessage, __LINE__);
        }
        $this->isStorePickupAllowed = $isStorePickupAllowed;
        return $this;
    }
    /**
     * Add item to isStorePickupAllowed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsStorePickupAllowed(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isStorePickupAllowed 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->isStorePickupAllowed[] = $item;
        return $this;
    }
    /**
     * Get issueProduct value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getIssueProduct()
    {
        return $this->issueProduct;
    }
    /**
     * This method is responsible for validating the values passed to the setIssueProduct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIssueProduct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIssueProductForArrayConstraintsFromSetIssueProduct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIssueProductItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIssueProductItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicIssueProductItem) ? get_class($itemSearchRowBasicIssueProductItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIssueProductItem), var_export($itemSearchRowBasicIssueProductItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The issueProduct 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 issueProduct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $issueProduct
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIssueProduct(array $issueProduct = array())
    {
        // validation for constraint: array
        if ('' !== ($issueProductArrayErrorMessage = self::validateIssueProductForArrayConstraintsFromSetIssueProduct($issueProduct))) {
            throw new \InvalidArgumentException($issueProductArrayErrorMessage, __LINE__);
        }
        $this->issueProduct = $issueProduct;
        return $this;
    }
    /**
     * Add item to issueProduct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIssueProduct(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The issueProduct 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->issueProduct[] = $item;
        return $this;
    }
    /**
     * Get isTaxable value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsTaxable()
    {
        return $this->isTaxable;
    }
    /**
     * This method is responsible for validating the values passed to the setIsTaxable method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsTaxable method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsTaxableForArrayConstraintsFromSetIsTaxable(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsTaxableItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsTaxableItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsTaxableItem) ? get_class($itemSearchRowBasicIsTaxableItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsTaxableItem), var_export($itemSearchRowBasicIsTaxableItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isTaxable 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 isTaxable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isTaxable
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsTaxable(array $isTaxable = array())
    {
        // validation for constraint: array
        if ('' !== ($isTaxableArrayErrorMessage = self::validateIsTaxableForArrayConstraintsFromSetIsTaxable($isTaxable))) {
            throw new \InvalidArgumentException($isTaxableArrayErrorMessage, __LINE__);
        }
        $this->isTaxable = $isTaxable;
        return $this;
    }
    /**
     * Add item to isTaxable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsTaxable(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isTaxable 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->isTaxable[] = $item;
        return $this;
    }
    /**
     * Get isVsoeBundle value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsVsoeBundle()
    {
        return $this->isVsoeBundle;
    }
    /**
     * This method is responsible for validating the values passed to the setIsVsoeBundle method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsVsoeBundle method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsVsoeBundleForArrayConstraintsFromSetIsVsoeBundle(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsVsoeBundleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsVsoeBundleItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsVsoeBundleItem) ? get_class($itemSearchRowBasicIsVsoeBundleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsVsoeBundleItem), var_export($itemSearchRowBasicIsVsoeBundleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isVsoeBundle 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 isVsoeBundle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isVsoeBundle
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsVsoeBundle(array $isVsoeBundle = array())
    {
        // validation for constraint: array
        if ('' !== ($isVsoeBundleArrayErrorMessage = self::validateIsVsoeBundleForArrayConstraintsFromSetIsVsoeBundle($isVsoeBundle))) {
            throw new \InvalidArgumentException($isVsoeBundleArrayErrorMessage, __LINE__);
        }
        $this->isVsoeBundle = $isVsoeBundle;
        return $this;
    }
    /**
     * Add item to isVsoeBundle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsVsoeBundle(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isVsoeBundle 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->isVsoeBundle[] = $item;
        return $this;
    }
    /**
     * Get isWip value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsWip()
    {
        return $this->isWip;
    }
    /**
     * This method is responsible for validating the values passed to the setIsWip method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsWip method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsWipForArrayConstraintsFromSetIsWip(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicIsWipItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicIsWipItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicIsWipItem) ? get_class($itemSearchRowBasicIsWipItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicIsWipItem), var_export($itemSearchRowBasicIsWipItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isWip 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 isWip value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isWip
     * @return \StructType\ItemSearchRowBasic
     */
    public function setIsWip(array $isWip = array())
    {
        // validation for constraint: array
        if ('' !== ($isWipArrayErrorMessage = self::validateIsWipForArrayConstraintsFromSetIsWip($isWip))) {
            throw new \InvalidArgumentException($isWipArrayErrorMessage, __LINE__);
        }
        $this->isWip = $isWip;
        return $this;
    }
    /**
     * Add item to isWip value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToIsWip(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isWip 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->isWip[] = $item;
        return $this;
    }
    /**
     * Get itemId value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getItemId()
    {
        return $this->itemId;
    }
    /**
     * This method is responsible for validating the values passed to the setItemId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setItemId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateItemIdForArrayConstraintsFromSetItemId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicItemIdItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicItemIdItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicItemIdItem) ? get_class($itemSearchRowBasicItemIdItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicItemIdItem), var_export($itemSearchRowBasicItemIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The itemId 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 itemId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $itemId
     * @return \StructType\ItemSearchRowBasic
     */
    public function setItemId(array $itemId = array())
    {
        // validation for constraint: array
        if ('' !== ($itemIdArrayErrorMessage = self::validateItemIdForArrayConstraintsFromSetItemId($itemId))) {
            throw new \InvalidArgumentException($itemIdArrayErrorMessage, __LINE__);
        }
        $this->itemId = $itemId;
        return $this;
    }
    /**
     * Add item to itemId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToItemId(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The itemId 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->itemId[] = $item;
        return $this;
    }
    /**
     * Get itemRevenueCategory value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getItemRevenueCategory()
    {
        return $this->itemRevenueCategory;
    }
    /**
     * This method is responsible for validating the values passed to the setItemRevenueCategory method
     * This method is willingly generated in order to preserve the one-line inline validation within the setItemRevenueCategory method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateItemRevenueCategoryForArrayConstraintsFromSetItemRevenueCategory(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicItemRevenueCategoryItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicItemRevenueCategoryItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicItemRevenueCategoryItem) ? get_class($itemSearchRowBasicItemRevenueCategoryItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicItemRevenueCategoryItem), var_export($itemSearchRowBasicItemRevenueCategoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The itemRevenueCategory 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 itemRevenueCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $itemRevenueCategory
     * @return \StructType\ItemSearchRowBasic
     */
    public function setItemRevenueCategory(array $itemRevenueCategory = array())
    {
        // validation for constraint: array
        if ('' !== ($itemRevenueCategoryArrayErrorMessage = self::validateItemRevenueCategoryForArrayConstraintsFromSetItemRevenueCategory($itemRevenueCategory))) {
            throw new \InvalidArgumentException($itemRevenueCategoryArrayErrorMessage, __LINE__);
        }
        $this->itemRevenueCategory = $itemRevenueCategory;
        return $this;
    }
    /**
     * Add item to itemRevenueCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToItemRevenueCategory(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The itemRevenueCategory 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->itemRevenueCategory[] = $item;
        return $this;
    }
    /**
     * Get itemUrl value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getItemUrl()
    {
        return $this->itemUrl;
    }
    /**
     * This method is responsible for validating the values passed to the setItemUrl method
     * This method is willingly generated in order to preserve the one-line inline validation within the setItemUrl method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateItemUrlForArrayConstraintsFromSetItemUrl(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicItemUrlItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicItemUrlItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicItemUrlItem) ? get_class($itemSearchRowBasicItemUrlItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicItemUrlItem), var_export($itemSearchRowBasicItemUrlItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The itemUrl 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 itemUrl value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $itemUrl
     * @return \StructType\ItemSearchRowBasic
     */
    public function setItemUrl(array $itemUrl = array())
    {
        // validation for constraint: array
        if ('' !== ($itemUrlArrayErrorMessage = self::validateItemUrlForArrayConstraintsFromSetItemUrl($itemUrl))) {
            throw new \InvalidArgumentException($itemUrlArrayErrorMessage, __LINE__);
        }
        $this->itemUrl = $itemUrl;
        return $this;
    }
    /**
     * Add item to itemUrl value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToItemUrl(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The itemUrl 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->itemUrl[] = $item;
        return $this;
    }
    /**
     * Get lastInvtCountDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLastInvtCountDate()
    {
        return $this->lastInvtCountDate;
    }
    /**
     * This method is responsible for validating the values passed to the setLastInvtCountDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLastInvtCountDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLastInvtCountDateForArrayConstraintsFromSetLastInvtCountDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLastInvtCountDateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLastInvtCountDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($itemSearchRowBasicLastInvtCountDateItem) ? get_class($itemSearchRowBasicLastInvtCountDateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLastInvtCountDateItem), var_export($itemSearchRowBasicLastInvtCountDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lastInvtCountDate 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 lastInvtCountDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $lastInvtCountDate
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLastInvtCountDate(array $lastInvtCountDate = array())
    {
        // validation for constraint: array
        if ('' !== ($lastInvtCountDateArrayErrorMessage = self::validateLastInvtCountDateForArrayConstraintsFromSetLastInvtCountDate($lastInvtCountDate))) {
            throw new \InvalidArgumentException($lastInvtCountDateArrayErrorMessage, __LINE__);
        }
        $this->lastInvtCountDate = $lastInvtCountDate;
        return $this;
    }
    /**
     * Add item to lastInvtCountDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLastInvtCountDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The lastInvtCountDate 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->lastInvtCountDate[] = $item;
        return $this;
    }
    /**
     * Get lastPurchasePrice value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLastPurchasePrice()
    {
        return $this->lastPurchasePrice;
    }
    /**
     * This method is responsible for validating the values passed to the setLastPurchasePrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLastPurchasePrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLastPurchasePriceForArrayConstraintsFromSetLastPurchasePrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLastPurchasePriceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLastPurchasePriceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLastPurchasePriceItem) ? get_class($itemSearchRowBasicLastPurchasePriceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLastPurchasePriceItem), var_export($itemSearchRowBasicLastPurchasePriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lastPurchasePrice 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 lastPurchasePrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $lastPurchasePrice
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLastPurchasePrice(array $lastPurchasePrice = array())
    {
        // validation for constraint: array
        if ('' !== ($lastPurchasePriceArrayErrorMessage = self::validateLastPurchasePriceForArrayConstraintsFromSetLastPurchasePrice($lastPurchasePrice))) {
            throw new \InvalidArgumentException($lastPurchasePriceArrayErrorMessage, __LINE__);
        }
        $this->lastPurchasePrice = $lastPurchasePrice;
        return $this;
    }
    /**
     * Add item to lastPurchasePrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLastPurchasePrice(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The lastPurchasePrice 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->lastPurchasePrice[] = $item;
        return $this;
    }
    /**
     * Get lastQuantityAvailableChange value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLastQuantityAvailableChange()
    {
        return $this->lastQuantityAvailableChange;
    }
    /**
     * This method is responsible for validating the values passed to the setLastQuantityAvailableChange method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLastQuantityAvailableChange method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLastQuantityAvailableChangeForArrayConstraintsFromSetLastQuantityAvailableChange(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLastQuantityAvailableChangeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLastQuantityAvailableChangeItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($itemSearchRowBasicLastQuantityAvailableChangeItem) ? get_class($itemSearchRowBasicLastQuantityAvailableChangeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLastQuantityAvailableChangeItem), var_export($itemSearchRowBasicLastQuantityAvailableChangeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lastQuantityAvailableChange 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 lastQuantityAvailableChange value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $lastQuantityAvailableChange
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLastQuantityAvailableChange(array $lastQuantityAvailableChange = array())
    {
        // validation for constraint: array
        if ('' !== ($lastQuantityAvailableChangeArrayErrorMessage = self::validateLastQuantityAvailableChangeForArrayConstraintsFromSetLastQuantityAvailableChange($lastQuantityAvailableChange))) {
            throw new \InvalidArgumentException($lastQuantityAvailableChangeArrayErrorMessage, __LINE__);
        }
        $this->lastQuantityAvailableChange = $lastQuantityAvailableChange;
        return $this;
    }
    /**
     * Add item to lastQuantityAvailableChange value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLastQuantityAvailableChange(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The lastQuantityAvailableChange 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->lastQuantityAvailableChange[] = $item;
        return $this;
    }
    /**
     * Get leadTime value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getLeadTime()
    {
        return $this->leadTime;
    }
    /**
     * This method is responsible for validating the values passed to the setLeadTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLeadTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLeadTimeForArrayConstraintsFromSetLeadTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLeadTimeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLeadTimeItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicLeadTimeItem) ? get_class($itemSearchRowBasicLeadTimeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLeadTimeItem), var_export($itemSearchRowBasicLeadTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The leadTime 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 leadTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $leadTime
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLeadTime(array $leadTime = array())
    {
        // validation for constraint: array
        if ('' !== ($leadTimeArrayErrorMessage = self::validateLeadTimeForArrayConstraintsFromSetLeadTime($leadTime))) {
            throw new \InvalidArgumentException($leadTimeArrayErrorMessage, __LINE__);
        }
        $this->leadTime = $leadTime;
        return $this;
    }
    /**
     * Add item to leadTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLeadTime(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The leadTime 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->leadTime[] = $item;
        return $this;
    }
    /**
     * Get liabilityAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getLiabilityAccount()
    {
        return $this->liabilityAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setLiabilityAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLiabilityAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLiabilityAccountForArrayConstraintsFromSetLiabilityAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLiabilityAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLiabilityAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicLiabilityAccountItem) ? get_class($itemSearchRowBasicLiabilityAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLiabilityAccountItem), var_export($itemSearchRowBasicLiabilityAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The liabilityAccount 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 liabilityAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $liabilityAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLiabilityAccount(array $liabilityAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($liabilityAccountArrayErrorMessage = self::validateLiabilityAccountForArrayConstraintsFromSetLiabilityAccount($liabilityAccount))) {
            throw new \InvalidArgumentException($liabilityAccountArrayErrorMessage, __LINE__);
        }
        $this->liabilityAccount = $liabilityAccount;
        return $this;
    }
    /**
     * Add item to liabilityAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLiabilityAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The liabilityAccount 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->liabilityAccount[] = $item;
        return $this;
    }
    /**
     * Get listingDuration value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getListingDuration()
    {
        return $this->listingDuration;
    }
    /**
     * This method is responsible for validating the values passed to the setListingDuration method
     * This method is willingly generated in order to preserve the one-line inline validation within the setListingDuration method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateListingDurationForArrayConstraintsFromSetListingDuration(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicListingDurationItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicListingDurationItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicListingDurationItem) ? get_class($itemSearchRowBasicListingDurationItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicListingDurationItem), var_export($itemSearchRowBasicListingDurationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The listingDuration 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 listingDuration value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $listingDuration
     * @return \StructType\ItemSearchRowBasic
     */
    public function setListingDuration(array $listingDuration = array())
    {
        // validation for constraint: array
        if ('' !== ($listingDurationArrayErrorMessage = self::validateListingDurationForArrayConstraintsFromSetListingDuration($listingDuration))) {
            throw new \InvalidArgumentException($listingDurationArrayErrorMessage, __LINE__);
        }
        $this->listingDuration = $listingDuration;
        return $this;
    }
    /**
     * Add item to listingDuration value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToListingDuration(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The listingDuration 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->listingDuration[] = $item;
        return $this;
    }
    /**
     * Get location value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getLocation()
    {
        return $this->location;
    }
    /**
     * This method is responsible for validating the values passed to the setLocation method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocation method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationForArrayConstraintsFromSetLocation(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationItem) ? get_class($itemSearchRowBasicLocationItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationItem), var_export($itemSearchRowBasicLocationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The location property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set location value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $location
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocation(array $location = array())
    {
        // validation for constraint: array
        if ('' !== ($locationArrayErrorMessage = self::validateLocationForArrayConstraintsFromSetLocation($location))) {
            throw new \InvalidArgumentException($locationArrayErrorMessage, __LINE__);
        }
        $this->location = $location;
        return $this;
    }
    /**
     * Add item to location value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocation(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The location property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->location[] = $item;
        return $this;
    }
    /**
     * Get locationAllowStorePickup value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getLocationAllowStorePickup()
    {
        return $this->locationAllowStorePickup;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationAllowStorePickup method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationAllowStorePickup method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationAllowStorePickupForArrayConstraintsFromSetLocationAllowStorePickup(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationAllowStorePickupItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationAllowStorePickupItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationAllowStorePickupItem) ? get_class($itemSearchRowBasicLocationAllowStorePickupItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationAllowStorePickupItem), var_export($itemSearchRowBasicLocationAllowStorePickupItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationAllowStorePickup 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 locationAllowStorePickup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $locationAllowStorePickup
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationAllowStorePickup(array $locationAllowStorePickup = array())
    {
        // validation for constraint: array
        if ('' !== ($locationAllowStorePickupArrayErrorMessage = self::validateLocationAllowStorePickupForArrayConstraintsFromSetLocationAllowStorePickup($locationAllowStorePickup))) {
            throw new \InvalidArgumentException($locationAllowStorePickupArrayErrorMessage, __LINE__);
        }
        $this->locationAllowStorePickup = $locationAllowStorePickup;
        return $this;
    }
    /**
     * Add item to locationAllowStorePickup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationAllowStorePickup(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The locationAllowStorePickup 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->locationAllowStorePickup[] = $item;
        return $this;
    }
    /**
     * Get locationAtpLeadTime value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationAtpLeadTime()
    {
        return $this->locationAtpLeadTime;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationAtpLeadTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationAtpLeadTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationAtpLeadTimeForArrayConstraintsFromSetLocationAtpLeadTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationAtpLeadTimeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationAtpLeadTimeItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationAtpLeadTimeItem) ? get_class($itemSearchRowBasicLocationAtpLeadTimeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationAtpLeadTimeItem), var_export($itemSearchRowBasicLocationAtpLeadTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationAtpLeadTime 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 locationAtpLeadTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationAtpLeadTime
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationAtpLeadTime(array $locationAtpLeadTime = array())
    {
        // validation for constraint: array
        if ('' !== ($locationAtpLeadTimeArrayErrorMessage = self::validateLocationAtpLeadTimeForArrayConstraintsFromSetLocationAtpLeadTime($locationAtpLeadTime))) {
            throw new \InvalidArgumentException($locationAtpLeadTimeArrayErrorMessage, __LINE__);
        }
        $this->locationAtpLeadTime = $locationAtpLeadTime;
        return $this;
    }
    /**
     * Add item to locationAtpLeadTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationAtpLeadTime(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationAtpLeadTime 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->locationAtpLeadTime[] = $item;
        return $this;
    }
    /**
     * Get locationAverageCost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationAverageCost()
    {
        return $this->locationAverageCost;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationAverageCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationAverageCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationAverageCostForArrayConstraintsFromSetLocationAverageCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationAverageCostItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationAverageCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationAverageCostItem) ? get_class($itemSearchRowBasicLocationAverageCostItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationAverageCostItem), var_export($itemSearchRowBasicLocationAverageCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationAverageCost 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 locationAverageCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationAverageCost
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationAverageCost(array $locationAverageCost = array())
    {
        // validation for constraint: array
        if ('' !== ($locationAverageCostArrayErrorMessage = self::validateLocationAverageCostForArrayConstraintsFromSetLocationAverageCost($locationAverageCost))) {
            throw new \InvalidArgumentException($locationAverageCostArrayErrorMessage, __LINE__);
        }
        $this->locationAverageCost = $locationAverageCost;
        return $this;
    }
    /**
     * Add item to locationAverageCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationAverageCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationAverageCost 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->locationAverageCost[] = $item;
        return $this;
    }
    /**
     * Get locationBinQuantityAvailable value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getLocationBinQuantityAvailable()
    {
        return $this->locationBinQuantityAvailable;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationBinQuantityAvailable method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationBinQuantityAvailable method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationBinQuantityAvailableForArrayConstraintsFromSetLocationBinQuantityAvailable(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationBinQuantityAvailableItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationBinQuantityAvailableItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationBinQuantityAvailableItem) ? get_class($itemSearchRowBasicLocationBinQuantityAvailableItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationBinQuantityAvailableItem), var_export($itemSearchRowBasicLocationBinQuantityAvailableItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationBinQuantityAvailable 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 locationBinQuantityAvailable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $locationBinQuantityAvailable
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationBinQuantityAvailable(array $locationBinQuantityAvailable = array())
    {
        // validation for constraint: array
        if ('' !== ($locationBinQuantityAvailableArrayErrorMessage = self::validateLocationBinQuantityAvailableForArrayConstraintsFromSetLocationBinQuantityAvailable($locationBinQuantityAvailable))) {
            throw new \InvalidArgumentException($locationBinQuantityAvailableArrayErrorMessage, __LINE__);
        }
        $this->locationBinQuantityAvailable = $locationBinQuantityAvailable;
        return $this;
    }
    /**
     * Add item to locationBinQuantityAvailable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationBinQuantityAvailable(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The locationBinQuantityAvailable 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->locationBinQuantityAvailable[] = $item;
        return $this;
    }
    /**
     * Get locationBuildTime value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationBuildTime()
    {
        return $this->locationBuildTime;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationBuildTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationBuildTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationBuildTimeForArrayConstraintsFromSetLocationBuildTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationBuildTimeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationBuildTimeItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationBuildTimeItem) ? get_class($itemSearchRowBasicLocationBuildTimeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationBuildTimeItem), var_export($itemSearchRowBasicLocationBuildTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationBuildTime 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 locationBuildTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationBuildTime
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationBuildTime(array $locationBuildTime = array())
    {
        // validation for constraint: array
        if ('' !== ($locationBuildTimeArrayErrorMessage = self::validateLocationBuildTimeForArrayConstraintsFromSetLocationBuildTime($locationBuildTime))) {
            throw new \InvalidArgumentException($locationBuildTimeArrayErrorMessage, __LINE__);
        }
        $this->locationBuildTime = $locationBuildTime;
        return $this;
    }
    /**
     * Add item to locationBuildTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationBuildTime(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationBuildTime 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->locationBuildTime[] = $item;
        return $this;
    }
    /**
     * Get locationCost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationCost()
    {
        return $this->locationCost;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationCostForArrayConstraintsFromSetLocationCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationCostItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationCostItem) ? get_class($itemSearchRowBasicLocationCostItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationCostItem), var_export($itemSearchRowBasicLocationCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationCost 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 locationCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationCost
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationCost(array $locationCost = array())
    {
        // validation for constraint: array
        if ('' !== ($locationCostArrayErrorMessage = self::validateLocationCostForArrayConstraintsFromSetLocationCost($locationCost))) {
            throw new \InvalidArgumentException($locationCostArrayErrorMessage, __LINE__);
        }
        $this->locationCost = $locationCost;
        return $this;
    }
    /**
     * Add item to locationCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationCost 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->locationCost[] = $item;
        return $this;
    }
    /**
     * Get locationCostAccountingStatus value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getLocationCostAccountingStatus()
    {
        return $this->locationCostAccountingStatus;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationCostAccountingStatus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationCostAccountingStatus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationCostAccountingStatusForArrayConstraintsFromSetLocationCostAccountingStatus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationCostAccountingStatusItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationCostAccountingStatusItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationCostAccountingStatusItem) ? get_class($itemSearchRowBasicLocationCostAccountingStatusItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationCostAccountingStatusItem), var_export($itemSearchRowBasicLocationCostAccountingStatusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationCostAccountingStatus 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 locationCostAccountingStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $locationCostAccountingStatus
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationCostAccountingStatus(array $locationCostAccountingStatus = array())
    {
        // validation for constraint: array
        if ('' !== ($locationCostAccountingStatusArrayErrorMessage = self::validateLocationCostAccountingStatusForArrayConstraintsFromSetLocationCostAccountingStatus($locationCostAccountingStatus))) {
            throw new \InvalidArgumentException($locationCostAccountingStatusArrayErrorMessage, __LINE__);
        }
        $this->locationCostAccountingStatus = $locationCostAccountingStatus;
        return $this;
    }
    /**
     * Add item to locationCostAccountingStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationCostAccountingStatus(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The locationCostAccountingStatus 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->locationCostAccountingStatus[] = $item;
        return $this;
    }
    /**
     * Get locationDefaultReturnCost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationDefaultReturnCost()
    {
        return $this->locationDefaultReturnCost;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationDefaultReturnCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationDefaultReturnCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationDefaultReturnCostForArrayConstraintsFromSetLocationDefaultReturnCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationDefaultReturnCostItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationDefaultReturnCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationDefaultReturnCostItem) ? get_class($itemSearchRowBasicLocationDefaultReturnCostItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationDefaultReturnCostItem), var_export($itemSearchRowBasicLocationDefaultReturnCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationDefaultReturnCost 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 locationDefaultReturnCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationDefaultReturnCost
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationDefaultReturnCost(array $locationDefaultReturnCost = array())
    {
        // validation for constraint: array
        if ('' !== ($locationDefaultReturnCostArrayErrorMessage = self::validateLocationDefaultReturnCostForArrayConstraintsFromSetLocationDefaultReturnCost($locationDefaultReturnCost))) {
            throw new \InvalidArgumentException($locationDefaultReturnCostArrayErrorMessage, __LINE__);
        }
        $this->locationDefaultReturnCost = $locationDefaultReturnCost;
        return $this;
    }
    /**
     * Add item to locationDefaultReturnCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationDefaultReturnCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationDefaultReturnCost 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->locationDefaultReturnCost[] = $item;
        return $this;
    }
    /**
     * Get locationDemandSource value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getLocationDemandSource()
    {
        return $this->locationDemandSource;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationDemandSource method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationDemandSource method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationDemandSourceForArrayConstraintsFromSetLocationDemandSource(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationDemandSourceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationDemandSourceItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationDemandSourceItem) ? get_class($itemSearchRowBasicLocationDemandSourceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationDemandSourceItem), var_export($itemSearchRowBasicLocationDemandSourceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationDemandSource 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 locationDemandSource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $locationDemandSource
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationDemandSource(array $locationDemandSource = array())
    {
        // validation for constraint: array
        if ('' !== ($locationDemandSourceArrayErrorMessage = self::validateLocationDemandSourceForArrayConstraintsFromSetLocationDemandSource($locationDemandSource))) {
            throw new \InvalidArgumentException($locationDemandSourceArrayErrorMessage, __LINE__);
        }
        $this->locationDemandSource = $locationDemandSource;
        return $this;
    }
    /**
     * Add item to locationDemandSource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationDemandSource(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The locationDemandSource 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->locationDemandSource[] = $item;
        return $this;
    }
    /**
     * Get locationDemandTimeFence value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getLocationDemandTimeFence()
    {
        return $this->locationDemandTimeFence;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationDemandTimeFence method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationDemandTimeFence method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationDemandTimeFenceForArrayConstraintsFromSetLocationDemandTimeFence(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationDemandTimeFenceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationDemandTimeFenceItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationDemandTimeFenceItem) ? get_class($itemSearchRowBasicLocationDemandTimeFenceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationDemandTimeFenceItem), var_export($itemSearchRowBasicLocationDemandTimeFenceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationDemandTimeFence 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 locationDemandTimeFence value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $locationDemandTimeFence
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationDemandTimeFence(array $locationDemandTimeFence = array())
    {
        // validation for constraint: array
        if ('' !== ($locationDemandTimeFenceArrayErrorMessage = self::validateLocationDemandTimeFenceForArrayConstraintsFromSetLocationDemandTimeFence($locationDemandTimeFence))) {
            throw new \InvalidArgumentException($locationDemandTimeFenceArrayErrorMessage, __LINE__);
        }
        $this->locationDemandTimeFence = $locationDemandTimeFence;
        return $this;
    }
    /**
     * Add item to locationDemandTimeFence value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationDemandTimeFence(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The locationDemandTimeFence 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->locationDemandTimeFence[] = $item;
        return $this;
    }
    /**
     * Get locationFixedLotSize value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationFixedLotSize()
    {
        return $this->locationFixedLotSize;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationFixedLotSize method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationFixedLotSize method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationFixedLotSizeForArrayConstraintsFromSetLocationFixedLotSize(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationFixedLotSizeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationFixedLotSizeItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationFixedLotSizeItem) ? get_class($itemSearchRowBasicLocationFixedLotSizeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationFixedLotSizeItem), var_export($itemSearchRowBasicLocationFixedLotSizeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationFixedLotSize 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 locationFixedLotSize value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationFixedLotSize
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationFixedLotSize(array $locationFixedLotSize = array())
    {
        // validation for constraint: array
        if ('' !== ($locationFixedLotSizeArrayErrorMessage = self::validateLocationFixedLotSizeForArrayConstraintsFromSetLocationFixedLotSize($locationFixedLotSize))) {
            throw new \InvalidArgumentException($locationFixedLotSizeArrayErrorMessage, __LINE__);
        }
        $this->locationFixedLotSize = $locationFixedLotSize;
        return $this;
    }
    /**
     * Add item to locationFixedLotSize value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationFixedLotSize(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationFixedLotSize 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->locationFixedLotSize[] = $item;
        return $this;
    }
    /**
     * Get locationInventoryCostTemplate value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getLocationInventoryCostTemplate()
    {
        return $this->locationInventoryCostTemplate;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationInventoryCostTemplate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationInventoryCostTemplate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationInventoryCostTemplateForArrayConstraintsFromSetLocationInventoryCostTemplate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationInventoryCostTemplateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationInventoryCostTemplateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationInventoryCostTemplateItem) ? get_class($itemSearchRowBasicLocationInventoryCostTemplateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationInventoryCostTemplateItem), var_export($itemSearchRowBasicLocationInventoryCostTemplateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationInventoryCostTemplate 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 locationInventoryCostTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $locationInventoryCostTemplate
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationInventoryCostTemplate(array $locationInventoryCostTemplate = array())
    {
        // validation for constraint: array
        if ('' !== ($locationInventoryCostTemplateArrayErrorMessage = self::validateLocationInventoryCostTemplateForArrayConstraintsFromSetLocationInventoryCostTemplate($locationInventoryCostTemplate))) {
            throw new \InvalidArgumentException($locationInventoryCostTemplateArrayErrorMessage, __LINE__);
        }
        $this->locationInventoryCostTemplate = $locationInventoryCostTemplate;
        return $this;
    }
    /**
     * Add item to locationInventoryCostTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationInventoryCostTemplate(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The locationInventoryCostTemplate 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->locationInventoryCostTemplate[] = $item;
        return $this;
    }
    /**
     * Get locationInvtClassification value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getLocationInvtClassification()
    {
        return $this->locationInvtClassification;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationInvtClassification method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationInvtClassification method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationInvtClassificationForArrayConstraintsFromSetLocationInvtClassification(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationInvtClassificationItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationInvtClassificationItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationInvtClassificationItem) ? get_class($itemSearchRowBasicLocationInvtClassificationItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationInvtClassificationItem), var_export($itemSearchRowBasicLocationInvtClassificationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationInvtClassification 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 locationInvtClassification value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $locationInvtClassification
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationInvtClassification(array $locationInvtClassification = array())
    {
        // validation for constraint: array
        if ('' !== ($locationInvtClassificationArrayErrorMessage = self::validateLocationInvtClassificationForArrayConstraintsFromSetLocationInvtClassification($locationInvtClassification))) {
            throw new \InvalidArgumentException($locationInvtClassificationArrayErrorMessage, __LINE__);
        }
        $this->locationInvtClassification = $locationInvtClassification;
        return $this;
    }
    /**
     * Add item to locationInvtClassification value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationInvtClassification(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The locationInvtClassification 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->locationInvtClassification[] = $item;
        return $this;
    }
    /**
     * Get locationInvtCountInterval value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getLocationInvtCountInterval()
    {
        return $this->locationInvtCountInterval;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationInvtCountInterval method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationInvtCountInterval method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationInvtCountIntervalForArrayConstraintsFromSetLocationInvtCountInterval(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationInvtCountIntervalItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationInvtCountIntervalItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationInvtCountIntervalItem) ? get_class($itemSearchRowBasicLocationInvtCountIntervalItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationInvtCountIntervalItem), var_export($itemSearchRowBasicLocationInvtCountIntervalItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationInvtCountInterval 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 locationInvtCountInterval value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $locationInvtCountInterval
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationInvtCountInterval(array $locationInvtCountInterval = array())
    {
        // validation for constraint: array
        if ('' !== ($locationInvtCountIntervalArrayErrorMessage = self::validateLocationInvtCountIntervalForArrayConstraintsFromSetLocationInvtCountInterval($locationInvtCountInterval))) {
            throw new \InvalidArgumentException($locationInvtCountIntervalArrayErrorMessage, __LINE__);
        }
        $this->locationInvtCountInterval = $locationInvtCountInterval;
        return $this;
    }
    /**
     * Add item to locationInvtCountInterval value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationInvtCountInterval(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The locationInvtCountInterval 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->locationInvtCountInterval[] = $item;
        return $this;
    }
    /**
     * Get locationLastInvtCountDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLocationLastInvtCountDate()
    {
        return $this->locationLastInvtCountDate;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationLastInvtCountDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationLastInvtCountDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationLastInvtCountDateForArrayConstraintsFromSetLocationLastInvtCountDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationLastInvtCountDateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationLastInvtCountDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationLastInvtCountDateItem) ? get_class($itemSearchRowBasicLocationLastInvtCountDateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationLastInvtCountDateItem), var_export($itemSearchRowBasicLocationLastInvtCountDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationLastInvtCountDate 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 locationLastInvtCountDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $locationLastInvtCountDate
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationLastInvtCountDate(array $locationLastInvtCountDate = array())
    {
        // validation for constraint: array
        if ('' !== ($locationLastInvtCountDateArrayErrorMessage = self::validateLocationLastInvtCountDateForArrayConstraintsFromSetLocationLastInvtCountDate($locationLastInvtCountDate))) {
            throw new \InvalidArgumentException($locationLastInvtCountDateArrayErrorMessage, __LINE__);
        }
        $this->locationLastInvtCountDate = $locationLastInvtCountDate;
        return $this;
    }
    /**
     * Add item to locationLastInvtCountDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationLastInvtCountDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The locationLastInvtCountDate 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->locationLastInvtCountDate[] = $item;
        return $this;
    }
    /**
     * Get locationLeadTime value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getLocationLeadTime()
    {
        return $this->locationLeadTime;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationLeadTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationLeadTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationLeadTimeForArrayConstraintsFromSetLocationLeadTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationLeadTimeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationLeadTimeItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationLeadTimeItem) ? get_class($itemSearchRowBasicLocationLeadTimeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationLeadTimeItem), var_export($itemSearchRowBasicLocationLeadTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationLeadTime 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 locationLeadTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $locationLeadTime
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationLeadTime(array $locationLeadTime = array())
    {
        // validation for constraint: array
        if ('' !== ($locationLeadTimeArrayErrorMessage = self::validateLocationLeadTimeForArrayConstraintsFromSetLocationLeadTime($locationLeadTime))) {
            throw new \InvalidArgumentException($locationLeadTimeArrayErrorMessage, __LINE__);
        }
        $this->locationLeadTime = $locationLeadTime;
        return $this;
    }
    /**
     * Add item to locationLeadTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationLeadTime(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The locationLeadTime 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->locationLeadTime[] = $item;
        return $this;
    }
    /**
     * Get locationNextInvtCountDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLocationNextInvtCountDate()
    {
        return $this->locationNextInvtCountDate;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationNextInvtCountDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationNextInvtCountDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationNextInvtCountDateForArrayConstraintsFromSetLocationNextInvtCountDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationNextInvtCountDateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationNextInvtCountDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationNextInvtCountDateItem) ? get_class($itemSearchRowBasicLocationNextInvtCountDateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationNextInvtCountDateItem), var_export($itemSearchRowBasicLocationNextInvtCountDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationNextInvtCountDate 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 locationNextInvtCountDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $locationNextInvtCountDate
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationNextInvtCountDate(array $locationNextInvtCountDate = array())
    {
        // validation for constraint: array
        if ('' !== ($locationNextInvtCountDateArrayErrorMessage = self::validateLocationNextInvtCountDateForArrayConstraintsFromSetLocationNextInvtCountDate($locationNextInvtCountDate))) {
            throw new \InvalidArgumentException($locationNextInvtCountDateArrayErrorMessage, __LINE__);
        }
        $this->locationNextInvtCountDate = $locationNextInvtCountDate;
        return $this;
    }
    /**
     * Add item to locationNextInvtCountDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationNextInvtCountDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The locationNextInvtCountDate 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->locationNextInvtCountDate[] = $item;
        return $this;
    }
    /**
     * Get locationPeriodicLotSizeDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getLocationPeriodicLotSizeDays()
    {
        return $this->locationPeriodicLotSizeDays;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationPeriodicLotSizeDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationPeriodicLotSizeDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationPeriodicLotSizeDaysForArrayConstraintsFromSetLocationPeriodicLotSizeDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationPeriodicLotSizeDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationPeriodicLotSizeDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationPeriodicLotSizeDaysItem) ? get_class($itemSearchRowBasicLocationPeriodicLotSizeDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationPeriodicLotSizeDaysItem), var_export($itemSearchRowBasicLocationPeriodicLotSizeDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationPeriodicLotSizeDays 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 locationPeriodicLotSizeDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $locationPeriodicLotSizeDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationPeriodicLotSizeDays(array $locationPeriodicLotSizeDays = array())
    {
        // validation for constraint: array
        if ('' !== ($locationPeriodicLotSizeDaysArrayErrorMessage = self::validateLocationPeriodicLotSizeDaysForArrayConstraintsFromSetLocationPeriodicLotSizeDays($locationPeriodicLotSizeDays))) {
            throw new \InvalidArgumentException($locationPeriodicLotSizeDaysArrayErrorMessage, __LINE__);
        }
        $this->locationPeriodicLotSizeDays = $locationPeriodicLotSizeDays;
        return $this;
    }
    /**
     * Add item to locationPeriodicLotSizeDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationPeriodicLotSizeDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The locationPeriodicLotSizeDays 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->locationPeriodicLotSizeDays[] = $item;
        return $this;
    }
    /**
     * Get locationPeriodicLotSizeType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getLocationPeriodicLotSizeType()
    {
        return $this->locationPeriodicLotSizeType;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationPeriodicLotSizeType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationPeriodicLotSizeType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationPeriodicLotSizeTypeForArrayConstraintsFromSetLocationPeriodicLotSizeType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationPeriodicLotSizeTypeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationPeriodicLotSizeTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationPeriodicLotSizeTypeItem) ? get_class($itemSearchRowBasicLocationPeriodicLotSizeTypeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationPeriodicLotSizeTypeItem), var_export($itemSearchRowBasicLocationPeriodicLotSizeTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationPeriodicLotSizeType 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 locationPeriodicLotSizeType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $locationPeriodicLotSizeType
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationPeriodicLotSizeType(array $locationPeriodicLotSizeType = array())
    {
        // validation for constraint: array
        if ('' !== ($locationPeriodicLotSizeTypeArrayErrorMessage = self::validateLocationPeriodicLotSizeTypeForArrayConstraintsFromSetLocationPeriodicLotSizeType($locationPeriodicLotSizeType))) {
            throw new \InvalidArgumentException($locationPeriodicLotSizeTypeArrayErrorMessage, __LINE__);
        }
        $this->locationPeriodicLotSizeType = $locationPeriodicLotSizeType;
        return $this;
    }
    /**
     * Add item to locationPeriodicLotSizeType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationPeriodicLotSizeType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The locationPeriodicLotSizeType 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->locationPeriodicLotSizeType[] = $item;
        return $this;
    }
    /**
     * Get locationPreferredStockLevel value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationPreferredStockLevel()
    {
        return $this->locationPreferredStockLevel;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationPreferredStockLevel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationPreferredStockLevel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationPreferredStockLevelForArrayConstraintsFromSetLocationPreferredStockLevel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationPreferredStockLevelItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationPreferredStockLevelItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationPreferredStockLevelItem) ? get_class($itemSearchRowBasicLocationPreferredStockLevelItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationPreferredStockLevelItem), var_export($itemSearchRowBasicLocationPreferredStockLevelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationPreferredStockLevel 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 locationPreferredStockLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationPreferredStockLevel
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationPreferredStockLevel(array $locationPreferredStockLevel = array())
    {
        // validation for constraint: array
        if ('' !== ($locationPreferredStockLevelArrayErrorMessage = self::validateLocationPreferredStockLevelForArrayConstraintsFromSetLocationPreferredStockLevel($locationPreferredStockLevel))) {
            throw new \InvalidArgumentException($locationPreferredStockLevelArrayErrorMessage, __LINE__);
        }
        $this->locationPreferredStockLevel = $locationPreferredStockLevel;
        return $this;
    }
    /**
     * Add item to locationPreferredStockLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationPreferredStockLevel(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationPreferredStockLevel 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->locationPreferredStockLevel[] = $item;
        return $this;
    }
    /**
     * Get locationQtyAvailForStorePickup value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationQtyAvailForStorePickup()
    {
        return $this->locationQtyAvailForStorePickup;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationQtyAvailForStorePickup method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationQtyAvailForStorePickup method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationQtyAvailForStorePickupForArrayConstraintsFromSetLocationQtyAvailForStorePickup(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationQtyAvailForStorePickupItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationQtyAvailForStorePickupItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationQtyAvailForStorePickupItem) ? get_class($itemSearchRowBasicLocationQtyAvailForStorePickupItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationQtyAvailForStorePickupItem), var_export($itemSearchRowBasicLocationQtyAvailForStorePickupItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationQtyAvailForStorePickup 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 locationQtyAvailForStorePickup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationQtyAvailForStorePickup
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationQtyAvailForStorePickup(array $locationQtyAvailForStorePickup = array())
    {
        // validation for constraint: array
        if ('' !== ($locationQtyAvailForStorePickupArrayErrorMessage = self::validateLocationQtyAvailForStorePickupForArrayConstraintsFromSetLocationQtyAvailForStorePickup($locationQtyAvailForStorePickup))) {
            throw new \InvalidArgumentException($locationQtyAvailForStorePickupArrayErrorMessage, __LINE__);
        }
        $this->locationQtyAvailForStorePickup = $locationQtyAvailForStorePickup;
        return $this;
    }
    /**
     * Add item to locationQtyAvailForStorePickup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationQtyAvailForStorePickup(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationQtyAvailForStorePickup 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->locationQtyAvailForStorePickup[] = $item;
        return $this;
    }
    /**
     * Get locationQuantityAvailable value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationQuantityAvailable()
    {
        return $this->locationQuantityAvailable;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationQuantityAvailable method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationQuantityAvailable method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationQuantityAvailableForArrayConstraintsFromSetLocationQuantityAvailable(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationQuantityAvailableItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationQuantityAvailableItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationQuantityAvailableItem) ? get_class($itemSearchRowBasicLocationQuantityAvailableItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationQuantityAvailableItem), var_export($itemSearchRowBasicLocationQuantityAvailableItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationQuantityAvailable 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 locationQuantityAvailable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityAvailable
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationQuantityAvailable(array $locationQuantityAvailable = array())
    {
        // validation for constraint: array
        if ('' !== ($locationQuantityAvailableArrayErrorMessage = self::validateLocationQuantityAvailableForArrayConstraintsFromSetLocationQuantityAvailable($locationQuantityAvailable))) {
            throw new \InvalidArgumentException($locationQuantityAvailableArrayErrorMessage, __LINE__);
        }
        $this->locationQuantityAvailable = $locationQuantityAvailable;
        return $this;
    }
    /**
     * Add item to locationQuantityAvailable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationQuantityAvailable(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationQuantityAvailable 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->locationQuantityAvailable[] = $item;
        return $this;
    }
    /**
     * Get locationQuantityBackOrdered value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationQuantityBackOrdered()
    {
        return $this->locationQuantityBackOrdered;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationQuantityBackOrdered method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationQuantityBackOrdered method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationQuantityBackOrderedForArrayConstraintsFromSetLocationQuantityBackOrdered(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationQuantityBackOrderedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationQuantityBackOrderedItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationQuantityBackOrderedItem) ? get_class($itemSearchRowBasicLocationQuantityBackOrderedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationQuantityBackOrderedItem), var_export($itemSearchRowBasicLocationQuantityBackOrderedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationQuantityBackOrdered 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 locationQuantityBackOrdered value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityBackOrdered
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationQuantityBackOrdered(array $locationQuantityBackOrdered = array())
    {
        // validation for constraint: array
        if ('' !== ($locationQuantityBackOrderedArrayErrorMessage = self::validateLocationQuantityBackOrderedForArrayConstraintsFromSetLocationQuantityBackOrdered($locationQuantityBackOrdered))) {
            throw new \InvalidArgumentException($locationQuantityBackOrderedArrayErrorMessage, __LINE__);
        }
        $this->locationQuantityBackOrdered = $locationQuantityBackOrdered;
        return $this;
    }
    /**
     * Add item to locationQuantityBackOrdered value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationQuantityBackOrdered(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationQuantityBackOrdered 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->locationQuantityBackOrdered[] = $item;
        return $this;
    }
    /**
     * Get locationQuantityCommitted value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationQuantityCommitted()
    {
        return $this->locationQuantityCommitted;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationQuantityCommitted method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationQuantityCommitted method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationQuantityCommittedForArrayConstraintsFromSetLocationQuantityCommitted(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationQuantityCommittedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationQuantityCommittedItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationQuantityCommittedItem) ? get_class($itemSearchRowBasicLocationQuantityCommittedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationQuantityCommittedItem), var_export($itemSearchRowBasicLocationQuantityCommittedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationQuantityCommitted 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 locationQuantityCommitted value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityCommitted
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationQuantityCommitted(array $locationQuantityCommitted = array())
    {
        // validation for constraint: array
        if ('' !== ($locationQuantityCommittedArrayErrorMessage = self::validateLocationQuantityCommittedForArrayConstraintsFromSetLocationQuantityCommitted($locationQuantityCommitted))) {
            throw new \InvalidArgumentException($locationQuantityCommittedArrayErrorMessage, __LINE__);
        }
        $this->locationQuantityCommitted = $locationQuantityCommitted;
        return $this;
    }
    /**
     * Add item to locationQuantityCommitted value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationQuantityCommitted(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationQuantityCommitted 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->locationQuantityCommitted[] = $item;
        return $this;
    }
    /**
     * Get locationQuantityInTransit value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationQuantityInTransit()
    {
        return $this->locationQuantityInTransit;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationQuantityInTransit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationQuantityInTransit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationQuantityInTransitForArrayConstraintsFromSetLocationQuantityInTransit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationQuantityInTransitItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationQuantityInTransitItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationQuantityInTransitItem) ? get_class($itemSearchRowBasicLocationQuantityInTransitItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationQuantityInTransitItem), var_export($itemSearchRowBasicLocationQuantityInTransitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationQuantityInTransit 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 locationQuantityInTransit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityInTransit
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationQuantityInTransit(array $locationQuantityInTransit = array())
    {
        // validation for constraint: array
        if ('' !== ($locationQuantityInTransitArrayErrorMessage = self::validateLocationQuantityInTransitForArrayConstraintsFromSetLocationQuantityInTransit($locationQuantityInTransit))) {
            throw new \InvalidArgumentException($locationQuantityInTransitArrayErrorMessage, __LINE__);
        }
        $this->locationQuantityInTransit = $locationQuantityInTransit;
        return $this;
    }
    /**
     * Add item to locationQuantityInTransit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationQuantityInTransit(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationQuantityInTransit 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->locationQuantityInTransit[] = $item;
        return $this;
    }
    /**
     * Get locationQuantityOnHand value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationQuantityOnHand()
    {
        return $this->locationQuantityOnHand;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationQuantityOnHand method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationQuantityOnHand method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationQuantityOnHandForArrayConstraintsFromSetLocationQuantityOnHand(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationQuantityOnHandItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationQuantityOnHandItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationQuantityOnHandItem) ? get_class($itemSearchRowBasicLocationQuantityOnHandItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationQuantityOnHandItem), var_export($itemSearchRowBasicLocationQuantityOnHandItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationQuantityOnHand 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 locationQuantityOnHand value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityOnHand
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationQuantityOnHand(array $locationQuantityOnHand = array())
    {
        // validation for constraint: array
        if ('' !== ($locationQuantityOnHandArrayErrorMessage = self::validateLocationQuantityOnHandForArrayConstraintsFromSetLocationQuantityOnHand($locationQuantityOnHand))) {
            throw new \InvalidArgumentException($locationQuantityOnHandArrayErrorMessage, __LINE__);
        }
        $this->locationQuantityOnHand = $locationQuantityOnHand;
        return $this;
    }
    /**
     * Add item to locationQuantityOnHand value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationQuantityOnHand(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationQuantityOnHand 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->locationQuantityOnHand[] = $item;
        return $this;
    }
    /**
     * Get locationQuantityOnOrder value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationQuantityOnOrder()
    {
        return $this->locationQuantityOnOrder;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationQuantityOnOrder method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationQuantityOnOrder method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationQuantityOnOrderForArrayConstraintsFromSetLocationQuantityOnOrder(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationQuantityOnOrderItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationQuantityOnOrderItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationQuantityOnOrderItem) ? get_class($itemSearchRowBasicLocationQuantityOnOrderItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationQuantityOnOrderItem), var_export($itemSearchRowBasicLocationQuantityOnOrderItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationQuantityOnOrder 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 locationQuantityOnOrder value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationQuantityOnOrder
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationQuantityOnOrder(array $locationQuantityOnOrder = array())
    {
        // validation for constraint: array
        if ('' !== ($locationQuantityOnOrderArrayErrorMessage = self::validateLocationQuantityOnOrderForArrayConstraintsFromSetLocationQuantityOnOrder($locationQuantityOnOrder))) {
            throw new \InvalidArgumentException($locationQuantityOnOrderArrayErrorMessage, __LINE__);
        }
        $this->locationQuantityOnOrder = $locationQuantityOnOrder;
        return $this;
    }
    /**
     * Add item to locationQuantityOnOrder value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationQuantityOnOrder(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationQuantityOnOrder 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->locationQuantityOnOrder[] = $item;
        return $this;
    }
    /**
     * Get locationReOrderPoint value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationReOrderPoint()
    {
        return $this->locationReOrderPoint;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationReOrderPoint method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationReOrderPoint method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationReOrderPointForArrayConstraintsFromSetLocationReOrderPoint(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationReOrderPointItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationReOrderPointItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationReOrderPointItem) ? get_class($itemSearchRowBasicLocationReOrderPointItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationReOrderPointItem), var_export($itemSearchRowBasicLocationReOrderPointItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationReOrderPoint 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 locationReOrderPoint value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationReOrderPoint
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationReOrderPoint(array $locationReOrderPoint = array())
    {
        // validation for constraint: array
        if ('' !== ($locationReOrderPointArrayErrorMessage = self::validateLocationReOrderPointForArrayConstraintsFromSetLocationReOrderPoint($locationReOrderPoint))) {
            throw new \InvalidArgumentException($locationReOrderPointArrayErrorMessage, __LINE__);
        }
        $this->locationReOrderPoint = $locationReOrderPoint;
        return $this;
    }
    /**
     * Add item to locationReOrderPoint value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationReOrderPoint(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationReOrderPoint 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->locationReOrderPoint[] = $item;
        return $this;
    }
    /**
     * Get locationRescheduleInDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getLocationRescheduleInDays()
    {
        return $this->locationRescheduleInDays;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationRescheduleInDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationRescheduleInDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationRescheduleInDaysForArrayConstraintsFromSetLocationRescheduleInDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationRescheduleInDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationRescheduleInDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationRescheduleInDaysItem) ? get_class($itemSearchRowBasicLocationRescheduleInDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationRescheduleInDaysItem), var_export($itemSearchRowBasicLocationRescheduleInDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationRescheduleInDays 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 locationRescheduleInDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $locationRescheduleInDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationRescheduleInDays(array $locationRescheduleInDays = array())
    {
        // validation for constraint: array
        if ('' !== ($locationRescheduleInDaysArrayErrorMessage = self::validateLocationRescheduleInDaysForArrayConstraintsFromSetLocationRescheduleInDays($locationRescheduleInDays))) {
            throw new \InvalidArgumentException($locationRescheduleInDaysArrayErrorMessage, __LINE__);
        }
        $this->locationRescheduleInDays = $locationRescheduleInDays;
        return $this;
    }
    /**
     * Add item to locationRescheduleInDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationRescheduleInDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The locationRescheduleInDays 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->locationRescheduleInDays[] = $item;
        return $this;
    }
    /**
     * Get locationRescheduleOutDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getLocationRescheduleOutDays()
    {
        return $this->locationRescheduleOutDays;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationRescheduleOutDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationRescheduleOutDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationRescheduleOutDaysForArrayConstraintsFromSetLocationRescheduleOutDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationRescheduleOutDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationRescheduleOutDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationRescheduleOutDaysItem) ? get_class($itemSearchRowBasicLocationRescheduleOutDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationRescheduleOutDaysItem), var_export($itemSearchRowBasicLocationRescheduleOutDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationRescheduleOutDays 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 locationRescheduleOutDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $locationRescheduleOutDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationRescheduleOutDays(array $locationRescheduleOutDays = array())
    {
        // validation for constraint: array
        if ('' !== ($locationRescheduleOutDaysArrayErrorMessage = self::validateLocationRescheduleOutDaysForArrayConstraintsFromSetLocationRescheduleOutDays($locationRescheduleOutDays))) {
            throw new \InvalidArgumentException($locationRescheduleOutDaysArrayErrorMessage, __LINE__);
        }
        $this->locationRescheduleOutDays = $locationRescheduleOutDays;
        return $this;
    }
    /**
     * Add item to locationRescheduleOutDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationRescheduleOutDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The locationRescheduleOutDays 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->locationRescheduleOutDays[] = $item;
        return $this;
    }
    /**
     * Get locationSafetyStockLevel value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationSafetyStockLevel()
    {
        return $this->locationSafetyStockLevel;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationSafetyStockLevel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationSafetyStockLevel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationSafetyStockLevelForArrayConstraintsFromSetLocationSafetyStockLevel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationSafetyStockLevelItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationSafetyStockLevelItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationSafetyStockLevelItem) ? get_class($itemSearchRowBasicLocationSafetyStockLevelItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationSafetyStockLevelItem), var_export($itemSearchRowBasicLocationSafetyStockLevelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationSafetyStockLevel 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 locationSafetyStockLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationSafetyStockLevel
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationSafetyStockLevel(array $locationSafetyStockLevel = array())
    {
        // validation for constraint: array
        if ('' !== ($locationSafetyStockLevelArrayErrorMessage = self::validateLocationSafetyStockLevelForArrayConstraintsFromSetLocationSafetyStockLevel($locationSafetyStockLevel))) {
            throw new \InvalidArgumentException($locationSafetyStockLevelArrayErrorMessage, __LINE__);
        }
        $this->locationSafetyStockLevel = $locationSafetyStockLevel;
        return $this;
    }
    /**
     * Add item to locationSafetyStockLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationSafetyStockLevel(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationSafetyStockLevel 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->locationSafetyStockLevel[] = $item;
        return $this;
    }
    /**
     * Get locationStorePickupBufferStock value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationStorePickupBufferStock()
    {
        return $this->locationStorePickupBufferStock;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationStorePickupBufferStock method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationStorePickupBufferStock method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationStorePickupBufferStockForArrayConstraintsFromSetLocationStorePickupBufferStock(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationStorePickupBufferStockItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationStorePickupBufferStockItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationStorePickupBufferStockItem) ? get_class($itemSearchRowBasicLocationStorePickupBufferStockItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationStorePickupBufferStockItem), var_export($itemSearchRowBasicLocationStorePickupBufferStockItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationStorePickupBufferStock 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 locationStorePickupBufferStock value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationStorePickupBufferStock
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationStorePickupBufferStock(array $locationStorePickupBufferStock = array())
    {
        // validation for constraint: array
        if ('' !== ($locationStorePickupBufferStockArrayErrorMessage = self::validateLocationStorePickupBufferStockForArrayConstraintsFromSetLocationStorePickupBufferStock($locationStorePickupBufferStock))) {
            throw new \InvalidArgumentException($locationStorePickupBufferStockArrayErrorMessage, __LINE__);
        }
        $this->locationStorePickupBufferStock = $locationStorePickupBufferStock;
        return $this;
    }
    /**
     * Add item to locationStorePickupBufferStock value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationStorePickupBufferStock(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationStorePickupBufferStock 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->locationStorePickupBufferStock[] = $item;
        return $this;
    }
    /**
     * Get locationSupplyLotSizingMethod value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getLocationSupplyLotSizingMethod()
    {
        return $this->locationSupplyLotSizingMethod;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationSupplyLotSizingMethod method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationSupplyLotSizingMethod method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationSupplyLotSizingMethodForArrayConstraintsFromSetLocationSupplyLotSizingMethod(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationSupplyLotSizingMethodItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationSupplyLotSizingMethodItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationSupplyLotSizingMethodItem) ? get_class($itemSearchRowBasicLocationSupplyLotSizingMethodItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationSupplyLotSizingMethodItem), var_export($itemSearchRowBasicLocationSupplyLotSizingMethodItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationSupplyLotSizingMethod 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 locationSupplyLotSizingMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $locationSupplyLotSizingMethod
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationSupplyLotSizingMethod(array $locationSupplyLotSizingMethod = array())
    {
        // validation for constraint: array
        if ('' !== ($locationSupplyLotSizingMethodArrayErrorMessage = self::validateLocationSupplyLotSizingMethodForArrayConstraintsFromSetLocationSupplyLotSizingMethod($locationSupplyLotSizingMethod))) {
            throw new \InvalidArgumentException($locationSupplyLotSizingMethodArrayErrorMessage, __LINE__);
        }
        $this->locationSupplyLotSizingMethod = $locationSupplyLotSizingMethod;
        return $this;
    }
    /**
     * Add item to locationSupplyLotSizingMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationSupplyLotSizingMethod(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The locationSupplyLotSizingMethod 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->locationSupplyLotSizingMethod[] = $item;
        return $this;
    }
    /**
     * Get locationSupplyTimeFence value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getLocationSupplyTimeFence()
    {
        return $this->locationSupplyTimeFence;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationSupplyTimeFence method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationSupplyTimeFence method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationSupplyTimeFenceForArrayConstraintsFromSetLocationSupplyTimeFence(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationSupplyTimeFenceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationSupplyTimeFenceItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationSupplyTimeFenceItem) ? get_class($itemSearchRowBasicLocationSupplyTimeFenceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationSupplyTimeFenceItem), var_export($itemSearchRowBasicLocationSupplyTimeFenceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationSupplyTimeFence 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 locationSupplyTimeFence value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $locationSupplyTimeFence
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationSupplyTimeFence(array $locationSupplyTimeFence = array())
    {
        // validation for constraint: array
        if ('' !== ($locationSupplyTimeFenceArrayErrorMessage = self::validateLocationSupplyTimeFenceForArrayConstraintsFromSetLocationSupplyTimeFence($locationSupplyTimeFence))) {
            throw new \InvalidArgumentException($locationSupplyTimeFenceArrayErrorMessage, __LINE__);
        }
        $this->locationSupplyTimeFence = $locationSupplyTimeFence;
        return $this;
    }
    /**
     * Add item to locationSupplyTimeFence value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationSupplyTimeFence(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The locationSupplyTimeFence 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->locationSupplyTimeFence[] = $item;
        return $this;
    }
    /**
     * Get locationSupplyType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getLocationSupplyType()
    {
        return $this->locationSupplyType;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationSupplyType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationSupplyType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationSupplyTypeForArrayConstraintsFromSetLocationSupplyType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationSupplyTypeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationSupplyTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationSupplyTypeItem) ? get_class($itemSearchRowBasicLocationSupplyTypeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationSupplyTypeItem), var_export($itemSearchRowBasicLocationSupplyTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationSupplyType 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 locationSupplyType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $locationSupplyType
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationSupplyType(array $locationSupplyType = array())
    {
        // validation for constraint: array
        if ('' !== ($locationSupplyTypeArrayErrorMessage = self::validateLocationSupplyTypeForArrayConstraintsFromSetLocationSupplyType($locationSupplyType))) {
            throw new \InvalidArgumentException($locationSupplyTypeArrayErrorMessage, __LINE__);
        }
        $this->locationSupplyType = $locationSupplyType;
        return $this;
    }
    /**
     * Add item to locationSupplyType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationSupplyType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The locationSupplyType 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->locationSupplyType[] = $item;
        return $this;
    }
    /**
     * Get locationTotalValue value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getLocationTotalValue()
    {
        return $this->locationTotalValue;
    }
    /**
     * This method is responsible for validating the values passed to the setLocationTotalValue method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocationTotalValue method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationTotalValueForArrayConstraintsFromSetLocationTotalValue(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocationTotalValueItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocationTotalValueItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocationTotalValueItem) ? get_class($itemSearchRowBasicLocationTotalValueItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocationTotalValueItem), var_export($itemSearchRowBasicLocationTotalValueItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locationTotalValue 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 locationTotalValue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $locationTotalValue
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocationTotalValue(array $locationTotalValue = array())
    {
        // validation for constraint: array
        if ('' !== ($locationTotalValueArrayErrorMessage = self::validateLocationTotalValueForArrayConstraintsFromSetLocationTotalValue($locationTotalValue))) {
            throw new \InvalidArgumentException($locationTotalValueArrayErrorMessage, __LINE__);
        }
        $this->locationTotalValue = $locationTotalValue;
        return $this;
    }
    /**
     * Add item to locationTotalValue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocationTotalValue(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The locationTotalValue 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->locationTotalValue[] = $item;
        return $this;
    }
    /**
     * Get locBackwardConsumptionDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getLocBackwardConsumptionDays()
    {
        return $this->locBackwardConsumptionDays;
    }
    /**
     * This method is responsible for validating the values passed to the setLocBackwardConsumptionDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocBackwardConsumptionDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocBackwardConsumptionDaysForArrayConstraintsFromSetLocBackwardConsumptionDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocBackwardConsumptionDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocBackwardConsumptionDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocBackwardConsumptionDaysItem) ? get_class($itemSearchRowBasicLocBackwardConsumptionDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocBackwardConsumptionDaysItem), var_export($itemSearchRowBasicLocBackwardConsumptionDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locBackwardConsumptionDays 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 locBackwardConsumptionDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $locBackwardConsumptionDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocBackwardConsumptionDays(array $locBackwardConsumptionDays = array())
    {
        // validation for constraint: array
        if ('' !== ($locBackwardConsumptionDaysArrayErrorMessage = self::validateLocBackwardConsumptionDaysForArrayConstraintsFromSetLocBackwardConsumptionDays($locBackwardConsumptionDays))) {
            throw new \InvalidArgumentException($locBackwardConsumptionDaysArrayErrorMessage, __LINE__);
        }
        $this->locBackwardConsumptionDays = $locBackwardConsumptionDays;
        return $this;
    }
    /**
     * Add item to locBackwardConsumptionDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocBackwardConsumptionDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The locBackwardConsumptionDays 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->locBackwardConsumptionDays[] = $item;
        return $this;
    }
    /**
     * Get locForwardConsumptionDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getLocForwardConsumptionDays()
    {
        return $this->locForwardConsumptionDays;
    }
    /**
     * This method is responsible for validating the values passed to the setLocForwardConsumptionDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocForwardConsumptionDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocForwardConsumptionDaysForArrayConstraintsFromSetLocForwardConsumptionDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicLocForwardConsumptionDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicLocForwardConsumptionDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicLocForwardConsumptionDaysItem) ? get_class($itemSearchRowBasicLocForwardConsumptionDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicLocForwardConsumptionDaysItem), var_export($itemSearchRowBasicLocForwardConsumptionDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The locForwardConsumptionDays 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 locForwardConsumptionDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $locForwardConsumptionDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setLocForwardConsumptionDays(array $locForwardConsumptionDays = array())
    {
        // validation for constraint: array
        if ('' !== ($locForwardConsumptionDaysArrayErrorMessage = self::validateLocForwardConsumptionDaysForArrayConstraintsFromSetLocForwardConsumptionDays($locForwardConsumptionDays))) {
            throw new \InvalidArgumentException($locForwardConsumptionDaysArrayErrorMessage, __LINE__);
        }
        $this->locForwardConsumptionDays = $locForwardConsumptionDays;
        return $this;
    }
    /**
     * Add item to locForwardConsumptionDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToLocForwardConsumptionDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The locForwardConsumptionDays 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->locForwardConsumptionDays[] = $item;
        return $this;
    }
    /**
     * Get manufacturer value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getManufacturer()
    {
        return $this->manufacturer;
    }
    /**
     * This method is responsible for validating the values passed to the setManufacturer method
     * This method is willingly generated in order to preserve the one-line inline validation within the setManufacturer method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateManufacturerForArrayConstraintsFromSetManufacturer(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicManufacturerItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicManufacturerItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicManufacturerItem) ? get_class($itemSearchRowBasicManufacturerItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicManufacturerItem), var_export($itemSearchRowBasicManufacturerItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The manufacturer 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 manufacturer value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $manufacturer
     * @return \StructType\ItemSearchRowBasic
     */
    public function setManufacturer(array $manufacturer = array())
    {
        // validation for constraint: array
        if ('' !== ($manufacturerArrayErrorMessage = self::validateManufacturerForArrayConstraintsFromSetManufacturer($manufacturer))) {
            throw new \InvalidArgumentException($manufacturerArrayErrorMessage, __LINE__);
        }
        $this->manufacturer = $manufacturer;
        return $this;
    }
    /**
     * Add item to manufacturer value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToManufacturer(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The manufacturer 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->manufacturer[] = $item;
        return $this;
    }
    /**
     * Get manufacturerAddr1 value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getManufacturerAddr1()
    {
        return $this->manufacturerAddr1;
    }
    /**
     * This method is responsible for validating the values passed to the setManufacturerAddr1 method
     * This method is willingly generated in order to preserve the one-line inline validation within the setManufacturerAddr1 method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateManufacturerAddr1ForArrayConstraintsFromSetManufacturerAddr1(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicManufacturerAddr1Item) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicManufacturerAddr1Item instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicManufacturerAddr1Item) ? get_class($itemSearchRowBasicManufacturerAddr1Item) : sprintf('%s(%s)', gettype($itemSearchRowBasicManufacturerAddr1Item), var_export($itemSearchRowBasicManufacturerAddr1Item, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The manufacturerAddr1 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 manufacturerAddr1 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $manufacturerAddr1
     * @return \StructType\ItemSearchRowBasic
     */
    public function setManufacturerAddr1(array $manufacturerAddr1 = array())
    {
        // validation for constraint: array
        if ('' !== ($manufacturerAddr1ArrayErrorMessage = self::validateManufacturerAddr1ForArrayConstraintsFromSetManufacturerAddr1($manufacturerAddr1))) {
            throw new \InvalidArgumentException($manufacturerAddr1ArrayErrorMessage, __LINE__);
        }
        $this->manufacturerAddr1 = $manufacturerAddr1;
        return $this;
    }
    /**
     * Add item to manufacturerAddr1 value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToManufacturerAddr1(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The manufacturerAddr1 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->manufacturerAddr1[] = $item;
        return $this;
    }
    /**
     * Get manufacturerCity value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getManufacturerCity()
    {
        return $this->manufacturerCity;
    }
    /**
     * This method is responsible for validating the values passed to the setManufacturerCity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setManufacturerCity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateManufacturerCityForArrayConstraintsFromSetManufacturerCity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicManufacturerCityItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicManufacturerCityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicManufacturerCityItem) ? get_class($itemSearchRowBasicManufacturerCityItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicManufacturerCityItem), var_export($itemSearchRowBasicManufacturerCityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The manufacturerCity 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 manufacturerCity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $manufacturerCity
     * @return \StructType\ItemSearchRowBasic
     */
    public function setManufacturerCity(array $manufacturerCity = array())
    {
        // validation for constraint: array
        if ('' !== ($manufacturerCityArrayErrorMessage = self::validateManufacturerCityForArrayConstraintsFromSetManufacturerCity($manufacturerCity))) {
            throw new \InvalidArgumentException($manufacturerCityArrayErrorMessage, __LINE__);
        }
        $this->manufacturerCity = $manufacturerCity;
        return $this;
    }
    /**
     * Add item to manufacturerCity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToManufacturerCity(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The manufacturerCity 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->manufacturerCity[] = $item;
        return $this;
    }
    /**
     * Get manufacturerState value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getManufacturerState()
    {
        return $this->manufacturerState;
    }
    /**
     * This method is responsible for validating the values passed to the setManufacturerState method
     * This method is willingly generated in order to preserve the one-line inline validation within the setManufacturerState method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateManufacturerStateForArrayConstraintsFromSetManufacturerState(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicManufacturerStateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicManufacturerStateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicManufacturerStateItem) ? get_class($itemSearchRowBasicManufacturerStateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicManufacturerStateItem), var_export($itemSearchRowBasicManufacturerStateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The manufacturerState 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 manufacturerState value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $manufacturerState
     * @return \StructType\ItemSearchRowBasic
     */
    public function setManufacturerState(array $manufacturerState = array())
    {
        // validation for constraint: array
        if ('' !== ($manufacturerStateArrayErrorMessage = self::validateManufacturerStateForArrayConstraintsFromSetManufacturerState($manufacturerState))) {
            throw new \InvalidArgumentException($manufacturerStateArrayErrorMessage, __LINE__);
        }
        $this->manufacturerState = $manufacturerState;
        return $this;
    }
    /**
     * Add item to manufacturerState value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToManufacturerState(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The manufacturerState 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->manufacturerState[] = $item;
        return $this;
    }
    /**
     * Get manufacturerTariff value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getManufacturerTariff()
    {
        return $this->manufacturerTariff;
    }
    /**
     * This method is responsible for validating the values passed to the setManufacturerTariff method
     * This method is willingly generated in order to preserve the one-line inline validation within the setManufacturerTariff method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateManufacturerTariffForArrayConstraintsFromSetManufacturerTariff(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicManufacturerTariffItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicManufacturerTariffItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicManufacturerTariffItem) ? get_class($itemSearchRowBasicManufacturerTariffItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicManufacturerTariffItem), var_export($itemSearchRowBasicManufacturerTariffItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The manufacturerTariff 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 manufacturerTariff value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $manufacturerTariff
     * @return \StructType\ItemSearchRowBasic
     */
    public function setManufacturerTariff(array $manufacturerTariff = array())
    {
        // validation for constraint: array
        if ('' !== ($manufacturerTariffArrayErrorMessage = self::validateManufacturerTariffForArrayConstraintsFromSetManufacturerTariff($manufacturerTariff))) {
            throw new \InvalidArgumentException($manufacturerTariffArrayErrorMessage, __LINE__);
        }
        $this->manufacturerTariff = $manufacturerTariff;
        return $this;
    }
    /**
     * Add item to manufacturerTariff value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToManufacturerTariff(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The manufacturerTariff 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->manufacturerTariff[] = $item;
        return $this;
    }
    /**
     * Get manufacturerTaxId value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getManufacturerTaxId()
    {
        return $this->manufacturerTaxId;
    }
    /**
     * This method is responsible for validating the values passed to the setManufacturerTaxId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setManufacturerTaxId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateManufacturerTaxIdForArrayConstraintsFromSetManufacturerTaxId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicManufacturerTaxIdItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicManufacturerTaxIdItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicManufacturerTaxIdItem) ? get_class($itemSearchRowBasicManufacturerTaxIdItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicManufacturerTaxIdItem), var_export($itemSearchRowBasicManufacturerTaxIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The manufacturerTaxId 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 manufacturerTaxId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $manufacturerTaxId
     * @return \StructType\ItemSearchRowBasic
     */
    public function setManufacturerTaxId(array $manufacturerTaxId = array())
    {
        // validation for constraint: array
        if ('' !== ($manufacturerTaxIdArrayErrorMessage = self::validateManufacturerTaxIdForArrayConstraintsFromSetManufacturerTaxId($manufacturerTaxId))) {
            throw new \InvalidArgumentException($manufacturerTaxIdArrayErrorMessage, __LINE__);
        }
        $this->manufacturerTaxId = $manufacturerTaxId;
        return $this;
    }
    /**
     * Add item to manufacturerTaxId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToManufacturerTaxId(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The manufacturerTaxId 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->manufacturerTaxId[] = $item;
        return $this;
    }
    /**
     * Get manufacturerZip value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getManufacturerZip()
    {
        return $this->manufacturerZip;
    }
    /**
     * This method is responsible for validating the values passed to the setManufacturerZip method
     * This method is willingly generated in order to preserve the one-line inline validation within the setManufacturerZip method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateManufacturerZipForArrayConstraintsFromSetManufacturerZip(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicManufacturerZipItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicManufacturerZipItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicManufacturerZipItem) ? get_class($itemSearchRowBasicManufacturerZipItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicManufacturerZipItem), var_export($itemSearchRowBasicManufacturerZipItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The manufacturerZip 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 manufacturerZip value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $manufacturerZip
     * @return \StructType\ItemSearchRowBasic
     */
    public function setManufacturerZip(array $manufacturerZip = array())
    {
        // validation for constraint: array
        if ('' !== ($manufacturerZipArrayErrorMessage = self::validateManufacturerZipForArrayConstraintsFromSetManufacturerZip($manufacturerZip))) {
            throw new \InvalidArgumentException($manufacturerZipArrayErrorMessage, __LINE__);
        }
        $this->manufacturerZip = $manufacturerZip;
        return $this;
    }
    /**
     * Add item to manufacturerZip value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToManufacturerZip(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The manufacturerZip 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->manufacturerZip[] = $item;
        return $this;
    }
    /**
     * Get manufacturingChargeItem value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getManufacturingChargeItem()
    {
        return $this->manufacturingChargeItem;
    }
    /**
     * This method is responsible for validating the values passed to the setManufacturingChargeItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setManufacturingChargeItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateManufacturingChargeItemForArrayConstraintsFromSetManufacturingChargeItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicManufacturingChargeItemItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicManufacturingChargeItemItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicManufacturingChargeItemItem) ? get_class($itemSearchRowBasicManufacturingChargeItemItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicManufacturingChargeItemItem), var_export($itemSearchRowBasicManufacturingChargeItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The manufacturingChargeItem 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 manufacturingChargeItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $manufacturingChargeItem
     * @return \StructType\ItemSearchRowBasic
     */
    public function setManufacturingChargeItem(array $manufacturingChargeItem = array())
    {
        // validation for constraint: array
        if ('' !== ($manufacturingChargeItemArrayErrorMessage = self::validateManufacturingChargeItemForArrayConstraintsFromSetManufacturingChargeItem($manufacturingChargeItem))) {
            throw new \InvalidArgumentException($manufacturingChargeItemArrayErrorMessage, __LINE__);
        }
        $this->manufacturingChargeItem = $manufacturingChargeItem;
        return $this;
    }
    /**
     * Add item to manufacturingChargeItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToManufacturingChargeItem(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The manufacturingChargeItem 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->manufacturingChargeItem[] = $item;
        return $this;
    }
    /**
     * Get matchBillToReceipt value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getMatchBillToReceipt()
    {
        return $this->matchBillToReceipt;
    }
    /**
     * This method is responsible for validating the values passed to the setMatchBillToReceipt method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMatchBillToReceipt method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMatchBillToReceiptForArrayConstraintsFromSetMatchBillToReceipt(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicMatchBillToReceiptItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicMatchBillToReceiptItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicMatchBillToReceiptItem) ? get_class($itemSearchRowBasicMatchBillToReceiptItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicMatchBillToReceiptItem), var_export($itemSearchRowBasicMatchBillToReceiptItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The matchBillToReceipt 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 matchBillToReceipt value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $matchBillToReceipt
     * @return \StructType\ItemSearchRowBasic
     */
    public function setMatchBillToReceipt(array $matchBillToReceipt = array())
    {
        // validation for constraint: array
        if ('' !== ($matchBillToReceiptArrayErrorMessage = self::validateMatchBillToReceiptForArrayConstraintsFromSetMatchBillToReceipt($matchBillToReceipt))) {
            throw new \InvalidArgumentException($matchBillToReceiptArrayErrorMessage, __LINE__);
        }
        $this->matchBillToReceipt = $matchBillToReceipt;
        return $this;
    }
    /**
     * Add item to matchBillToReceipt value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToMatchBillToReceipt(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The matchBillToReceipt 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->matchBillToReceipt[] = $item;
        return $this;
    }
    /**
     * Get maximumQuantity value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getMaximumQuantity()
    {
        return $this->maximumQuantity;
    }
    /**
     * This method is responsible for validating the values passed to the setMaximumQuantity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMaximumQuantity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMaximumQuantityForArrayConstraintsFromSetMaximumQuantity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicMaximumQuantityItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicMaximumQuantityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicMaximumQuantityItem) ? get_class($itemSearchRowBasicMaximumQuantityItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicMaximumQuantityItem), var_export($itemSearchRowBasicMaximumQuantityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The maximumQuantity 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 maximumQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $maximumQuantity
     * @return \StructType\ItemSearchRowBasic
     */
    public function setMaximumQuantity(array $maximumQuantity = array())
    {
        // validation for constraint: array
        if ('' !== ($maximumQuantityArrayErrorMessage = self::validateMaximumQuantityForArrayConstraintsFromSetMaximumQuantity($maximumQuantity))) {
            throw new \InvalidArgumentException($maximumQuantityArrayErrorMessage, __LINE__);
        }
        $this->maximumQuantity = $maximumQuantity;
        return $this;
    }
    /**
     * Add item to maximumQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToMaximumQuantity(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The maximumQuantity 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->maximumQuantity[] = $item;
        return $this;
    }
    /**
     * Get memberItem value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getMemberItem()
    {
        return $this->memberItem;
    }
    /**
     * This method is responsible for validating the values passed to the setMemberItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMemberItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMemberItemForArrayConstraintsFromSetMemberItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicMemberItemItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicMemberItemItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicMemberItemItem) ? get_class($itemSearchRowBasicMemberItemItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicMemberItemItem), var_export($itemSearchRowBasicMemberItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The memberItem 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 memberItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $memberItem
     * @return \StructType\ItemSearchRowBasic
     */
    public function setMemberItem(array $memberItem = array())
    {
        // validation for constraint: array
        if ('' !== ($memberItemArrayErrorMessage = self::validateMemberItemForArrayConstraintsFromSetMemberItem($memberItem))) {
            throw new \InvalidArgumentException($memberItemArrayErrorMessage, __LINE__);
        }
        $this->memberItem = $memberItem;
        return $this;
    }
    /**
     * Add item to memberItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToMemberItem(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The memberItem 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->memberItem[] = $item;
        return $this;
    }
    /**
     * Get memberQuantity value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getMemberQuantity()
    {
        return $this->memberQuantity;
    }
    /**
     * This method is responsible for validating the values passed to the setMemberQuantity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMemberQuantity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMemberQuantityForArrayConstraintsFromSetMemberQuantity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicMemberQuantityItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicMemberQuantityItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicMemberQuantityItem) ? get_class($itemSearchRowBasicMemberQuantityItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicMemberQuantityItem), var_export($itemSearchRowBasicMemberQuantityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The memberQuantity 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 memberQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $memberQuantity
     * @return \StructType\ItemSearchRowBasic
     */
    public function setMemberQuantity(array $memberQuantity = array())
    {
        // validation for constraint: array
        if ('' !== ($memberQuantityArrayErrorMessage = self::validateMemberQuantityForArrayConstraintsFromSetMemberQuantity($memberQuantity))) {
            throw new \InvalidArgumentException($memberQuantityArrayErrorMessage, __LINE__);
        }
        $this->memberQuantity = $memberQuantity;
        return $this;
    }
    /**
     * Add item to memberQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToMemberQuantity(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The memberQuantity 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->memberQuantity[] = $item;
        return $this;
    }
    /**
     * Get metaTagHtml value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getMetaTagHtml()
    {
        return $this->metaTagHtml;
    }
    /**
     * This method is responsible for validating the values passed to the setMetaTagHtml method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMetaTagHtml method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMetaTagHtmlForArrayConstraintsFromSetMetaTagHtml(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicMetaTagHtmlItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicMetaTagHtmlItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicMetaTagHtmlItem) ? get_class($itemSearchRowBasicMetaTagHtmlItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicMetaTagHtmlItem), var_export($itemSearchRowBasicMetaTagHtmlItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The metaTagHtml 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 metaTagHtml value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $metaTagHtml
     * @return \StructType\ItemSearchRowBasic
     */
    public function setMetaTagHtml(array $metaTagHtml = array())
    {
        // validation for constraint: array
        if ('' !== ($metaTagHtmlArrayErrorMessage = self::validateMetaTagHtmlForArrayConstraintsFromSetMetaTagHtml($metaTagHtml))) {
            throw new \InvalidArgumentException($metaTagHtmlArrayErrorMessage, __LINE__);
        }
        $this->metaTagHtml = $metaTagHtml;
        return $this;
    }
    /**
     * Add item to metaTagHtml value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToMetaTagHtml(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The metaTagHtml 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->metaTagHtml[] = $item;
        return $this;
    }
    /**
     * Get minimumQuantity value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getMinimumQuantity()
    {
        return $this->minimumQuantity;
    }
    /**
     * This method is responsible for validating the values passed to the setMinimumQuantity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMinimumQuantity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMinimumQuantityForArrayConstraintsFromSetMinimumQuantity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicMinimumQuantityItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicMinimumQuantityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicMinimumQuantityItem) ? get_class($itemSearchRowBasicMinimumQuantityItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicMinimumQuantityItem), var_export($itemSearchRowBasicMinimumQuantityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The minimumQuantity 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 minimumQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $minimumQuantity
     * @return \StructType\ItemSearchRowBasic
     */
    public function setMinimumQuantity(array $minimumQuantity = array())
    {
        // validation for constraint: array
        if ('' !== ($minimumQuantityArrayErrorMessage = self::validateMinimumQuantityForArrayConstraintsFromSetMinimumQuantity($minimumQuantity))) {
            throw new \InvalidArgumentException($minimumQuantityArrayErrorMessage, __LINE__);
        }
        $this->minimumQuantity = $minimumQuantity;
        return $this;
    }
    /**
     * Add item to minimumQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToMinimumQuantity(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The minimumQuantity 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->minimumQuantity[] = $item;
        return $this;
    }
    /**
     * Get modified value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getModified()
    {
        return $this->modified;
    }
    /**
     * This method is responsible for validating the values passed to the setModified method
     * This method is willingly generated in order to preserve the one-line inline validation within the setModified method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateModifiedForArrayConstraintsFromSetModified(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicModifiedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicModifiedItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($itemSearchRowBasicModifiedItem) ? get_class($itemSearchRowBasicModifiedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicModifiedItem), var_export($itemSearchRowBasicModifiedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The modified 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 modified value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $modified
     * @return \StructType\ItemSearchRowBasic
     */
    public function setModified(array $modified = array())
    {
        // validation for constraint: array
        if ('' !== ($modifiedArrayErrorMessage = self::validateModifiedForArrayConstraintsFromSetModified($modified))) {
            throw new \InvalidArgumentException($modifiedArrayErrorMessage, __LINE__);
        }
        $this->modified = $modified;
        return $this;
    }
    /**
     * Add item to modified value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToModified(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The modified 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->modified[] = $item;
        return $this;
    }
    /**
     * Get mossApplies value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getMossApplies()
    {
        return $this->mossApplies;
    }
    /**
     * This method is responsible for validating the values passed to the setMossApplies method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMossApplies method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMossAppliesForArrayConstraintsFromSetMossApplies(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicMossAppliesItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicMossAppliesItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicMossAppliesItem) ? get_class($itemSearchRowBasicMossAppliesItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicMossAppliesItem), var_export($itemSearchRowBasicMossAppliesItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The mossApplies 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 mossApplies value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $mossApplies
     * @return \StructType\ItemSearchRowBasic
     */
    public function setMossApplies(array $mossApplies = array())
    {
        // validation for constraint: array
        if ('' !== ($mossAppliesArrayErrorMessage = self::validateMossAppliesForArrayConstraintsFromSetMossApplies($mossApplies))) {
            throw new \InvalidArgumentException($mossAppliesArrayErrorMessage, __LINE__);
        }
        $this->mossApplies = $mossApplies;
        return $this;
    }
    /**
     * Add item to mossApplies value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToMossApplies(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The mossApplies 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->mossApplies[] = $item;
        return $this;
    }
    /**
     * Get mpn value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getMpn()
    {
        return $this->mpn;
    }
    /**
     * This method is responsible for validating the values passed to the setMpn method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMpn method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMpnForArrayConstraintsFromSetMpn(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicMpnItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicMpnItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicMpnItem) ? get_class($itemSearchRowBasicMpnItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicMpnItem), var_export($itemSearchRowBasicMpnItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The mpn 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 mpn value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $mpn
     * @return \StructType\ItemSearchRowBasic
     */
    public function setMpn(array $mpn = array())
    {
        // validation for constraint: array
        if ('' !== ($mpnArrayErrorMessage = self::validateMpnForArrayConstraintsFromSetMpn($mpn))) {
            throw new \InvalidArgumentException($mpnArrayErrorMessage, __LINE__);
        }
        $this->mpn = $mpn;
        return $this;
    }
    /**
     * Add item to mpn value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToMpn(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The mpn 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->mpn[] = $item;
        return $this;
    }
    /**
     * Get multManufactureAddr value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getMultManufactureAddr()
    {
        return $this->multManufactureAddr;
    }
    /**
     * This method is responsible for validating the values passed to the setMultManufactureAddr method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMultManufactureAddr method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMultManufactureAddrForArrayConstraintsFromSetMultManufactureAddr(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicMultManufactureAddrItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicMultManufactureAddrItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicMultManufactureAddrItem) ? get_class($itemSearchRowBasicMultManufactureAddrItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicMultManufactureAddrItem), var_export($itemSearchRowBasicMultManufactureAddrItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The multManufactureAddr 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 multManufactureAddr value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $multManufactureAddr
     * @return \StructType\ItemSearchRowBasic
     */
    public function setMultManufactureAddr(array $multManufactureAddr = array())
    {
        // validation for constraint: array
        if ('' !== ($multManufactureAddrArrayErrorMessage = self::validateMultManufactureAddrForArrayConstraintsFromSetMultManufactureAddr($multManufactureAddr))) {
            throw new \InvalidArgumentException($multManufactureAddrArrayErrorMessage, __LINE__);
        }
        $this->multManufactureAddr = $multManufactureAddr;
        return $this;
    }
    /**
     * Add item to multManufactureAddr value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToMultManufactureAddr(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The multManufactureAddr 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->multManufactureAddr[] = $item;
        return $this;
    }
    /**
     * Get nextagCategory value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getNextagCategory()
    {
        return $this->nextagCategory;
    }
    /**
     * This method is responsible for validating the values passed to the setNextagCategory method
     * This method is willingly generated in order to preserve the one-line inline validation within the setNextagCategory method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNextagCategoryForArrayConstraintsFromSetNextagCategory(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicNextagCategoryItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicNextagCategoryItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicNextagCategoryItem) ? get_class($itemSearchRowBasicNextagCategoryItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicNextagCategoryItem), var_export($itemSearchRowBasicNextagCategoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The nextagCategory 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 nextagCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $nextagCategory
     * @return \StructType\ItemSearchRowBasic
     */
    public function setNextagCategory(array $nextagCategory = array())
    {
        // validation for constraint: array
        if ('' !== ($nextagCategoryArrayErrorMessage = self::validateNextagCategoryForArrayConstraintsFromSetNextagCategory($nextagCategory))) {
            throw new \InvalidArgumentException($nextagCategoryArrayErrorMessage, __LINE__);
        }
        $this->nextagCategory = $nextagCategory;
        return $this;
    }
    /**
     * Add item to nextagCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToNextagCategory(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The nextagCategory 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->nextagCategory[] = $item;
        return $this;
    }
    /**
     * Get nextagProductFeed value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getNextagProductFeed()
    {
        return $this->nextagProductFeed;
    }
    /**
     * This method is responsible for validating the values passed to the setNextagProductFeed method
     * This method is willingly generated in order to preserve the one-line inline validation within the setNextagProductFeed method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNextagProductFeedForArrayConstraintsFromSetNextagProductFeed(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicNextagProductFeedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicNextagProductFeedItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicNextagProductFeedItem) ? get_class($itemSearchRowBasicNextagProductFeedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicNextagProductFeedItem), var_export($itemSearchRowBasicNextagProductFeedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The nextagProductFeed 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 nextagProductFeed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $nextagProductFeed
     * @return \StructType\ItemSearchRowBasic
     */
    public function setNextagProductFeed(array $nextagProductFeed = array())
    {
        // validation for constraint: array
        if ('' !== ($nextagProductFeedArrayErrorMessage = self::validateNextagProductFeedForArrayConstraintsFromSetNextagProductFeed($nextagProductFeed))) {
            throw new \InvalidArgumentException($nextagProductFeedArrayErrorMessage, __LINE__);
        }
        $this->nextagProductFeed = $nextagProductFeed;
        return $this;
    }
    /**
     * Add item to nextagProductFeed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToNextagProductFeed(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The nextagProductFeed 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->nextagProductFeed[] = $item;
        return $this;
    }
    /**
     * Get nextInvtCountDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getNextInvtCountDate()
    {
        return $this->nextInvtCountDate;
    }
    /**
     * This method is responsible for validating the values passed to the setNextInvtCountDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setNextInvtCountDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNextInvtCountDateForArrayConstraintsFromSetNextInvtCountDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicNextInvtCountDateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicNextInvtCountDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($itemSearchRowBasicNextInvtCountDateItem) ? get_class($itemSearchRowBasicNextInvtCountDateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicNextInvtCountDateItem), var_export($itemSearchRowBasicNextInvtCountDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The nextInvtCountDate 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 nextInvtCountDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $nextInvtCountDate
     * @return \StructType\ItemSearchRowBasic
     */
    public function setNextInvtCountDate(array $nextInvtCountDate = array())
    {
        // validation for constraint: array
        if ('' !== ($nextInvtCountDateArrayErrorMessage = self::validateNextInvtCountDateForArrayConstraintsFromSetNextInvtCountDate($nextInvtCountDate))) {
            throw new \InvalidArgumentException($nextInvtCountDateArrayErrorMessage, __LINE__);
        }
        $this->nextInvtCountDate = $nextInvtCountDate;
        return $this;
    }
    /**
     * Add item to nextInvtCountDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToNextInvtCountDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The nextInvtCountDate 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->nextInvtCountDate[] = $item;
        return $this;
    }
    /**
     * Get noPriceMessage value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getNoPriceMessage()
    {
        return $this->noPriceMessage;
    }
    /**
     * This method is responsible for validating the values passed to the setNoPriceMessage method
     * This method is willingly generated in order to preserve the one-line inline validation within the setNoPriceMessage method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNoPriceMessageForArrayConstraintsFromSetNoPriceMessage(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicNoPriceMessageItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicNoPriceMessageItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicNoPriceMessageItem) ? get_class($itemSearchRowBasicNoPriceMessageItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicNoPriceMessageItem), var_export($itemSearchRowBasicNoPriceMessageItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The noPriceMessage 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 noPriceMessage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $noPriceMessage
     * @return \StructType\ItemSearchRowBasic
     */
    public function setNoPriceMessage(array $noPriceMessage = array())
    {
        // validation for constraint: array
        if ('' !== ($noPriceMessageArrayErrorMessage = self::validateNoPriceMessageForArrayConstraintsFromSetNoPriceMessage($noPriceMessage))) {
            throw new \InvalidArgumentException($noPriceMessageArrayErrorMessage, __LINE__);
        }
        $this->noPriceMessage = $noPriceMessage;
        return $this;
    }
    /**
     * Add item to noPriceMessage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToNoPriceMessage(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The noPriceMessage 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->noPriceMessage[] = $item;
        return $this;
    }
    /**
     * Get numActiveListings value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getNumActiveListings()
    {
        return $this->numActiveListings;
    }
    /**
     * This method is responsible for validating the values passed to the setNumActiveListings method
     * This method is willingly generated in order to preserve the one-line inline validation within the setNumActiveListings method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNumActiveListingsForArrayConstraintsFromSetNumActiveListings(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicNumActiveListingsItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicNumActiveListingsItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicNumActiveListingsItem) ? get_class($itemSearchRowBasicNumActiveListingsItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicNumActiveListingsItem), var_export($itemSearchRowBasicNumActiveListingsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The numActiveListings 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 numActiveListings value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $numActiveListings
     * @return \StructType\ItemSearchRowBasic
     */
    public function setNumActiveListings(array $numActiveListings = array())
    {
        // validation for constraint: array
        if ('' !== ($numActiveListingsArrayErrorMessage = self::validateNumActiveListingsForArrayConstraintsFromSetNumActiveListings($numActiveListings))) {
            throw new \InvalidArgumentException($numActiveListingsArrayErrorMessage, __LINE__);
        }
        $this->numActiveListings = $numActiveListings;
        return $this;
    }
    /**
     * Add item to numActiveListings value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToNumActiveListings(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The numActiveListings 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->numActiveListings[] = $item;
        return $this;
    }
    /**
     * Get numberAllowedDownloads value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getNumberAllowedDownloads()
    {
        return $this->numberAllowedDownloads;
    }
    /**
     * This method is responsible for validating the values passed to the setNumberAllowedDownloads method
     * This method is willingly generated in order to preserve the one-line inline validation within the setNumberAllowedDownloads method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNumberAllowedDownloadsForArrayConstraintsFromSetNumberAllowedDownloads(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicNumberAllowedDownloadsItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicNumberAllowedDownloadsItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicNumberAllowedDownloadsItem) ? get_class($itemSearchRowBasicNumberAllowedDownloadsItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicNumberAllowedDownloadsItem), var_export($itemSearchRowBasicNumberAllowedDownloadsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The numberAllowedDownloads 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 numberAllowedDownloads value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $numberAllowedDownloads
     * @return \StructType\ItemSearchRowBasic
     */
    public function setNumberAllowedDownloads(array $numberAllowedDownloads = array())
    {
        // validation for constraint: array
        if ('' !== ($numberAllowedDownloadsArrayErrorMessage = self::validateNumberAllowedDownloadsForArrayConstraintsFromSetNumberAllowedDownloads($numberAllowedDownloads))) {
            throw new \InvalidArgumentException($numberAllowedDownloadsArrayErrorMessage, __LINE__);
        }
        $this->numberAllowedDownloads = $numberAllowedDownloads;
        return $this;
    }
    /**
     * Add item to numberAllowedDownloads value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToNumberAllowedDownloads(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The numberAllowedDownloads 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->numberAllowedDownloads[] = $item;
        return $this;
    }
    /**
     * Get numCurrentlyListed value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getNumCurrentlyListed()
    {
        return $this->numCurrentlyListed;
    }
    /**
     * This method is responsible for validating the values passed to the setNumCurrentlyListed method
     * This method is willingly generated in order to preserve the one-line inline validation within the setNumCurrentlyListed method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNumCurrentlyListedForArrayConstraintsFromSetNumCurrentlyListed(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicNumCurrentlyListedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicNumCurrentlyListedItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicNumCurrentlyListedItem) ? get_class($itemSearchRowBasicNumCurrentlyListedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicNumCurrentlyListedItem), var_export($itemSearchRowBasicNumCurrentlyListedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The numCurrentlyListed 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 numCurrentlyListed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $numCurrentlyListed
     * @return \StructType\ItemSearchRowBasic
     */
    public function setNumCurrentlyListed(array $numCurrentlyListed = array())
    {
        // validation for constraint: array
        if ('' !== ($numCurrentlyListedArrayErrorMessage = self::validateNumCurrentlyListedForArrayConstraintsFromSetNumCurrentlyListed($numCurrentlyListed))) {
            throw new \InvalidArgumentException($numCurrentlyListedArrayErrorMessage, __LINE__);
        }
        $this->numCurrentlyListed = $numCurrentlyListed;
        return $this;
    }
    /**
     * Add item to numCurrentlyListed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToNumCurrentlyListed(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The numCurrentlyListed 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->numCurrentlyListed[] = $item;
        return $this;
    }
    /**
     * Get obsoleteDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getObsoleteDate()
    {
        return $this->obsoleteDate;
    }
    /**
     * This method is responsible for validating the values passed to the setObsoleteDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setObsoleteDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateObsoleteDateForArrayConstraintsFromSetObsoleteDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicObsoleteDateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicObsoleteDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($itemSearchRowBasicObsoleteDateItem) ? get_class($itemSearchRowBasicObsoleteDateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicObsoleteDateItem), var_export($itemSearchRowBasicObsoleteDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The obsoleteDate 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 obsoleteDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $obsoleteDate
     * @return \StructType\ItemSearchRowBasic
     */
    public function setObsoleteDate(array $obsoleteDate = array())
    {
        // validation for constraint: array
        if ('' !== ($obsoleteDateArrayErrorMessage = self::validateObsoleteDateForArrayConstraintsFromSetObsoleteDate($obsoleteDate))) {
            throw new \InvalidArgumentException($obsoleteDateArrayErrorMessage, __LINE__);
        }
        $this->obsoleteDate = $obsoleteDate;
        return $this;
    }
    /**
     * Add item to obsoleteDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToObsoleteDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The obsoleteDate 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->obsoleteDate[] = $item;
        return $this;
    }
    /**
     * Get obsoleteRevision value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getObsoleteRevision()
    {
        return $this->obsoleteRevision;
    }
    /**
     * This method is responsible for validating the values passed to the setObsoleteRevision method
     * This method is willingly generated in order to preserve the one-line inline validation within the setObsoleteRevision method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateObsoleteRevisionForArrayConstraintsFromSetObsoleteRevision(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicObsoleteRevisionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicObsoleteRevisionItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicObsoleteRevisionItem) ? get_class($itemSearchRowBasicObsoleteRevisionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicObsoleteRevisionItem), var_export($itemSearchRowBasicObsoleteRevisionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The obsoleteRevision 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 obsoleteRevision value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $obsoleteRevision
     * @return \StructType\ItemSearchRowBasic
     */
    public function setObsoleteRevision(array $obsoleteRevision = array())
    {
        // validation for constraint: array
        if ('' !== ($obsoleteRevisionArrayErrorMessage = self::validateObsoleteRevisionForArrayConstraintsFromSetObsoleteRevision($obsoleteRevision))) {
            throw new \InvalidArgumentException($obsoleteRevisionArrayErrorMessage, __LINE__);
        }
        $this->obsoleteRevision = $obsoleteRevision;
        return $this;
    }
    /**
     * Add item to obsoleteRevision value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToObsoleteRevision(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The obsoleteRevision 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->obsoleteRevision[] = $item;
        return $this;
    }
    /**
     * Get offerSupport value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getOfferSupport()
    {
        return $this->offerSupport;
    }
    /**
     * This method is responsible for validating the values passed to the setOfferSupport method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOfferSupport method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOfferSupportForArrayConstraintsFromSetOfferSupport(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicOfferSupportItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicOfferSupportItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicOfferSupportItem) ? get_class($itemSearchRowBasicOfferSupportItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicOfferSupportItem), var_export($itemSearchRowBasicOfferSupportItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The offerSupport 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 offerSupport value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $offerSupport
     * @return \StructType\ItemSearchRowBasic
     */
    public function setOfferSupport(array $offerSupport = array())
    {
        // validation for constraint: array
        if ('' !== ($offerSupportArrayErrorMessage = self::validateOfferSupportForArrayConstraintsFromSetOfferSupport($offerSupport))) {
            throw new \InvalidArgumentException($offerSupportArrayErrorMessage, __LINE__);
        }
        $this->offerSupport = $offerSupport;
        return $this;
    }
    /**
     * Add item to offerSupport value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToOfferSupport(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The offerSupport 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->offerSupport[] = $item;
        return $this;
    }
    /**
     * Get onlineCustomerPrice value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getOnlineCustomerPrice()
    {
        return $this->onlineCustomerPrice;
    }
    /**
     * This method is responsible for validating the values passed to the setOnlineCustomerPrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOnlineCustomerPrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOnlineCustomerPriceForArrayConstraintsFromSetOnlineCustomerPrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicOnlineCustomerPriceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicOnlineCustomerPriceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicOnlineCustomerPriceItem) ? get_class($itemSearchRowBasicOnlineCustomerPriceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicOnlineCustomerPriceItem), var_export($itemSearchRowBasicOnlineCustomerPriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The onlineCustomerPrice 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 onlineCustomerPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $onlineCustomerPrice
     * @return \StructType\ItemSearchRowBasic
     */
    public function setOnlineCustomerPrice(array $onlineCustomerPrice = array())
    {
        // validation for constraint: array
        if ('' !== ($onlineCustomerPriceArrayErrorMessage = self::validateOnlineCustomerPriceForArrayConstraintsFromSetOnlineCustomerPrice($onlineCustomerPrice))) {
            throw new \InvalidArgumentException($onlineCustomerPriceArrayErrorMessage, __LINE__);
        }
        $this->onlineCustomerPrice = $onlineCustomerPrice;
        return $this;
    }
    /**
     * Add item to onlineCustomerPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToOnlineCustomerPrice(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The onlineCustomerPrice 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->onlineCustomerPrice[] = $item;
        return $this;
    }
    /**
     * Get onlinePrice value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getOnlinePrice()
    {
        return $this->onlinePrice;
    }
    /**
     * This method is responsible for validating the values passed to the setOnlinePrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOnlinePrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOnlinePriceForArrayConstraintsFromSetOnlinePrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicOnlinePriceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicOnlinePriceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicOnlinePriceItem) ? get_class($itemSearchRowBasicOnlinePriceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicOnlinePriceItem), var_export($itemSearchRowBasicOnlinePriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The onlinePrice 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 onlinePrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $onlinePrice
     * @return \StructType\ItemSearchRowBasic
     */
    public function setOnlinePrice(array $onlinePrice = array())
    {
        // validation for constraint: array
        if ('' !== ($onlinePriceArrayErrorMessage = self::validateOnlinePriceForArrayConstraintsFromSetOnlinePrice($onlinePrice))) {
            throw new \InvalidArgumentException($onlinePriceArrayErrorMessage, __LINE__);
        }
        $this->onlinePrice = $onlinePrice;
        return $this;
    }
    /**
     * Add item to onlinePrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToOnlinePrice(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The onlinePrice 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->onlinePrice[] = $item;
        return $this;
    }
    /**
     * Get onSpecial value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getOnSpecial()
    {
        return $this->onSpecial;
    }
    /**
     * This method is responsible for validating the values passed to the setOnSpecial method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOnSpecial method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOnSpecialForArrayConstraintsFromSetOnSpecial(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicOnSpecialItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicOnSpecialItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicOnSpecialItem) ? get_class($itemSearchRowBasicOnSpecialItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicOnSpecialItem), var_export($itemSearchRowBasicOnSpecialItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The onSpecial 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 onSpecial value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $onSpecial
     * @return \StructType\ItemSearchRowBasic
     */
    public function setOnSpecial(array $onSpecial = array())
    {
        // validation for constraint: array
        if ('' !== ($onSpecialArrayErrorMessage = self::validateOnSpecialForArrayConstraintsFromSetOnSpecial($onSpecial))) {
            throw new \InvalidArgumentException($onSpecialArrayErrorMessage, __LINE__);
        }
        $this->onSpecial = $onSpecial;
        return $this;
    }
    /**
     * Add item to onSpecial value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToOnSpecial(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The onSpecial 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->onSpecial[] = $item;
        return $this;
    }
    /**
     * Get otherPrices value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getOtherPrices()
    {
        return $this->otherPrices;
    }
    /**
     * This method is responsible for validating the values passed to the setOtherPrices method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOtherPrices method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOtherPricesForArrayConstraintsFromSetOtherPrices(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicOtherPricesItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicOtherPricesItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicOtherPricesItem) ? get_class($itemSearchRowBasicOtherPricesItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicOtherPricesItem), var_export($itemSearchRowBasicOtherPricesItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The otherPrices 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 otherPrices value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $otherPrices
     * @return \StructType\ItemSearchRowBasic
     */
    public function setOtherPrices(array $otherPrices = array())
    {
        // validation for constraint: array
        if ('' !== ($otherPricesArrayErrorMessage = self::validateOtherPricesForArrayConstraintsFromSetOtherPrices($otherPrices))) {
            throw new \InvalidArgumentException($otherPricesArrayErrorMessage, __LINE__);
        }
        $this->otherPrices = $otherPrices;
        return $this;
    }
    /**
     * Add item to otherPrices value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToOtherPrices(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The otherPrices 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->otherPrices[] = $item;
        return $this;
    }
    /**
     * Get otherVendor value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getOtherVendor()
    {
        return $this->otherVendor;
    }
    /**
     * This method is responsible for validating the values passed to the setOtherVendor method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOtherVendor method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOtherVendorForArrayConstraintsFromSetOtherVendor(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicOtherVendorItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicOtherVendorItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicOtherVendorItem) ? get_class($itemSearchRowBasicOtherVendorItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicOtherVendorItem), var_export($itemSearchRowBasicOtherVendorItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The otherVendor 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 otherVendor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $otherVendor
     * @return \StructType\ItemSearchRowBasic
     */
    public function setOtherVendor(array $otherVendor = array())
    {
        // validation for constraint: array
        if ('' !== ($otherVendorArrayErrorMessage = self::validateOtherVendorForArrayConstraintsFromSetOtherVendor($otherVendor))) {
            throw new \InvalidArgumentException($otherVendorArrayErrorMessage, __LINE__);
        }
        $this->otherVendor = $otherVendor;
        return $this;
    }
    /**
     * Add item to otherVendor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToOtherVendor(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The otherVendor 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->otherVendor[] = $item;
        return $this;
    }
    /**
     * Get outOfStockBehavior value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getOutOfStockBehavior()
    {
        return $this->outOfStockBehavior;
    }
    /**
     * This method is responsible for validating the values passed to the setOutOfStockBehavior method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOutOfStockBehavior method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOutOfStockBehaviorForArrayConstraintsFromSetOutOfStockBehavior(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicOutOfStockBehaviorItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicOutOfStockBehaviorItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicOutOfStockBehaviorItem) ? get_class($itemSearchRowBasicOutOfStockBehaviorItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicOutOfStockBehaviorItem), var_export($itemSearchRowBasicOutOfStockBehaviorItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The outOfStockBehavior 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 outOfStockBehavior value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $outOfStockBehavior
     * @return \StructType\ItemSearchRowBasic
     */
    public function setOutOfStockBehavior(array $outOfStockBehavior = array())
    {
        // validation for constraint: array
        if ('' !== ($outOfStockBehaviorArrayErrorMessage = self::validateOutOfStockBehaviorForArrayConstraintsFromSetOutOfStockBehavior($outOfStockBehavior))) {
            throw new \InvalidArgumentException($outOfStockBehaviorArrayErrorMessage, __LINE__);
        }
        $this->outOfStockBehavior = $outOfStockBehavior;
        return $this;
    }
    /**
     * Add item to outOfStockBehavior value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToOutOfStockBehavior(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The outOfStockBehavior 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->outOfStockBehavior[] = $item;
        return $this;
    }
    /**
     * Get outOfStockMessage value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getOutOfStockMessage()
    {
        return $this->outOfStockMessage;
    }
    /**
     * This method is responsible for validating the values passed to the setOutOfStockMessage method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOutOfStockMessage method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOutOfStockMessageForArrayConstraintsFromSetOutOfStockMessage(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicOutOfStockMessageItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicOutOfStockMessageItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicOutOfStockMessageItem) ? get_class($itemSearchRowBasicOutOfStockMessageItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicOutOfStockMessageItem), var_export($itemSearchRowBasicOutOfStockMessageItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The outOfStockMessage 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 outOfStockMessage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $outOfStockMessage
     * @return \StructType\ItemSearchRowBasic
     */
    public function setOutOfStockMessage(array $outOfStockMessage = array())
    {
        // validation for constraint: array
        if ('' !== ($outOfStockMessageArrayErrorMessage = self::validateOutOfStockMessageForArrayConstraintsFromSetOutOfStockMessage($outOfStockMessage))) {
            throw new \InvalidArgumentException($outOfStockMessageArrayErrorMessage, __LINE__);
        }
        $this->outOfStockMessage = $outOfStockMessage;
        return $this;
    }
    /**
     * Add item to outOfStockMessage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToOutOfStockMessage(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The outOfStockMessage 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->outOfStockMessage[] = $item;
        return $this;
    }
    /**
     * Get overallQuantityPricingType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getOverallQuantityPricingType()
    {
        return $this->overallQuantityPricingType;
    }
    /**
     * This method is responsible for validating the values passed to the setOverallQuantityPricingType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOverallQuantityPricingType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOverallQuantityPricingTypeForArrayConstraintsFromSetOverallQuantityPricingType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicOverallQuantityPricingTypeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicOverallQuantityPricingTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicOverallQuantityPricingTypeItem) ? get_class($itemSearchRowBasicOverallQuantityPricingTypeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicOverallQuantityPricingTypeItem), var_export($itemSearchRowBasicOverallQuantityPricingTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The overallQuantityPricingType 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 overallQuantityPricingType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $overallQuantityPricingType
     * @return \StructType\ItemSearchRowBasic
     */
    public function setOverallQuantityPricingType(array $overallQuantityPricingType = array())
    {
        // validation for constraint: array
        if ('' !== ($overallQuantityPricingTypeArrayErrorMessage = self::validateOverallQuantityPricingTypeForArrayConstraintsFromSetOverallQuantityPricingType($overallQuantityPricingType))) {
            throw new \InvalidArgumentException($overallQuantityPricingTypeArrayErrorMessage, __LINE__);
        }
        $this->overallQuantityPricingType = $overallQuantityPricingType;
        return $this;
    }
    /**
     * Add item to overallQuantityPricingType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToOverallQuantityPricingType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The overallQuantityPricingType 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->overallQuantityPricingType[] = $item;
        return $this;
    }
    /**
     * Get overheadType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getOverheadType()
    {
        return $this->overheadType;
    }
    /**
     * This method is responsible for validating the values passed to the setOverheadType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOverheadType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOverheadTypeForArrayConstraintsFromSetOverheadType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicOverheadTypeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicOverheadTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicOverheadTypeItem) ? get_class($itemSearchRowBasicOverheadTypeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicOverheadTypeItem), var_export($itemSearchRowBasicOverheadTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The overheadType 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 overheadType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $overheadType
     * @return \StructType\ItemSearchRowBasic
     */
    public function setOverheadType(array $overheadType = array())
    {
        // validation for constraint: array
        if ('' !== ($overheadTypeArrayErrorMessage = self::validateOverheadTypeForArrayConstraintsFromSetOverheadType($overheadType))) {
            throw new \InvalidArgumentException($overheadTypeArrayErrorMessage, __LINE__);
        }
        $this->overheadType = $overheadType;
        return $this;
    }
    /**
     * Add item to overheadType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToOverheadType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The overheadType 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->overheadType[] = $item;
        return $this;
    }
    /**
     * Get pageTitle value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPageTitle()
    {
        return $this->pageTitle;
    }
    /**
     * This method is responsible for validating the values passed to the setPageTitle method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPageTitle method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePageTitleForArrayConstraintsFromSetPageTitle(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPageTitleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPageTitleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicPageTitleItem) ? get_class($itemSearchRowBasicPageTitleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPageTitleItem), var_export($itemSearchRowBasicPageTitleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The pageTitle 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 pageTitle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $pageTitle
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPageTitle(array $pageTitle = array())
    {
        // validation for constraint: array
        if ('' !== ($pageTitleArrayErrorMessage = self::validatePageTitleForArrayConstraintsFromSetPageTitle($pageTitle))) {
            throw new \InvalidArgumentException($pageTitleArrayErrorMessage, __LINE__);
        }
        $this->pageTitle = $pageTitle;
        return $this;
    }
    /**
     * Add item to pageTitle value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPageTitle(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The pageTitle 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->pageTitle[] = $item;
        return $this;
    }
    /**
     * Get parent value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getParent()
    {
        return $this->parent;
    }
    /**
     * This method is responsible for validating the values passed to the setParent method
     * This method is willingly generated in order to preserve the one-line inline validation within the setParent method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateParentForArrayConstraintsFromSetParent(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicParentItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicParentItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicParentItem) ? get_class($itemSearchRowBasicParentItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicParentItem), var_export($itemSearchRowBasicParentItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The parent property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set parent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $parent
     * @return \StructType\ItemSearchRowBasic
     */
    public function setParent(array $parent = array())
    {
        // validation for constraint: array
        if ('' !== ($parentArrayErrorMessage = self::validateParentForArrayConstraintsFromSetParent($parent))) {
            throw new \InvalidArgumentException($parentArrayErrorMessage, __LINE__);
        }
        $this->parent = $parent;
        return $this;
    }
    /**
     * Add item to parent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToParent(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The parent property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->parent[] = $item;
        return $this;
    }
    /**
     * Get periodicLotSizeDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getPeriodicLotSizeDays()
    {
        return $this->periodicLotSizeDays;
    }
    /**
     * This method is responsible for validating the values passed to the setPeriodicLotSizeDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPeriodicLotSizeDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePeriodicLotSizeDaysForArrayConstraintsFromSetPeriodicLotSizeDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPeriodicLotSizeDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPeriodicLotSizeDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicPeriodicLotSizeDaysItem) ? get_class($itemSearchRowBasicPeriodicLotSizeDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPeriodicLotSizeDaysItem), var_export($itemSearchRowBasicPeriodicLotSizeDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The periodicLotSizeDays 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 periodicLotSizeDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $periodicLotSizeDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPeriodicLotSizeDays(array $periodicLotSizeDays = array())
    {
        // validation for constraint: array
        if ('' !== ($periodicLotSizeDaysArrayErrorMessage = self::validatePeriodicLotSizeDaysForArrayConstraintsFromSetPeriodicLotSizeDays($periodicLotSizeDays))) {
            throw new \InvalidArgumentException($periodicLotSizeDaysArrayErrorMessage, __LINE__);
        }
        $this->periodicLotSizeDays = $periodicLotSizeDays;
        return $this;
    }
    /**
     * Add item to periodicLotSizeDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPeriodicLotSizeDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The periodicLotSizeDays 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->periodicLotSizeDays[] = $item;
        return $this;
    }
    /**
     * Get periodicLotSizeType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getPeriodicLotSizeType()
    {
        return $this->periodicLotSizeType;
    }
    /**
     * This method is responsible for validating the values passed to the setPeriodicLotSizeType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPeriodicLotSizeType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePeriodicLotSizeTypeForArrayConstraintsFromSetPeriodicLotSizeType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPeriodicLotSizeTypeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPeriodicLotSizeTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicPeriodicLotSizeTypeItem) ? get_class($itemSearchRowBasicPeriodicLotSizeTypeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPeriodicLotSizeTypeItem), var_export($itemSearchRowBasicPeriodicLotSizeTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The periodicLotSizeType 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 periodicLotSizeType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $periodicLotSizeType
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPeriodicLotSizeType(array $periodicLotSizeType = array())
    {
        // validation for constraint: array
        if ('' !== ($periodicLotSizeTypeArrayErrorMessage = self::validatePeriodicLotSizeTypeForArrayConstraintsFromSetPeriodicLotSizeType($periodicLotSizeType))) {
            throw new \InvalidArgumentException($periodicLotSizeTypeArrayErrorMessage, __LINE__);
        }
        $this->periodicLotSizeType = $periodicLotSizeType;
        return $this;
    }
    /**
     * Add item to periodicLotSizeType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPeriodicLotSizeType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The periodicLotSizeType 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->periodicLotSizeType[] = $item;
        return $this;
    }
    /**
     * Get preferenceCriterion value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPreferenceCriterion()
    {
        return $this->preferenceCriterion;
    }
    /**
     * This method is responsible for validating the values passed to the setPreferenceCriterion method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPreferenceCriterion method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePreferenceCriterionForArrayConstraintsFromSetPreferenceCriterion(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPreferenceCriterionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPreferenceCriterionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicPreferenceCriterionItem) ? get_class($itemSearchRowBasicPreferenceCriterionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPreferenceCriterionItem), var_export($itemSearchRowBasicPreferenceCriterionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The preferenceCriterion 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 preferenceCriterion value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $preferenceCriterion
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPreferenceCriterion(array $preferenceCriterion = array())
    {
        // validation for constraint: array
        if ('' !== ($preferenceCriterionArrayErrorMessage = self::validatePreferenceCriterionForArrayConstraintsFromSetPreferenceCriterion($preferenceCriterion))) {
            throw new \InvalidArgumentException($preferenceCriterionArrayErrorMessage, __LINE__);
        }
        $this->preferenceCriterion = $preferenceCriterion;
        return $this;
    }
    /**
     * Add item to preferenceCriterion value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPreferenceCriterion(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The preferenceCriterion 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->preferenceCriterion[] = $item;
        return $this;
    }
    /**
     * Get preferredBin value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getPreferredBin()
    {
        return $this->preferredBin;
    }
    /**
     * This method is responsible for validating the values passed to the setPreferredBin method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPreferredBin method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePreferredBinForArrayConstraintsFromSetPreferredBin(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPreferredBinItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPreferredBinItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicPreferredBinItem) ? get_class($itemSearchRowBasicPreferredBinItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPreferredBinItem), var_export($itemSearchRowBasicPreferredBinItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The preferredBin 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 preferredBin value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $preferredBin
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPreferredBin(array $preferredBin = array())
    {
        // validation for constraint: array
        if ('' !== ($preferredBinArrayErrorMessage = self::validatePreferredBinForArrayConstraintsFromSetPreferredBin($preferredBin))) {
            throw new \InvalidArgumentException($preferredBinArrayErrorMessage, __LINE__);
        }
        $this->preferredBin = $preferredBin;
        return $this;
    }
    /**
     * Add item to preferredBin value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPreferredBin(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The preferredBin 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->preferredBin[] = $item;
        return $this;
    }
    /**
     * Get preferredLocation value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPreferredLocation()
    {
        return $this->preferredLocation;
    }
    /**
     * This method is responsible for validating the values passed to the setPreferredLocation method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPreferredLocation method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePreferredLocationForArrayConstraintsFromSetPreferredLocation(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPreferredLocationItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPreferredLocationItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicPreferredLocationItem) ? get_class($itemSearchRowBasicPreferredLocationItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPreferredLocationItem), var_export($itemSearchRowBasicPreferredLocationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The preferredLocation 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 preferredLocation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $preferredLocation
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPreferredLocation(array $preferredLocation = array())
    {
        // validation for constraint: array
        if ('' !== ($preferredLocationArrayErrorMessage = self::validatePreferredLocationForArrayConstraintsFromSetPreferredLocation($preferredLocation))) {
            throw new \InvalidArgumentException($preferredLocationArrayErrorMessage, __LINE__);
        }
        $this->preferredLocation = $preferredLocation;
        return $this;
    }
    /**
     * Add item to preferredLocation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPreferredLocation(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The preferredLocation 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->preferredLocation[] = $item;
        return $this;
    }
    /**
     * Get preferredStockLevel value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPreferredStockLevel()
    {
        return $this->preferredStockLevel;
    }
    /**
     * This method is responsible for validating the values passed to the setPreferredStockLevel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPreferredStockLevel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePreferredStockLevelForArrayConstraintsFromSetPreferredStockLevel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPreferredStockLevelItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPreferredStockLevelItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicPreferredStockLevelItem) ? get_class($itemSearchRowBasicPreferredStockLevelItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPreferredStockLevelItem), var_export($itemSearchRowBasicPreferredStockLevelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The preferredStockLevel 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 preferredStockLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $preferredStockLevel
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPreferredStockLevel(array $preferredStockLevel = array())
    {
        // validation for constraint: array
        if ('' !== ($preferredStockLevelArrayErrorMessage = self::validatePreferredStockLevelForArrayConstraintsFromSetPreferredStockLevel($preferredStockLevel))) {
            throw new \InvalidArgumentException($preferredStockLevelArrayErrorMessage, __LINE__);
        }
        $this->preferredStockLevel = $preferredStockLevel;
        return $this;
    }
    /**
     * Add item to preferredStockLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPreferredStockLevel(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The preferredStockLevel 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->preferredStockLevel[] = $item;
        return $this;
    }
    /**
     * Get preferredStockLevelDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getPreferredStockLevelDays()
    {
        return $this->preferredStockLevelDays;
    }
    /**
     * This method is responsible for validating the values passed to the setPreferredStockLevelDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPreferredStockLevelDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePreferredStockLevelDaysForArrayConstraintsFromSetPreferredStockLevelDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPreferredStockLevelDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPreferredStockLevelDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicPreferredStockLevelDaysItem) ? get_class($itemSearchRowBasicPreferredStockLevelDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPreferredStockLevelDaysItem), var_export($itemSearchRowBasicPreferredStockLevelDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The preferredStockLevelDays 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 preferredStockLevelDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $preferredStockLevelDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPreferredStockLevelDays(array $preferredStockLevelDays = array())
    {
        // validation for constraint: array
        if ('' !== ($preferredStockLevelDaysArrayErrorMessage = self::validatePreferredStockLevelDaysForArrayConstraintsFromSetPreferredStockLevelDays($preferredStockLevelDays))) {
            throw new \InvalidArgumentException($preferredStockLevelDaysArrayErrorMessage, __LINE__);
        }
        $this->preferredStockLevelDays = $preferredStockLevelDays;
        return $this;
    }
    /**
     * Add item to preferredStockLevelDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPreferredStockLevelDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The preferredStockLevelDays 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->preferredStockLevelDays[] = $item;
        return $this;
    }
    /**
     * Get pricesIncludeTax value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getPricesIncludeTax()
    {
        return $this->pricesIncludeTax;
    }
    /**
     * This method is responsible for validating the values passed to the setPricesIncludeTax method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPricesIncludeTax method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePricesIncludeTaxForArrayConstraintsFromSetPricesIncludeTax(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPricesIncludeTaxItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPricesIncludeTaxItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicPricesIncludeTaxItem) ? get_class($itemSearchRowBasicPricesIncludeTaxItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPricesIncludeTaxItem), var_export($itemSearchRowBasicPricesIncludeTaxItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The pricesIncludeTax 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 pricesIncludeTax value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $pricesIncludeTax
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPricesIncludeTax(array $pricesIncludeTax = array())
    {
        // validation for constraint: array
        if ('' !== ($pricesIncludeTaxArrayErrorMessage = self::validatePricesIncludeTaxForArrayConstraintsFromSetPricesIncludeTax($pricesIncludeTax))) {
            throw new \InvalidArgumentException($pricesIncludeTaxArrayErrorMessage, __LINE__);
        }
        $this->pricesIncludeTax = $pricesIncludeTax;
        return $this;
    }
    /**
     * Add item to pricesIncludeTax value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPricesIncludeTax(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The pricesIncludeTax 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->pricesIncludeTax[] = $item;
        return $this;
    }
    /**
     * Get pricingGroup value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPricingGroup()
    {
        return $this->pricingGroup;
    }
    /**
     * This method is responsible for validating the values passed to the setPricingGroup method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPricingGroup method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePricingGroupForArrayConstraintsFromSetPricingGroup(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPricingGroupItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPricingGroupItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicPricingGroupItem) ? get_class($itemSearchRowBasicPricingGroupItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPricingGroupItem), var_export($itemSearchRowBasicPricingGroupItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The pricingGroup 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 pricingGroup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $pricingGroup
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPricingGroup(array $pricingGroup = array())
    {
        // validation for constraint: array
        if ('' !== ($pricingGroupArrayErrorMessage = self::validatePricingGroupForArrayConstraintsFromSetPricingGroup($pricingGroup))) {
            throw new \InvalidArgumentException($pricingGroupArrayErrorMessage, __LINE__);
        }
        $this->pricingGroup = $pricingGroup;
        return $this;
    }
    /**
     * Add item to pricingGroup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPricingGroup(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The pricingGroup 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->pricingGroup[] = $item;
        return $this;
    }
    /**
     * Get primaryCategory value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPrimaryCategory()
    {
        return $this->primaryCategory;
    }
    /**
     * This method is responsible for validating the values passed to the setPrimaryCategory method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPrimaryCategory method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePrimaryCategoryForArrayConstraintsFromSetPrimaryCategory(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPrimaryCategoryItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPrimaryCategoryItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicPrimaryCategoryItem) ? get_class($itemSearchRowBasicPrimaryCategoryItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPrimaryCategoryItem), var_export($itemSearchRowBasicPrimaryCategoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The primaryCategory 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 primaryCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $primaryCategory
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPrimaryCategory(array $primaryCategory = array())
    {
        // validation for constraint: array
        if ('' !== ($primaryCategoryArrayErrorMessage = self::validatePrimaryCategoryForArrayConstraintsFromSetPrimaryCategory($primaryCategory))) {
            throw new \InvalidArgumentException($primaryCategoryArrayErrorMessage, __LINE__);
        }
        $this->primaryCategory = $primaryCategory;
        return $this;
    }
    /**
     * Add item to primaryCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPrimaryCategory(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The primaryCategory 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->primaryCategory[] = $item;
        return $this;
    }
    /**
     * Get prodPriceVarianceAcct value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getProdPriceVarianceAcct()
    {
        return $this->prodPriceVarianceAcct;
    }
    /**
     * This method is responsible for validating the values passed to the setProdPriceVarianceAcct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setProdPriceVarianceAcct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateProdPriceVarianceAcctForArrayConstraintsFromSetProdPriceVarianceAcct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicProdPriceVarianceAcctItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicProdPriceVarianceAcctItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicProdPriceVarianceAcctItem) ? get_class($itemSearchRowBasicProdPriceVarianceAcctItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicProdPriceVarianceAcctItem), var_export($itemSearchRowBasicProdPriceVarianceAcctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The prodPriceVarianceAcct 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 prodPriceVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $prodPriceVarianceAcct
     * @return \StructType\ItemSearchRowBasic
     */
    public function setProdPriceVarianceAcct(array $prodPriceVarianceAcct = array())
    {
        // validation for constraint: array
        if ('' !== ($prodPriceVarianceAcctArrayErrorMessage = self::validateProdPriceVarianceAcctForArrayConstraintsFromSetProdPriceVarianceAcct($prodPriceVarianceAcct))) {
            throw new \InvalidArgumentException($prodPriceVarianceAcctArrayErrorMessage, __LINE__);
        }
        $this->prodPriceVarianceAcct = $prodPriceVarianceAcct;
        return $this;
    }
    /**
     * Add item to prodPriceVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToProdPriceVarianceAcct(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The prodPriceVarianceAcct 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->prodPriceVarianceAcct[] = $item;
        return $this;
    }
    /**
     * Get prodQtyVarianceAcct value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getProdQtyVarianceAcct()
    {
        return $this->prodQtyVarianceAcct;
    }
    /**
     * This method is responsible for validating the values passed to the setProdQtyVarianceAcct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setProdQtyVarianceAcct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateProdQtyVarianceAcctForArrayConstraintsFromSetProdQtyVarianceAcct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicProdQtyVarianceAcctItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicProdQtyVarianceAcctItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicProdQtyVarianceAcctItem) ? get_class($itemSearchRowBasicProdQtyVarianceAcctItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicProdQtyVarianceAcctItem), var_export($itemSearchRowBasicProdQtyVarianceAcctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The prodQtyVarianceAcct 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 prodQtyVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $prodQtyVarianceAcct
     * @return \StructType\ItemSearchRowBasic
     */
    public function setProdQtyVarianceAcct(array $prodQtyVarianceAcct = array())
    {
        // validation for constraint: array
        if ('' !== ($prodQtyVarianceAcctArrayErrorMessage = self::validateProdQtyVarianceAcctForArrayConstraintsFromSetProdQtyVarianceAcct($prodQtyVarianceAcct))) {
            throw new \InvalidArgumentException($prodQtyVarianceAcctArrayErrorMessage, __LINE__);
        }
        $this->prodQtyVarianceAcct = $prodQtyVarianceAcct;
        return $this;
    }
    /**
     * Add item to prodQtyVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToProdQtyVarianceAcct(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The prodQtyVarianceAcct 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->prodQtyVarianceAcct[] = $item;
        return $this;
    }
    /**
     * Get purchaseDescription value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPurchaseDescription()
    {
        return $this->purchaseDescription;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchaseDescription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchaseDescription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchaseDescriptionForArrayConstraintsFromSetPurchaseDescription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPurchaseDescriptionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPurchaseDescriptionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicPurchaseDescriptionItem) ? get_class($itemSearchRowBasicPurchaseDescriptionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPurchaseDescriptionItem), var_export($itemSearchRowBasicPurchaseDescriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchaseDescription 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 purchaseDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $purchaseDescription
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPurchaseDescription(array $purchaseDescription = array())
    {
        // validation for constraint: array
        if ('' !== ($purchaseDescriptionArrayErrorMessage = self::validatePurchaseDescriptionForArrayConstraintsFromSetPurchaseDescription($purchaseDescription))) {
            throw new \InvalidArgumentException($purchaseDescriptionArrayErrorMessage, __LINE__);
        }
        $this->purchaseDescription = $purchaseDescription;
        return $this;
    }
    /**
     * Add item to purchaseDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPurchaseDescription(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The purchaseDescription 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->purchaseDescription[] = $item;
        return $this;
    }
    /**
     * Get purchaseOrderAmount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPurchaseOrderAmount()
    {
        return $this->purchaseOrderAmount;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchaseOrderAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchaseOrderAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchaseOrderAmountForArrayConstraintsFromSetPurchaseOrderAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPurchaseOrderAmountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPurchaseOrderAmountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicPurchaseOrderAmountItem) ? get_class($itemSearchRowBasicPurchaseOrderAmountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPurchaseOrderAmountItem), var_export($itemSearchRowBasicPurchaseOrderAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchaseOrderAmount property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set purchaseOrderAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderAmount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPurchaseOrderAmount(array $purchaseOrderAmount = array())
    {
        // validation for constraint: array
        if ('' !== ($purchaseOrderAmountArrayErrorMessage = self::validatePurchaseOrderAmountForArrayConstraintsFromSetPurchaseOrderAmount($purchaseOrderAmount))) {
            throw new \InvalidArgumentException($purchaseOrderAmountArrayErrorMessage, __LINE__);
        }
        $this->purchaseOrderAmount = $purchaseOrderAmount;
        return $this;
    }
    /**
     * Add item to purchaseOrderAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPurchaseOrderAmount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The purchaseOrderAmount property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->purchaseOrderAmount[] = $item;
        return $this;
    }
    /**
     * Get purchaseOrderQuantity value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPurchaseOrderQuantity()
    {
        return $this->purchaseOrderQuantity;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchaseOrderQuantity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchaseOrderQuantity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchaseOrderQuantityForArrayConstraintsFromSetPurchaseOrderQuantity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPurchaseOrderQuantityItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPurchaseOrderQuantityItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicPurchaseOrderQuantityItem) ? get_class($itemSearchRowBasicPurchaseOrderQuantityItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPurchaseOrderQuantityItem), var_export($itemSearchRowBasicPurchaseOrderQuantityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchaseOrderQuantity property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set purchaseOrderQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderQuantity
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPurchaseOrderQuantity(array $purchaseOrderQuantity = array())
    {
        // validation for constraint: array
        if ('' !== ($purchaseOrderQuantityArrayErrorMessage = self::validatePurchaseOrderQuantityForArrayConstraintsFromSetPurchaseOrderQuantity($purchaseOrderQuantity))) {
            throw new \InvalidArgumentException($purchaseOrderQuantityArrayErrorMessage, __LINE__);
        }
        $this->purchaseOrderQuantity = $purchaseOrderQuantity;
        return $this;
    }
    /**
     * Add item to purchaseOrderQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPurchaseOrderQuantity(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The purchaseOrderQuantity property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->purchaseOrderQuantity[] = $item;
        return $this;
    }
    /**
     * Get purchaseOrderQuantityDiff value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPurchaseOrderQuantityDiff()
    {
        return $this->purchaseOrderQuantityDiff;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchaseOrderQuantityDiff method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchaseOrderQuantityDiff method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchaseOrderQuantityDiffForArrayConstraintsFromSetPurchaseOrderQuantityDiff(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPurchaseOrderQuantityDiffItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPurchaseOrderQuantityDiffItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicPurchaseOrderQuantityDiffItem) ? get_class($itemSearchRowBasicPurchaseOrderQuantityDiffItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPurchaseOrderQuantityDiffItem), var_export($itemSearchRowBasicPurchaseOrderQuantityDiffItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchaseOrderQuantityDiff property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set purchaseOrderQuantityDiff value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $purchaseOrderQuantityDiff
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPurchaseOrderQuantityDiff(array $purchaseOrderQuantityDiff = array())
    {
        // validation for constraint: array
        if ('' !== ($purchaseOrderQuantityDiffArrayErrorMessage = self::validatePurchaseOrderQuantityDiffForArrayConstraintsFromSetPurchaseOrderQuantityDiff($purchaseOrderQuantityDiff))) {
            throw new \InvalidArgumentException($purchaseOrderQuantityDiffArrayErrorMessage, __LINE__);
        }
        $this->purchaseOrderQuantityDiff = $purchaseOrderQuantityDiff;
        return $this;
    }
    /**
     * Add item to purchaseOrderQuantityDiff value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPurchaseOrderQuantityDiff(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The purchaseOrderQuantityDiff property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->purchaseOrderQuantityDiff[] = $item;
        return $this;
    }
    /**
     * Get purchasePriceVarianceAcct value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPurchasePriceVarianceAcct()
    {
        return $this->purchasePriceVarianceAcct;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchasePriceVarianceAcct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchasePriceVarianceAcct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchasePriceVarianceAcctForArrayConstraintsFromSetPurchasePriceVarianceAcct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPurchasePriceVarianceAcctItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPurchasePriceVarianceAcctItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicPurchasePriceVarianceAcctItem) ? get_class($itemSearchRowBasicPurchasePriceVarianceAcctItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPurchasePriceVarianceAcctItem), var_export($itemSearchRowBasicPurchasePriceVarianceAcctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchasePriceVarianceAcct 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 purchasePriceVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $purchasePriceVarianceAcct
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPurchasePriceVarianceAcct(array $purchasePriceVarianceAcct = array())
    {
        // validation for constraint: array
        if ('' !== ($purchasePriceVarianceAcctArrayErrorMessage = self::validatePurchasePriceVarianceAcctForArrayConstraintsFromSetPurchasePriceVarianceAcct($purchasePriceVarianceAcct))) {
            throw new \InvalidArgumentException($purchasePriceVarianceAcctArrayErrorMessage, __LINE__);
        }
        $this->purchasePriceVarianceAcct = $purchasePriceVarianceAcct;
        return $this;
    }
    /**
     * Add item to purchasePriceVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPurchasePriceVarianceAcct(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The purchasePriceVarianceAcct 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->purchasePriceVarianceAcct[] = $item;
        return $this;
    }
    /**
     * Get purchaseUnit value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPurchaseUnit()
    {
        return $this->purchaseUnit;
    }
    /**
     * This method is responsible for validating the values passed to the setPurchaseUnit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPurchaseUnit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePurchaseUnitForArrayConstraintsFromSetPurchaseUnit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicPurchaseUnitItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicPurchaseUnitItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicPurchaseUnitItem) ? get_class($itemSearchRowBasicPurchaseUnitItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicPurchaseUnitItem), var_export($itemSearchRowBasicPurchaseUnitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The purchaseUnit 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 purchaseUnit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $purchaseUnit
     * @return \StructType\ItemSearchRowBasic
     */
    public function setPurchaseUnit(array $purchaseUnit = array())
    {
        // validation for constraint: array
        if ('' !== ($purchaseUnitArrayErrorMessage = self::validatePurchaseUnitForArrayConstraintsFromSetPurchaseUnit($purchaseUnit))) {
            throw new \InvalidArgumentException($purchaseUnitArrayErrorMessage, __LINE__);
        }
        $this->purchaseUnit = $purchaseUnit;
        return $this;
    }
    /**
     * Add item to purchaseUnit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToPurchaseUnit(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The purchaseUnit 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->purchaseUnit[] = $item;
        return $this;
    }
    /**
     * Get quantityAvailable value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getQuantityAvailable()
    {
        return $this->quantityAvailable;
    }
    /**
     * This method is responsible for validating the values passed to the setQuantityAvailable method
     * This method is willingly generated in order to preserve the one-line inline validation within the setQuantityAvailable method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateQuantityAvailableForArrayConstraintsFromSetQuantityAvailable(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicQuantityAvailableItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicQuantityAvailableItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicQuantityAvailableItem) ? get_class($itemSearchRowBasicQuantityAvailableItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicQuantityAvailableItem), var_export($itemSearchRowBasicQuantityAvailableItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The quantityAvailable 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 quantityAvailable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $quantityAvailable
     * @return \StructType\ItemSearchRowBasic
     */
    public function setQuantityAvailable(array $quantityAvailable = array())
    {
        // validation for constraint: array
        if ('' !== ($quantityAvailableArrayErrorMessage = self::validateQuantityAvailableForArrayConstraintsFromSetQuantityAvailable($quantityAvailable))) {
            throw new \InvalidArgumentException($quantityAvailableArrayErrorMessage, __LINE__);
        }
        $this->quantityAvailable = $quantityAvailable;
        return $this;
    }
    /**
     * Add item to quantityAvailable value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToQuantityAvailable(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The quantityAvailable 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->quantityAvailable[] = $item;
        return $this;
    }
    /**
     * Get quantityBackOrdered value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getQuantityBackOrdered()
    {
        return $this->quantityBackOrdered;
    }
    /**
     * This method is responsible for validating the values passed to the setQuantityBackOrdered method
     * This method is willingly generated in order to preserve the one-line inline validation within the setQuantityBackOrdered method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateQuantityBackOrderedForArrayConstraintsFromSetQuantityBackOrdered(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicQuantityBackOrderedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicQuantityBackOrderedItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicQuantityBackOrderedItem) ? get_class($itemSearchRowBasicQuantityBackOrderedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicQuantityBackOrderedItem), var_export($itemSearchRowBasicQuantityBackOrderedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The quantityBackOrdered 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 quantityBackOrdered value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $quantityBackOrdered
     * @return \StructType\ItemSearchRowBasic
     */
    public function setQuantityBackOrdered(array $quantityBackOrdered = array())
    {
        // validation for constraint: array
        if ('' !== ($quantityBackOrderedArrayErrorMessage = self::validateQuantityBackOrderedForArrayConstraintsFromSetQuantityBackOrdered($quantityBackOrdered))) {
            throw new \InvalidArgumentException($quantityBackOrderedArrayErrorMessage, __LINE__);
        }
        $this->quantityBackOrdered = $quantityBackOrdered;
        return $this;
    }
    /**
     * Add item to quantityBackOrdered value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToQuantityBackOrdered(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The quantityBackOrdered 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->quantityBackOrdered[] = $item;
        return $this;
    }
    /**
     * Get quantityCommitted value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getQuantityCommitted()
    {
        return $this->quantityCommitted;
    }
    /**
     * This method is responsible for validating the values passed to the setQuantityCommitted method
     * This method is willingly generated in order to preserve the one-line inline validation within the setQuantityCommitted method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateQuantityCommittedForArrayConstraintsFromSetQuantityCommitted(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicQuantityCommittedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicQuantityCommittedItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicQuantityCommittedItem) ? get_class($itemSearchRowBasicQuantityCommittedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicQuantityCommittedItem), var_export($itemSearchRowBasicQuantityCommittedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The quantityCommitted 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 quantityCommitted value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $quantityCommitted
     * @return \StructType\ItemSearchRowBasic
     */
    public function setQuantityCommitted(array $quantityCommitted = array())
    {
        // validation for constraint: array
        if ('' !== ($quantityCommittedArrayErrorMessage = self::validateQuantityCommittedForArrayConstraintsFromSetQuantityCommitted($quantityCommitted))) {
            throw new \InvalidArgumentException($quantityCommittedArrayErrorMessage, __LINE__);
        }
        $this->quantityCommitted = $quantityCommitted;
        return $this;
    }
    /**
     * Add item to quantityCommitted value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToQuantityCommitted(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The quantityCommitted 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->quantityCommitted[] = $item;
        return $this;
    }
    /**
     * Get quantityOnHand value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getQuantityOnHand()
    {
        return $this->quantityOnHand;
    }
    /**
     * This method is responsible for validating the values passed to the setQuantityOnHand method
     * This method is willingly generated in order to preserve the one-line inline validation within the setQuantityOnHand method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateQuantityOnHandForArrayConstraintsFromSetQuantityOnHand(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicQuantityOnHandItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicQuantityOnHandItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicQuantityOnHandItem) ? get_class($itemSearchRowBasicQuantityOnHandItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicQuantityOnHandItem), var_export($itemSearchRowBasicQuantityOnHandItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The quantityOnHand 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 quantityOnHand value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $quantityOnHand
     * @return \StructType\ItemSearchRowBasic
     */
    public function setQuantityOnHand(array $quantityOnHand = array())
    {
        // validation for constraint: array
        if ('' !== ($quantityOnHandArrayErrorMessage = self::validateQuantityOnHandForArrayConstraintsFromSetQuantityOnHand($quantityOnHand))) {
            throw new \InvalidArgumentException($quantityOnHandArrayErrorMessage, __LINE__);
        }
        $this->quantityOnHand = $quantityOnHand;
        return $this;
    }
    /**
     * Add item to quantityOnHand value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToQuantityOnHand(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The quantityOnHand 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->quantityOnHand[] = $item;
        return $this;
    }
    /**
     * Get quantityOnOrder value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getQuantityOnOrder()
    {
        return $this->quantityOnOrder;
    }
    /**
     * This method is responsible for validating the values passed to the setQuantityOnOrder method
     * This method is willingly generated in order to preserve the one-line inline validation within the setQuantityOnOrder method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateQuantityOnOrderForArrayConstraintsFromSetQuantityOnOrder(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicQuantityOnOrderItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicQuantityOnOrderItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicQuantityOnOrderItem) ? get_class($itemSearchRowBasicQuantityOnOrderItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicQuantityOnOrderItem), var_export($itemSearchRowBasicQuantityOnOrderItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The quantityOnOrder 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 quantityOnOrder value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $quantityOnOrder
     * @return \StructType\ItemSearchRowBasic
     */
    public function setQuantityOnOrder(array $quantityOnOrder = array())
    {
        // validation for constraint: array
        if ('' !== ($quantityOnOrderArrayErrorMessage = self::validateQuantityOnOrderForArrayConstraintsFromSetQuantityOnOrder($quantityOnOrder))) {
            throw new \InvalidArgumentException($quantityOnOrderArrayErrorMessage, __LINE__);
        }
        $this->quantityOnOrder = $quantityOnOrder;
        return $this;
    }
    /**
     * Add item to quantityOnOrder value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToQuantityOnOrder(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The quantityOnOrder 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->quantityOnOrder[] = $item;
        return $this;
    }
    /**
     * Get quantityPricingSchedule value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getQuantityPricingSchedule()
    {
        return $this->quantityPricingSchedule;
    }
    /**
     * This method is responsible for validating the values passed to the setQuantityPricingSchedule method
     * This method is willingly generated in order to preserve the one-line inline validation within the setQuantityPricingSchedule method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateQuantityPricingScheduleForArrayConstraintsFromSetQuantityPricingSchedule(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicQuantityPricingScheduleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicQuantityPricingScheduleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicQuantityPricingScheduleItem) ? get_class($itemSearchRowBasicQuantityPricingScheduleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicQuantityPricingScheduleItem), var_export($itemSearchRowBasicQuantityPricingScheduleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The quantityPricingSchedule 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 quantityPricingSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $quantityPricingSchedule
     * @return \StructType\ItemSearchRowBasic
     */
    public function setQuantityPricingSchedule(array $quantityPricingSchedule = array())
    {
        // validation for constraint: array
        if ('' !== ($quantityPricingScheduleArrayErrorMessage = self::validateQuantityPricingScheduleForArrayConstraintsFromSetQuantityPricingSchedule($quantityPricingSchedule))) {
            throw new \InvalidArgumentException($quantityPricingScheduleArrayErrorMessage, __LINE__);
        }
        $this->quantityPricingSchedule = $quantityPricingSchedule;
        return $this;
    }
    /**
     * Add item to quantityPricingSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToQuantityPricingSchedule(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The quantityPricingSchedule 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->quantityPricingSchedule[] = $item;
        return $this;
    }
    /**
     * Get receiptAmount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getReceiptAmount()
    {
        return $this->receiptAmount;
    }
    /**
     * This method is responsible for validating the values passed to the setReceiptAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReceiptAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReceiptAmountForArrayConstraintsFromSetReceiptAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicReceiptAmountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicReceiptAmountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicReceiptAmountItem) ? get_class($itemSearchRowBasicReceiptAmountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicReceiptAmountItem), var_export($itemSearchRowBasicReceiptAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The receiptAmount property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set receiptAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $receiptAmount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setReceiptAmount(array $receiptAmount = array())
    {
        // validation for constraint: array
        if ('' !== ($receiptAmountArrayErrorMessage = self::validateReceiptAmountForArrayConstraintsFromSetReceiptAmount($receiptAmount))) {
            throw new \InvalidArgumentException($receiptAmountArrayErrorMessage, __LINE__);
        }
        $this->receiptAmount = $receiptAmount;
        return $this;
    }
    /**
     * Add item to receiptAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToReceiptAmount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The receiptAmount property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->receiptAmount[] = $item;
        return $this;
    }
    /**
     * Get receiptQuantity value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getReceiptQuantity()
    {
        return $this->receiptQuantity;
    }
    /**
     * This method is responsible for validating the values passed to the setReceiptQuantity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReceiptQuantity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReceiptQuantityForArrayConstraintsFromSetReceiptQuantity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicReceiptQuantityItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicReceiptQuantityItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicReceiptQuantityItem) ? get_class($itemSearchRowBasicReceiptQuantityItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicReceiptQuantityItem), var_export($itemSearchRowBasicReceiptQuantityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The receiptQuantity property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set receiptQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $receiptQuantity
     * @return \StructType\ItemSearchRowBasic
     */
    public function setReceiptQuantity(array $receiptQuantity = array())
    {
        // validation for constraint: array
        if ('' !== ($receiptQuantityArrayErrorMessage = self::validateReceiptQuantityForArrayConstraintsFromSetReceiptQuantity($receiptQuantity))) {
            throw new \InvalidArgumentException($receiptQuantityArrayErrorMessage, __LINE__);
        }
        $this->receiptQuantity = $receiptQuantity;
        return $this;
    }
    /**
     * Add item to receiptQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToReceiptQuantity(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The receiptQuantity property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->receiptQuantity[] = $item;
        return $this;
    }
    /**
     * Get receiptQuantityDiff value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getReceiptQuantityDiff()
    {
        return $this->receiptQuantityDiff;
    }
    /**
     * This method is responsible for validating the values passed to the setReceiptQuantityDiff method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReceiptQuantityDiff method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReceiptQuantityDiffForArrayConstraintsFromSetReceiptQuantityDiff(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicReceiptQuantityDiffItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicReceiptQuantityDiffItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicReceiptQuantityDiffItem) ? get_class($itemSearchRowBasicReceiptQuantityDiffItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicReceiptQuantityDiffItem), var_export($itemSearchRowBasicReceiptQuantityDiffItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The receiptQuantityDiff property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set receiptQuantityDiff value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $receiptQuantityDiff
     * @return \StructType\ItemSearchRowBasic
     */
    public function setReceiptQuantityDiff(array $receiptQuantityDiff = array())
    {
        // validation for constraint: array
        if ('' !== ($receiptQuantityDiffArrayErrorMessage = self::validateReceiptQuantityDiffForArrayConstraintsFromSetReceiptQuantityDiff($receiptQuantityDiff))) {
            throw new \InvalidArgumentException($receiptQuantityDiffArrayErrorMessage, __LINE__);
        }
        $this->receiptQuantityDiff = $receiptQuantityDiff;
        return $this;
    }
    /**
     * Add item to receiptQuantityDiff value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToReceiptQuantityDiff(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The receiptQuantityDiff property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->receiptQuantityDiff[] = $item;
        return $this;
    }
    /**
     * Get reorderMultiple value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getReorderMultiple()
    {
        return $this->reorderMultiple;
    }
    /**
     * This method is responsible for validating the values passed to the setReorderMultiple method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReorderMultiple method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReorderMultipleForArrayConstraintsFromSetReorderMultiple(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicReorderMultipleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicReorderMultipleItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicReorderMultipleItem) ? get_class($itemSearchRowBasicReorderMultipleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicReorderMultipleItem), var_export($itemSearchRowBasicReorderMultipleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The reorderMultiple 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 reorderMultiple value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $reorderMultiple
     * @return \StructType\ItemSearchRowBasic
     */
    public function setReorderMultiple(array $reorderMultiple = array())
    {
        // validation for constraint: array
        if ('' !== ($reorderMultipleArrayErrorMessage = self::validateReorderMultipleForArrayConstraintsFromSetReorderMultiple($reorderMultiple))) {
            throw new \InvalidArgumentException($reorderMultipleArrayErrorMessage, __LINE__);
        }
        $this->reorderMultiple = $reorderMultiple;
        return $this;
    }
    /**
     * Add item to reorderMultiple value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToReorderMultiple(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The reorderMultiple 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->reorderMultiple[] = $item;
        return $this;
    }
    /**
     * Get reOrderPoint value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getReOrderPoint()
    {
        return $this->reOrderPoint;
    }
    /**
     * This method is responsible for validating the values passed to the setReOrderPoint method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReOrderPoint method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReOrderPointForArrayConstraintsFromSetReOrderPoint(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicReOrderPointItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicReOrderPointItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicReOrderPointItem) ? get_class($itemSearchRowBasicReOrderPointItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicReOrderPointItem), var_export($itemSearchRowBasicReOrderPointItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The reOrderPoint 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 reOrderPoint value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $reOrderPoint
     * @return \StructType\ItemSearchRowBasic
     */
    public function setReOrderPoint(array $reOrderPoint = array())
    {
        // validation for constraint: array
        if ('' !== ($reOrderPointArrayErrorMessage = self::validateReOrderPointForArrayConstraintsFromSetReOrderPoint($reOrderPoint))) {
            throw new \InvalidArgumentException($reOrderPointArrayErrorMessage, __LINE__);
        }
        $this->reOrderPoint = $reOrderPoint;
        return $this;
    }
    /**
     * Add item to reOrderPoint value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToReOrderPoint(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The reOrderPoint 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->reOrderPoint[] = $item;
        return $this;
    }
    /**
     * Get rescheduleInDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getRescheduleInDays()
    {
        return $this->rescheduleInDays;
    }
    /**
     * This method is responsible for validating the values passed to the setRescheduleInDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRescheduleInDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRescheduleInDaysForArrayConstraintsFromSetRescheduleInDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicRescheduleInDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicRescheduleInDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicRescheduleInDaysItem) ? get_class($itemSearchRowBasicRescheduleInDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicRescheduleInDaysItem), var_export($itemSearchRowBasicRescheduleInDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The rescheduleInDays 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 rescheduleInDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $rescheduleInDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setRescheduleInDays(array $rescheduleInDays = array())
    {
        // validation for constraint: array
        if ('' !== ($rescheduleInDaysArrayErrorMessage = self::validateRescheduleInDaysForArrayConstraintsFromSetRescheduleInDays($rescheduleInDays))) {
            throw new \InvalidArgumentException($rescheduleInDaysArrayErrorMessage, __LINE__);
        }
        $this->rescheduleInDays = $rescheduleInDays;
        return $this;
    }
    /**
     * Add item to rescheduleInDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToRescheduleInDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The rescheduleInDays 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->rescheduleInDays[] = $item;
        return $this;
    }
    /**
     * Get rescheduleOutDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getRescheduleOutDays()
    {
        return $this->rescheduleOutDays;
    }
    /**
     * This method is responsible for validating the values passed to the setRescheduleOutDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRescheduleOutDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRescheduleOutDaysForArrayConstraintsFromSetRescheduleOutDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicRescheduleOutDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicRescheduleOutDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicRescheduleOutDaysItem) ? get_class($itemSearchRowBasicRescheduleOutDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicRescheduleOutDaysItem), var_export($itemSearchRowBasicRescheduleOutDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The rescheduleOutDays 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 rescheduleOutDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $rescheduleOutDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setRescheduleOutDays(array $rescheduleOutDays = array())
    {
        // validation for constraint: array
        if ('' !== ($rescheduleOutDaysArrayErrorMessage = self::validateRescheduleOutDaysForArrayConstraintsFromSetRescheduleOutDays($rescheduleOutDays))) {
            throw new \InvalidArgumentException($rescheduleOutDaysArrayErrorMessage, __LINE__);
        }
        $this->rescheduleOutDays = $rescheduleOutDays;
        return $this;
    }
    /**
     * Add item to rescheduleOutDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToRescheduleOutDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The rescheduleOutDays 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->rescheduleOutDays[] = $item;
        return $this;
    }
    /**
     * Get reservePrice value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getReservePrice()
    {
        return $this->reservePrice;
    }
    /**
     * This method is responsible for validating the values passed to the setReservePrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setReservePrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateReservePriceForArrayConstraintsFromSetReservePrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicReservePriceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicReservePriceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicReservePriceItem) ? get_class($itemSearchRowBasicReservePriceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicReservePriceItem), var_export($itemSearchRowBasicReservePriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The reservePrice 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 reservePrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $reservePrice
     * @return \StructType\ItemSearchRowBasic
     */
    public function setReservePrice(array $reservePrice = array())
    {
        // validation for constraint: array
        if ('' !== ($reservePriceArrayErrorMessage = self::validateReservePriceForArrayConstraintsFromSetReservePrice($reservePrice))) {
            throw new \InvalidArgumentException($reservePriceArrayErrorMessage, __LINE__);
        }
        $this->reservePrice = $reservePrice;
        return $this;
    }
    /**
     * Add item to reservePrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToReservePrice(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The reservePrice 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->reservePrice[] = $item;
        return $this;
    }
    /**
     * Get revenueAllocationGroup value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getRevenueAllocationGroup()
    {
        return $this->revenueAllocationGroup;
    }
    /**
     * This method is responsible for validating the values passed to the setRevenueAllocationGroup method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRevenueAllocationGroup method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRevenueAllocationGroupForArrayConstraintsFromSetRevenueAllocationGroup(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicRevenueAllocationGroupItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicRevenueAllocationGroupItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicRevenueAllocationGroupItem) ? get_class($itemSearchRowBasicRevenueAllocationGroupItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicRevenueAllocationGroupItem), var_export($itemSearchRowBasicRevenueAllocationGroupItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The revenueAllocationGroup 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 revenueAllocationGroup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $revenueAllocationGroup
     * @return \StructType\ItemSearchRowBasic
     */
    public function setRevenueAllocationGroup(array $revenueAllocationGroup = array())
    {
        // validation for constraint: array
        if ('' !== ($revenueAllocationGroupArrayErrorMessage = self::validateRevenueAllocationGroupForArrayConstraintsFromSetRevenueAllocationGroup($revenueAllocationGroup))) {
            throw new \InvalidArgumentException($revenueAllocationGroupArrayErrorMessage, __LINE__);
        }
        $this->revenueAllocationGroup = $revenueAllocationGroup;
        return $this;
    }
    /**
     * Add item to revenueAllocationGroup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToRevenueAllocationGroup(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The revenueAllocationGroup 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->revenueAllocationGroup[] = $item;
        return $this;
    }
    /**
     * Get revenueRecognitionRule value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getRevenueRecognitionRule()
    {
        return $this->revenueRecognitionRule;
    }
    /**
     * This method is responsible for validating the values passed to the setRevenueRecognitionRule method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRevenueRecognitionRule method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRevenueRecognitionRuleForArrayConstraintsFromSetRevenueRecognitionRule(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicRevenueRecognitionRuleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicRevenueRecognitionRuleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicRevenueRecognitionRuleItem) ? get_class($itemSearchRowBasicRevenueRecognitionRuleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicRevenueRecognitionRuleItem), var_export($itemSearchRowBasicRevenueRecognitionRuleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The revenueRecognitionRule 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 revenueRecognitionRule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $revenueRecognitionRule
     * @return \StructType\ItemSearchRowBasic
     */
    public function setRevenueRecognitionRule(array $revenueRecognitionRule = array())
    {
        // validation for constraint: array
        if ('' !== ($revenueRecognitionRuleArrayErrorMessage = self::validateRevenueRecognitionRuleForArrayConstraintsFromSetRevenueRecognitionRule($revenueRecognitionRule))) {
            throw new \InvalidArgumentException($revenueRecognitionRuleArrayErrorMessage, __LINE__);
        }
        $this->revenueRecognitionRule = $revenueRecognitionRule;
        return $this;
    }
    /**
     * Add item to revenueRecognitionRule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToRevenueRecognitionRule(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The revenueRecognitionRule 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->revenueRecognitionRule[] = $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 $itemSearchRowBasicRevRecForecastRuleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicRevRecForecastRuleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicRevRecForecastRuleItem) ? get_class($itemSearchRowBasicRevRecForecastRuleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicRevRecForecastRuleItem), var_export($itemSearchRowBasicRevRecForecastRuleItem, 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\ItemSearchRowBasic
     */
    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\ItemSearchRowBasic
     */
    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 revReclassFXAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getRevReclassFXAccount()
    {
        return $this->revReclassFXAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setRevReclassFXAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRevReclassFXAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRevReclassFXAccountForArrayConstraintsFromSetRevReclassFXAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicRevReclassFXAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicRevReclassFXAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicRevReclassFXAccountItem) ? get_class($itemSearchRowBasicRevReclassFXAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicRevReclassFXAccountItem), var_export($itemSearchRowBasicRevReclassFXAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The revReclassFXAccount 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 revReclassFXAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $revReclassFXAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setRevReclassFXAccount(array $revReclassFXAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($revReclassFXAccountArrayErrorMessage = self::validateRevReclassFXAccountForArrayConstraintsFromSetRevReclassFXAccount($revReclassFXAccount))) {
            throw new \InvalidArgumentException($revReclassFXAccountArrayErrorMessage, __LINE__);
        }
        $this->revReclassFXAccount = $revReclassFXAccount;
        return $this;
    }
    /**
     * Add item to revReclassFXAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToRevReclassFXAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The revReclassFXAccount 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->revReclassFXAccount[] = $item;
        return $this;
    }
    /**
     * Get revRecSchedule value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getRevRecSchedule()
    {
        return $this->revRecSchedule;
    }
    /**
     * This method is responsible for validating the values passed to the setRevRecSchedule method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRevRecSchedule method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRevRecScheduleForArrayConstraintsFromSetRevRecSchedule(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicRevRecScheduleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicRevRecScheduleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicRevRecScheduleItem) ? get_class($itemSearchRowBasicRevRecScheduleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicRevRecScheduleItem), var_export($itemSearchRowBasicRevRecScheduleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The revRecSchedule 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 revRecSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $revRecSchedule
     * @return \StructType\ItemSearchRowBasic
     */
    public function setRevRecSchedule(array $revRecSchedule = array())
    {
        // validation for constraint: array
        if ('' !== ($revRecScheduleArrayErrorMessage = self::validateRevRecScheduleForArrayConstraintsFromSetRevRecSchedule($revRecSchedule))) {
            throw new \InvalidArgumentException($revRecScheduleArrayErrorMessage, __LINE__);
        }
        $this->revRecSchedule = $revRecSchedule;
        return $this;
    }
    /**
     * Add item to revRecSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToRevRecSchedule(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The revRecSchedule 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->revRecSchedule[] = $item;
        return $this;
    }
    /**
     * Get roundUpAsComponent value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getRoundUpAsComponent()
    {
        return $this->roundUpAsComponent;
    }
    /**
     * This method is responsible for validating the values passed to the setRoundUpAsComponent method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRoundUpAsComponent method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRoundUpAsComponentForArrayConstraintsFromSetRoundUpAsComponent(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicRoundUpAsComponentItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicRoundUpAsComponentItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicRoundUpAsComponentItem) ? get_class($itemSearchRowBasicRoundUpAsComponentItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicRoundUpAsComponentItem), var_export($itemSearchRowBasicRoundUpAsComponentItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The roundUpAsComponent 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 roundUpAsComponent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $roundUpAsComponent
     * @return \StructType\ItemSearchRowBasic
     */
    public function setRoundUpAsComponent(array $roundUpAsComponent = array())
    {
        // validation for constraint: array
        if ('' !== ($roundUpAsComponentArrayErrorMessage = self::validateRoundUpAsComponentForArrayConstraintsFromSetRoundUpAsComponent($roundUpAsComponent))) {
            throw new \InvalidArgumentException($roundUpAsComponentArrayErrorMessage, __LINE__);
        }
        $this->roundUpAsComponent = $roundUpAsComponent;
        return $this;
    }
    /**
     * Add item to roundUpAsComponent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToRoundUpAsComponent(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The roundUpAsComponent 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->roundUpAsComponent[] = $item;
        return $this;
    }
    /**
     * Get safetyStockLevel value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getSafetyStockLevel()
    {
        return $this->safetyStockLevel;
    }
    /**
     * This method is responsible for validating the values passed to the setSafetyStockLevel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSafetyStockLevel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSafetyStockLevelForArrayConstraintsFromSetSafetyStockLevel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSafetyStockLevelItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSafetyStockLevelItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicSafetyStockLevelItem) ? get_class($itemSearchRowBasicSafetyStockLevelItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSafetyStockLevelItem), var_export($itemSearchRowBasicSafetyStockLevelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The safetyStockLevel 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 safetyStockLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $safetyStockLevel
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSafetyStockLevel(array $safetyStockLevel = array())
    {
        // validation for constraint: array
        if ('' !== ($safetyStockLevelArrayErrorMessage = self::validateSafetyStockLevelForArrayConstraintsFromSetSafetyStockLevel($safetyStockLevel))) {
            throw new \InvalidArgumentException($safetyStockLevelArrayErrorMessage, __LINE__);
        }
        $this->safetyStockLevel = $safetyStockLevel;
        return $this;
    }
    /**
     * Add item to safetyStockLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSafetyStockLevel(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The safetyStockLevel 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->safetyStockLevel[] = $item;
        return $this;
    }
    /**
     * Get safetyStockLevelDays value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getSafetyStockLevelDays()
    {
        return $this->safetyStockLevelDays;
    }
    /**
     * This method is responsible for validating the values passed to the setSafetyStockLevelDays method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSafetyStockLevelDays method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSafetyStockLevelDaysForArrayConstraintsFromSetSafetyStockLevelDays(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSafetyStockLevelDaysItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSafetyStockLevelDaysItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicSafetyStockLevelDaysItem) ? get_class($itemSearchRowBasicSafetyStockLevelDaysItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSafetyStockLevelDaysItem), var_export($itemSearchRowBasicSafetyStockLevelDaysItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The safetyStockLevelDays 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 safetyStockLevelDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $safetyStockLevelDays
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSafetyStockLevelDays(array $safetyStockLevelDays = array())
    {
        // validation for constraint: array
        if ('' !== ($safetyStockLevelDaysArrayErrorMessage = self::validateSafetyStockLevelDaysForArrayConstraintsFromSetSafetyStockLevelDays($safetyStockLevelDays))) {
            throw new \InvalidArgumentException($safetyStockLevelDaysArrayErrorMessage, __LINE__);
        }
        $this->safetyStockLevelDays = $safetyStockLevelDays;
        return $this;
    }
    /**
     * Add item to safetyStockLevelDays value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSafetyStockLevelDays(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The safetyStockLevelDays 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->safetyStockLevelDays[] = $item;
        return $this;
    }
    /**
     * Get salesDescription value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSalesDescription()
    {
        return $this->salesDescription;
    }
    /**
     * This method is responsible for validating the values passed to the setSalesDescription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalesDescription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalesDescriptionForArrayConstraintsFromSetSalesDescription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSalesDescriptionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSalesDescriptionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicSalesDescriptionItem) ? get_class($itemSearchRowBasicSalesDescriptionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSalesDescriptionItem), var_export($itemSearchRowBasicSalesDescriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salesDescription 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 salesDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $salesDescription
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSalesDescription(array $salesDescription = array())
    {
        // validation for constraint: array
        if ('' !== ($salesDescriptionArrayErrorMessage = self::validateSalesDescriptionForArrayConstraintsFromSetSalesDescription($salesDescription))) {
            throw new \InvalidArgumentException($salesDescriptionArrayErrorMessage, __LINE__);
        }
        $this->salesDescription = $salesDescription;
        return $this;
    }
    /**
     * Add item to salesDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSalesDescription(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The salesDescription 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->salesDescription[] = $item;
        return $this;
    }
    /**
     * Get salesTaxCode value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSalesTaxCode()
    {
        return $this->salesTaxCode;
    }
    /**
     * This method is responsible for validating the values passed to the setSalesTaxCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalesTaxCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalesTaxCodeForArrayConstraintsFromSetSalesTaxCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSalesTaxCodeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSalesTaxCodeItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicSalesTaxCodeItem) ? get_class($itemSearchRowBasicSalesTaxCodeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSalesTaxCodeItem), var_export($itemSearchRowBasicSalesTaxCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salesTaxCode 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 salesTaxCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $salesTaxCode
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSalesTaxCode(array $salesTaxCode = array())
    {
        // validation for constraint: array
        if ('' !== ($salesTaxCodeArrayErrorMessage = self::validateSalesTaxCodeForArrayConstraintsFromSetSalesTaxCode($salesTaxCode))) {
            throw new \InvalidArgumentException($salesTaxCodeArrayErrorMessage, __LINE__);
        }
        $this->salesTaxCode = $salesTaxCode;
        return $this;
    }
    /**
     * Add item to salesTaxCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSalesTaxCode(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The salesTaxCode 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->salesTaxCode[] = $item;
        return $this;
    }
    /**
     * Get saleUnit value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSaleUnit()
    {
        return $this->saleUnit;
    }
    /**
     * This method is responsible for validating the values passed to the setSaleUnit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSaleUnit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSaleUnitForArrayConstraintsFromSetSaleUnit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSaleUnitItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSaleUnitItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicSaleUnitItem) ? get_class($itemSearchRowBasicSaleUnitItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSaleUnitItem), var_export($itemSearchRowBasicSaleUnitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The saleUnit 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 saleUnit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $saleUnit
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSaleUnit(array $saleUnit = array())
    {
        // validation for constraint: array
        if ('' !== ($saleUnitArrayErrorMessage = self::validateSaleUnitForArrayConstraintsFromSetSaleUnit($saleUnit))) {
            throw new \InvalidArgumentException($saleUnitArrayErrorMessage, __LINE__);
        }
        $this->saleUnit = $saleUnit;
        return $this;
    }
    /**
     * Add item to saleUnit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSaleUnit(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The saleUnit 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->saleUnit[] = $item;
        return $this;
    }
    /**
     * Get sameAsPrimaryBookAmortization value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getSameAsPrimaryBookAmortization()
    {
        return $this->sameAsPrimaryBookAmortization;
    }
    /**
     * This method is responsible for validating the values passed to the setSameAsPrimaryBookAmortization method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSameAsPrimaryBookAmortization method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSameAsPrimaryBookAmortizationForArrayConstraintsFromSetSameAsPrimaryBookAmortization(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSameAsPrimaryBookAmortizationItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSameAsPrimaryBookAmortizationItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicSameAsPrimaryBookAmortizationItem) ? get_class($itemSearchRowBasicSameAsPrimaryBookAmortizationItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSameAsPrimaryBookAmortizationItem), var_export($itemSearchRowBasicSameAsPrimaryBookAmortizationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The sameAsPrimaryBookAmortization 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 sameAsPrimaryBookAmortization value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $sameAsPrimaryBookAmortization
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSameAsPrimaryBookAmortization(array $sameAsPrimaryBookAmortization = array())
    {
        // validation for constraint: array
        if ('' !== ($sameAsPrimaryBookAmortizationArrayErrorMessage = self::validateSameAsPrimaryBookAmortizationForArrayConstraintsFromSetSameAsPrimaryBookAmortization($sameAsPrimaryBookAmortization))) {
            throw new \InvalidArgumentException($sameAsPrimaryBookAmortizationArrayErrorMessage, __LINE__);
        }
        $this->sameAsPrimaryBookAmortization = $sameAsPrimaryBookAmortization;
        return $this;
    }
    /**
     * Add item to sameAsPrimaryBookAmortization value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSameAsPrimaryBookAmortization(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The sameAsPrimaryBookAmortization 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->sameAsPrimaryBookAmortization[] = $item;
        return $this;
    }
    /**
     * Get sameAsPrimaryBookRevRec value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getSameAsPrimaryBookRevRec()
    {
        return $this->sameAsPrimaryBookRevRec;
    }
    /**
     * This method is responsible for validating the values passed to the setSameAsPrimaryBookRevRec method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSameAsPrimaryBookRevRec method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSameAsPrimaryBookRevRecForArrayConstraintsFromSetSameAsPrimaryBookRevRec(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSameAsPrimaryBookRevRecItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSameAsPrimaryBookRevRecItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicSameAsPrimaryBookRevRecItem) ? get_class($itemSearchRowBasicSameAsPrimaryBookRevRecItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSameAsPrimaryBookRevRecItem), var_export($itemSearchRowBasicSameAsPrimaryBookRevRecItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The sameAsPrimaryBookRevRec 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 sameAsPrimaryBookRevRec value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $sameAsPrimaryBookRevRec
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSameAsPrimaryBookRevRec(array $sameAsPrimaryBookRevRec = array())
    {
        // validation for constraint: array
        if ('' !== ($sameAsPrimaryBookRevRecArrayErrorMessage = self::validateSameAsPrimaryBookRevRecForArrayConstraintsFromSetSameAsPrimaryBookRevRec($sameAsPrimaryBookRevRec))) {
            throw new \InvalidArgumentException($sameAsPrimaryBookRevRecArrayErrorMessage, __LINE__);
        }
        $this->sameAsPrimaryBookRevRec = $sameAsPrimaryBookRevRec;
        return $this;
    }
    /**
     * Add item to sameAsPrimaryBookRevRec value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSameAsPrimaryBookRevRec(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The sameAsPrimaryBookRevRec 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->sameAsPrimaryBookRevRec[] = $item;
        return $this;
    }
    /**
     * Get scheduleBCode value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getScheduleBCode()
    {
        return $this->scheduleBCode;
    }
    /**
     * This method is responsible for validating the values passed to the setScheduleBCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setScheduleBCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateScheduleBCodeForArrayConstraintsFromSetScheduleBCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicScheduleBCodeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicScheduleBCodeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicScheduleBCodeItem) ? get_class($itemSearchRowBasicScheduleBCodeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicScheduleBCodeItem), var_export($itemSearchRowBasicScheduleBCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The scheduleBCode 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 scheduleBCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $scheduleBCode
     * @return \StructType\ItemSearchRowBasic
     */
    public function setScheduleBCode(array $scheduleBCode = array())
    {
        // validation for constraint: array
        if ('' !== ($scheduleBCodeArrayErrorMessage = self::validateScheduleBCodeForArrayConstraintsFromSetScheduleBCode($scheduleBCode))) {
            throw new \InvalidArgumentException($scheduleBCodeArrayErrorMessage, __LINE__);
        }
        $this->scheduleBCode = $scheduleBCode;
        return $this;
    }
    /**
     * Add item to scheduleBCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToScheduleBCode(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The scheduleBCode 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->scheduleBCode[] = $item;
        return $this;
    }
    /**
     * Get scheduleBNumber value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getScheduleBNumber()
    {
        return $this->scheduleBNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setScheduleBNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setScheduleBNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateScheduleBNumberForArrayConstraintsFromSetScheduleBNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicScheduleBNumberItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicScheduleBNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicScheduleBNumberItem) ? get_class($itemSearchRowBasicScheduleBNumberItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicScheduleBNumberItem), var_export($itemSearchRowBasicScheduleBNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The scheduleBNumber 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 scheduleBNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $scheduleBNumber
     * @return \StructType\ItemSearchRowBasic
     */
    public function setScheduleBNumber(array $scheduleBNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($scheduleBNumberArrayErrorMessage = self::validateScheduleBNumberForArrayConstraintsFromSetScheduleBNumber($scheduleBNumber))) {
            throw new \InvalidArgumentException($scheduleBNumberArrayErrorMessage, __LINE__);
        }
        $this->scheduleBNumber = $scheduleBNumber;
        return $this;
    }
    /**
     * Add item to scheduleBNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToScheduleBNumber(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The scheduleBNumber 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->scheduleBNumber[] = $item;
        return $this;
    }
    /**
     * Get scheduleBQuantity value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getScheduleBQuantity()
    {
        return $this->scheduleBQuantity;
    }
    /**
     * This method is responsible for validating the values passed to the setScheduleBQuantity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setScheduleBQuantity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateScheduleBQuantityForArrayConstraintsFromSetScheduleBQuantity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicScheduleBQuantityItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicScheduleBQuantityItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicScheduleBQuantityItem) ? get_class($itemSearchRowBasicScheduleBQuantityItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicScheduleBQuantityItem), var_export($itemSearchRowBasicScheduleBQuantityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The scheduleBQuantity 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 scheduleBQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $scheduleBQuantity
     * @return \StructType\ItemSearchRowBasic
     */
    public function setScheduleBQuantity(array $scheduleBQuantity = array())
    {
        // validation for constraint: array
        if ('' !== ($scheduleBQuantityArrayErrorMessage = self::validateScheduleBQuantityForArrayConstraintsFromSetScheduleBQuantity($scheduleBQuantity))) {
            throw new \InvalidArgumentException($scheduleBQuantityArrayErrorMessage, __LINE__);
        }
        $this->scheduleBQuantity = $scheduleBQuantity;
        return $this;
    }
    /**
     * Add item to scheduleBQuantity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToScheduleBQuantity(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The scheduleBQuantity 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->scheduleBQuantity[] = $item;
        return $this;
    }
    /**
     * Get scrapAcct value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getScrapAcct()
    {
        return $this->scrapAcct;
    }
    /**
     * This method is responsible for validating the values passed to the setScrapAcct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setScrapAcct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateScrapAcctForArrayConstraintsFromSetScrapAcct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicScrapAcctItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicScrapAcctItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicScrapAcctItem) ? get_class($itemSearchRowBasicScrapAcctItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicScrapAcctItem), var_export($itemSearchRowBasicScrapAcctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The scrapAcct 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 scrapAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $scrapAcct
     * @return \StructType\ItemSearchRowBasic
     */
    public function setScrapAcct(array $scrapAcct = array())
    {
        // validation for constraint: array
        if ('' !== ($scrapAcctArrayErrorMessage = self::validateScrapAcctForArrayConstraintsFromSetScrapAcct($scrapAcct))) {
            throw new \InvalidArgumentException($scrapAcctArrayErrorMessage, __LINE__);
        }
        $this->scrapAcct = $scrapAcct;
        return $this;
    }
    /**
     * Add item to scrapAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToScrapAcct(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The scrapAcct 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->scrapAcct[] = $item;
        return $this;
    }
    /**
     * Get searchKeywords value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSearchKeywords()
    {
        return $this->searchKeywords;
    }
    /**
     * This method is responsible for validating the values passed to the setSearchKeywords method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSearchKeywords method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSearchKeywordsForArrayConstraintsFromSetSearchKeywords(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSearchKeywordsItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSearchKeywordsItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicSearchKeywordsItem) ? get_class($itemSearchRowBasicSearchKeywordsItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSearchKeywordsItem), var_export($itemSearchRowBasicSearchKeywordsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The searchKeywords 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 searchKeywords value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $searchKeywords
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSearchKeywords(array $searchKeywords = array())
    {
        // validation for constraint: array
        if ('' !== ($searchKeywordsArrayErrorMessage = self::validateSearchKeywordsForArrayConstraintsFromSetSearchKeywords($searchKeywords))) {
            throw new \InvalidArgumentException($searchKeywordsArrayErrorMessage, __LINE__);
        }
        $this->searchKeywords = $searchKeywords;
        return $this;
    }
    /**
     * Add item to searchKeywords value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSearchKeywords(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The searchKeywords 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->searchKeywords[] = $item;
        return $this;
    }
    /**
     * Get seasonalDemand value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getSeasonalDemand()
    {
        return $this->seasonalDemand;
    }
    /**
     * This method is responsible for validating the values passed to the setSeasonalDemand method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSeasonalDemand method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSeasonalDemandForArrayConstraintsFromSetSeasonalDemand(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSeasonalDemandItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSeasonalDemandItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicSeasonalDemandItem) ? get_class($itemSearchRowBasicSeasonalDemandItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSeasonalDemandItem), var_export($itemSearchRowBasicSeasonalDemandItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The seasonalDemand 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 seasonalDemand value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $seasonalDemand
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSeasonalDemand(array $seasonalDemand = array())
    {
        // validation for constraint: array
        if ('' !== ($seasonalDemandArrayErrorMessage = self::validateSeasonalDemandForArrayConstraintsFromSetSeasonalDemand($seasonalDemand))) {
            throw new \InvalidArgumentException($seasonalDemandArrayErrorMessage, __LINE__);
        }
        $this->seasonalDemand = $seasonalDemand;
        return $this;
    }
    /**
     * Add item to seasonalDemand value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSeasonalDemand(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The seasonalDemand 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->seasonalDemand[] = $item;
        return $this;
    }
    /**
     * Get sellOnEBay value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getSellOnEBay()
    {
        return $this->sellOnEBay;
    }
    /**
     * This method is responsible for validating the values passed to the setSellOnEBay method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSellOnEBay method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSellOnEBayForArrayConstraintsFromSetSellOnEBay(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSellOnEBayItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSellOnEBayItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicSellOnEBayItem) ? get_class($itemSearchRowBasicSellOnEBayItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSellOnEBayItem), var_export($itemSearchRowBasicSellOnEBayItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The sellOnEBay 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 sellOnEBay value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $sellOnEBay
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSellOnEBay(array $sellOnEBay = array())
    {
        // validation for constraint: array
        if ('' !== ($sellOnEBayArrayErrorMessage = self::validateSellOnEBayForArrayConstraintsFromSetSellOnEBay($sellOnEBay))) {
            throw new \InvalidArgumentException($sellOnEBayArrayErrorMessage, __LINE__);
        }
        $this->sellOnEBay = $sellOnEBay;
        return $this;
    }
    /**
     * Add item to sellOnEBay value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSellOnEBay(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The sellOnEBay 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->sellOnEBay[] = $item;
        return $this;
    }
    /**
     * Get serialNumber value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSerialNumber()
    {
        return $this->serialNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setSerialNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSerialNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSerialNumberForArrayConstraintsFromSetSerialNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSerialNumberItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSerialNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicSerialNumberItem) ? get_class($itemSearchRowBasicSerialNumberItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSerialNumberItem), var_export($itemSearchRowBasicSerialNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The serialNumber 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 serialNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $serialNumber
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSerialNumber(array $serialNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($serialNumberArrayErrorMessage = self::validateSerialNumberForArrayConstraintsFromSetSerialNumber($serialNumber))) {
            throw new \InvalidArgumentException($serialNumberArrayErrorMessage, __LINE__);
        }
        $this->serialNumber = $serialNumber;
        return $this;
    }
    /**
     * Add item to serialNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSerialNumber(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The serialNumber 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->serialNumber[] = $item;
        return $this;
    }
    /**
     * Get serialNumberLocation value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSerialNumberLocation()
    {
        return $this->serialNumberLocation;
    }
    /**
     * This method is responsible for validating the values passed to the setSerialNumberLocation method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSerialNumberLocation method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSerialNumberLocationForArrayConstraintsFromSetSerialNumberLocation(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSerialNumberLocationItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSerialNumberLocationItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicSerialNumberLocationItem) ? get_class($itemSearchRowBasicSerialNumberLocationItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSerialNumberLocationItem), var_export($itemSearchRowBasicSerialNumberLocationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The serialNumberLocation 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 serialNumberLocation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $serialNumberLocation
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSerialNumberLocation(array $serialNumberLocation = array())
    {
        // validation for constraint: array
        if ('' !== ($serialNumberLocationArrayErrorMessage = self::validateSerialNumberLocationForArrayConstraintsFromSetSerialNumberLocation($serialNumberLocation))) {
            throw new \InvalidArgumentException($serialNumberLocationArrayErrorMessage, __LINE__);
        }
        $this->serialNumberLocation = $serialNumberLocation;
        return $this;
    }
    /**
     * Add item to serialNumberLocation value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSerialNumberLocation(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The serialNumberLocation 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->serialNumberLocation[] = $item;
        return $this;
    }
    /**
     * Get shipIndividually value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getShipIndividually()
    {
        return $this->shipIndividually;
    }
    /**
     * This method is responsible for validating the values passed to the setShipIndividually method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipIndividually method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipIndividuallyForArrayConstraintsFromSetShipIndividually(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicShipIndividuallyItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicShipIndividuallyItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicShipIndividuallyItem) ? get_class($itemSearchRowBasicShipIndividuallyItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicShipIndividuallyItem), var_export($itemSearchRowBasicShipIndividuallyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipIndividually 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 shipIndividually value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $shipIndividually
     * @return \StructType\ItemSearchRowBasic
     */
    public function setShipIndividually(array $shipIndividually = array())
    {
        // validation for constraint: array
        if ('' !== ($shipIndividuallyArrayErrorMessage = self::validateShipIndividuallyForArrayConstraintsFromSetShipIndividually($shipIndividually))) {
            throw new \InvalidArgumentException($shipIndividuallyArrayErrorMessage, __LINE__);
        }
        $this->shipIndividually = $shipIndividually;
        return $this;
    }
    /**
     * Add item to shipIndividually value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToShipIndividually(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The shipIndividually 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->shipIndividually[] = $item;
        return $this;
    }
    /**
     * Get shipPackage value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getShipPackage()
    {
        return $this->shipPackage;
    }
    /**
     * This method is responsible for validating the values passed to the setShipPackage method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShipPackage method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShipPackageForArrayConstraintsFromSetShipPackage(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicShipPackageItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicShipPackageItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicShipPackageItem) ? get_class($itemSearchRowBasicShipPackageItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicShipPackageItem), var_export($itemSearchRowBasicShipPackageItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shipPackage 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 shipPackage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $shipPackage
     * @return \StructType\ItemSearchRowBasic
     */
    public function setShipPackage(array $shipPackage = array())
    {
        // validation for constraint: array
        if ('' !== ($shipPackageArrayErrorMessage = self::validateShipPackageForArrayConstraintsFromSetShipPackage($shipPackage))) {
            throw new \InvalidArgumentException($shipPackageArrayErrorMessage, __LINE__);
        }
        $this->shipPackage = $shipPackage;
        return $this;
    }
    /**
     * Add item to shipPackage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToShipPackage(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The shipPackage 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->shipPackage[] = $item;
        return $this;
    }
    /**
     * Get shippingCarrier value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getShippingCarrier()
    {
        return $this->shippingCarrier;
    }
    /**
     * This method is responsible for validating the values passed to the setShippingCarrier method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShippingCarrier method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShippingCarrierForArrayConstraintsFromSetShippingCarrier(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicShippingCarrierItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicShippingCarrierItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicShippingCarrierItem) ? get_class($itemSearchRowBasicShippingCarrierItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicShippingCarrierItem), var_export($itemSearchRowBasicShippingCarrierItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shippingCarrier 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 shippingCarrier value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $shippingCarrier
     * @return \StructType\ItemSearchRowBasic
     */
    public function setShippingCarrier(array $shippingCarrier = array())
    {
        // validation for constraint: array
        if ('' !== ($shippingCarrierArrayErrorMessage = self::validateShippingCarrierForArrayConstraintsFromSetShippingCarrier($shippingCarrier))) {
            throw new \InvalidArgumentException($shippingCarrierArrayErrorMessage, __LINE__);
        }
        $this->shippingCarrier = $shippingCarrier;
        return $this;
    }
    /**
     * Add item to shippingCarrier value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToShippingCarrier(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The shippingCarrier 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->shippingCarrier[] = $item;
        return $this;
    }
    /**
     * Get shippingRate value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getShippingRate()
    {
        return $this->shippingRate;
    }
    /**
     * This method is responsible for validating the values passed to the setShippingRate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShippingRate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShippingRateForArrayConstraintsFromSetShippingRate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicShippingRateItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicShippingRateItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicShippingRateItem) ? get_class($itemSearchRowBasicShippingRateItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicShippingRateItem), var_export($itemSearchRowBasicShippingRateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shippingRate 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 shippingRate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $shippingRate
     * @return \StructType\ItemSearchRowBasic
     */
    public function setShippingRate(array $shippingRate = array())
    {
        // validation for constraint: array
        if ('' !== ($shippingRateArrayErrorMessage = self::validateShippingRateForArrayConstraintsFromSetShippingRate($shippingRate))) {
            throw new \InvalidArgumentException($shippingRateArrayErrorMessage, __LINE__);
        }
        $this->shippingRate = $shippingRate;
        return $this;
    }
    /**
     * Add item to shippingRate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToShippingRate(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The shippingRate 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->shippingRate[] = $item;
        return $this;
    }
    /**
     * Get shoppingDotComCategory value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getShoppingDotComCategory()
    {
        return $this->shoppingDotComCategory;
    }
    /**
     * This method is responsible for validating the values passed to the setShoppingDotComCategory method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShoppingDotComCategory method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShoppingDotComCategoryForArrayConstraintsFromSetShoppingDotComCategory(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicShoppingDotComCategoryItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicShoppingDotComCategoryItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicShoppingDotComCategoryItem) ? get_class($itemSearchRowBasicShoppingDotComCategoryItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicShoppingDotComCategoryItem), var_export($itemSearchRowBasicShoppingDotComCategoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shoppingDotComCategory 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 shoppingDotComCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $shoppingDotComCategory
     * @return \StructType\ItemSearchRowBasic
     */
    public function setShoppingDotComCategory(array $shoppingDotComCategory = array())
    {
        // validation for constraint: array
        if ('' !== ($shoppingDotComCategoryArrayErrorMessage = self::validateShoppingDotComCategoryForArrayConstraintsFromSetShoppingDotComCategory($shoppingDotComCategory))) {
            throw new \InvalidArgumentException($shoppingDotComCategoryArrayErrorMessage, __LINE__);
        }
        $this->shoppingDotComCategory = $shoppingDotComCategory;
        return $this;
    }
    /**
     * Add item to shoppingDotComCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToShoppingDotComCategory(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The shoppingDotComCategory 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->shoppingDotComCategory[] = $item;
        return $this;
    }
    /**
     * Get shoppingProductFeed value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getShoppingProductFeed()
    {
        return $this->shoppingProductFeed;
    }
    /**
     * This method is responsible for validating the values passed to the setShoppingProductFeed method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShoppingProductFeed method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShoppingProductFeedForArrayConstraintsFromSetShoppingProductFeed(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicShoppingProductFeedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicShoppingProductFeedItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicShoppingProductFeedItem) ? get_class($itemSearchRowBasicShoppingProductFeedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicShoppingProductFeedItem), var_export($itemSearchRowBasicShoppingProductFeedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shoppingProductFeed 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 shoppingProductFeed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $shoppingProductFeed
     * @return \StructType\ItemSearchRowBasic
     */
    public function setShoppingProductFeed(array $shoppingProductFeed = array())
    {
        // validation for constraint: array
        if ('' !== ($shoppingProductFeedArrayErrorMessage = self::validateShoppingProductFeedForArrayConstraintsFromSetShoppingProductFeed($shoppingProductFeed))) {
            throw new \InvalidArgumentException($shoppingProductFeedArrayErrorMessage, __LINE__);
        }
        $this->shoppingProductFeed = $shoppingProductFeed;
        return $this;
    }
    /**
     * Add item to shoppingProductFeed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToShoppingProductFeed(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The shoppingProductFeed 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->shoppingProductFeed[] = $item;
        return $this;
    }
    /**
     * Get shopzillaCategoryId value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getShopzillaCategoryId()
    {
        return $this->shopzillaCategoryId;
    }
    /**
     * This method is responsible for validating the values passed to the setShopzillaCategoryId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShopzillaCategoryId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShopzillaCategoryIdForArrayConstraintsFromSetShopzillaCategoryId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicShopzillaCategoryIdItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicShopzillaCategoryIdItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicShopzillaCategoryIdItem) ? get_class($itemSearchRowBasicShopzillaCategoryIdItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicShopzillaCategoryIdItem), var_export($itemSearchRowBasicShopzillaCategoryIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shopzillaCategoryId 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 shopzillaCategoryId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $shopzillaCategoryId
     * @return \StructType\ItemSearchRowBasic
     */
    public function setShopzillaCategoryId(array $shopzillaCategoryId = array())
    {
        // validation for constraint: array
        if ('' !== ($shopzillaCategoryIdArrayErrorMessage = self::validateShopzillaCategoryIdForArrayConstraintsFromSetShopzillaCategoryId($shopzillaCategoryId))) {
            throw new \InvalidArgumentException($shopzillaCategoryIdArrayErrorMessage, __LINE__);
        }
        $this->shopzillaCategoryId = $shopzillaCategoryId;
        return $this;
    }
    /**
     * Add item to shopzillaCategoryId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToShopzillaCategoryId(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The shopzillaCategoryId 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->shopzillaCategoryId[] = $item;
        return $this;
    }
    /**
     * Get shopzillaProductFeed value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getShopzillaProductFeed()
    {
        return $this->shopzillaProductFeed;
    }
    /**
     * This method is responsible for validating the values passed to the setShopzillaProductFeed method
     * This method is willingly generated in order to preserve the one-line inline validation within the setShopzillaProductFeed method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateShopzillaProductFeedForArrayConstraintsFromSetShopzillaProductFeed(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicShopzillaProductFeedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicShopzillaProductFeedItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicShopzillaProductFeedItem) ? get_class($itemSearchRowBasicShopzillaProductFeedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicShopzillaProductFeedItem), var_export($itemSearchRowBasicShopzillaProductFeedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The shopzillaProductFeed 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 shopzillaProductFeed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $shopzillaProductFeed
     * @return \StructType\ItemSearchRowBasic
     */
    public function setShopzillaProductFeed(array $shopzillaProductFeed = array())
    {
        // validation for constraint: array
        if ('' !== ($shopzillaProductFeedArrayErrorMessage = self::validateShopzillaProductFeedForArrayConstraintsFromSetShopzillaProductFeed($shopzillaProductFeed))) {
            throw new \InvalidArgumentException($shopzillaProductFeedArrayErrorMessage, __LINE__);
        }
        $this->shopzillaProductFeed = $shopzillaProductFeed;
        return $this;
    }
    /**
     * Add item to shopzillaProductFeed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToShopzillaProductFeed(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The shopzillaProductFeed 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->shopzillaProductFeed[] = $item;
        return $this;
    }
    /**
     * Get sitemapPriority value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getSitemapPriority()
    {
        return $this->sitemapPriority;
    }
    /**
     * This method is responsible for validating the values passed to the setSitemapPriority method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSitemapPriority method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSitemapPriorityForArrayConstraintsFromSetSitemapPriority(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSitemapPriorityItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSitemapPriorityItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicSitemapPriorityItem) ? get_class($itemSearchRowBasicSitemapPriorityItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSitemapPriorityItem), var_export($itemSearchRowBasicSitemapPriorityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The sitemapPriority 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 sitemapPriority value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $sitemapPriority
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSitemapPriority(array $sitemapPriority = array())
    {
        // validation for constraint: array
        if ('' !== ($sitemapPriorityArrayErrorMessage = self::validateSitemapPriorityForArrayConstraintsFromSetSitemapPriority($sitemapPriority))) {
            throw new \InvalidArgumentException($sitemapPriorityArrayErrorMessage, __LINE__);
        }
        $this->sitemapPriority = $sitemapPriority;
        return $this;
    }
    /**
     * Add item to sitemapPriority value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSitemapPriority(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The sitemapPriority 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->sitemapPriority[] = $item;
        return $this;
    }
    /**
     * Get softDescriptor value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSoftDescriptor()
    {
        return $this->softDescriptor;
    }
    /**
     * This method is responsible for validating the values passed to the setSoftDescriptor method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSoftDescriptor method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSoftDescriptorForArrayConstraintsFromSetSoftDescriptor(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSoftDescriptorItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSoftDescriptorItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicSoftDescriptorItem) ? get_class($itemSearchRowBasicSoftDescriptorItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSoftDescriptorItem), var_export($itemSearchRowBasicSoftDescriptorItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The softDescriptor 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 softDescriptor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $softDescriptor
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSoftDescriptor(array $softDescriptor = array())
    {
        // validation for constraint: array
        if ('' !== ($softDescriptorArrayErrorMessage = self::validateSoftDescriptorForArrayConstraintsFromSetSoftDescriptor($softDescriptor))) {
            throw new \InvalidArgumentException($softDescriptorArrayErrorMessage, __LINE__);
        }
        $this->softDescriptor = $softDescriptor;
        return $this;
    }
    /**
     * Add item to softDescriptor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSoftDescriptor(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The softDescriptor 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->softDescriptor[] = $item;
        return $this;
    }
    /**
     * Get startingPrice value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getStartingPrice()
    {
        return $this->startingPrice;
    }
    /**
     * This method is responsible for validating the values passed to the setStartingPrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStartingPrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStartingPriceForArrayConstraintsFromSetStartingPrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicStartingPriceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicStartingPriceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicStartingPriceItem) ? get_class($itemSearchRowBasicStartingPriceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicStartingPriceItem), var_export($itemSearchRowBasicStartingPriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The startingPrice 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 startingPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $startingPrice
     * @return \StructType\ItemSearchRowBasic
     */
    public function setStartingPrice(array $startingPrice = array())
    {
        // validation for constraint: array
        if ('' !== ($startingPriceArrayErrorMessage = self::validateStartingPriceForArrayConstraintsFromSetStartingPrice($startingPrice))) {
            throw new \InvalidArgumentException($startingPriceArrayErrorMessage, __LINE__);
        }
        $this->startingPrice = $startingPrice;
        return $this;
    }
    /**
     * Add item to startingPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToStartingPrice(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The startingPrice 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->startingPrice[] = $item;
        return $this;
    }
    /**
     * Get stockDescription value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getStockDescription()
    {
        return $this->stockDescription;
    }
    /**
     * This method is responsible for validating the values passed to the setStockDescription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStockDescription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStockDescriptionForArrayConstraintsFromSetStockDescription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicStockDescriptionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicStockDescriptionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicStockDescriptionItem) ? get_class($itemSearchRowBasicStockDescriptionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicStockDescriptionItem), var_export($itemSearchRowBasicStockDescriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The stockDescription 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 stockDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $stockDescription
     * @return \StructType\ItemSearchRowBasic
     */
    public function setStockDescription(array $stockDescription = array())
    {
        // validation for constraint: array
        if ('' !== ($stockDescriptionArrayErrorMessage = self::validateStockDescriptionForArrayConstraintsFromSetStockDescription($stockDescription))) {
            throw new \InvalidArgumentException($stockDescriptionArrayErrorMessage, __LINE__);
        }
        $this->stockDescription = $stockDescription;
        return $this;
    }
    /**
     * Add item to stockDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToStockDescription(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The stockDescription 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->stockDescription[] = $item;
        return $this;
    }
    /**
     * Get stockUnit value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getStockUnit()
    {
        return $this->stockUnit;
    }
    /**
     * This method is responsible for validating the values passed to the setStockUnit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStockUnit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStockUnitForArrayConstraintsFromSetStockUnit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicStockUnitItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicStockUnitItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicStockUnitItem) ? get_class($itemSearchRowBasicStockUnitItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicStockUnitItem), var_export($itemSearchRowBasicStockUnitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The stockUnit 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 stockUnit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $stockUnit
     * @return \StructType\ItemSearchRowBasic
     */
    public function setStockUnit(array $stockUnit = array())
    {
        // validation for constraint: array
        if ('' !== ($stockUnitArrayErrorMessage = self::validateStockUnitForArrayConstraintsFromSetStockUnit($stockUnit))) {
            throw new \InvalidArgumentException($stockUnitArrayErrorMessage, __LINE__);
        }
        $this->stockUnit = $stockUnit;
        return $this;
    }
    /**
     * Add item to stockUnit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToStockUnit(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The stockUnit 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->stockUnit[] = $item;
        return $this;
    }
    /**
     * Get storeDescription value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getStoreDescription()
    {
        return $this->storeDescription;
    }
    /**
     * This method is responsible for validating the values passed to the setStoreDescription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStoreDescription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStoreDescriptionForArrayConstraintsFromSetStoreDescription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicStoreDescriptionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicStoreDescriptionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicStoreDescriptionItem) ? get_class($itemSearchRowBasicStoreDescriptionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicStoreDescriptionItem), var_export($itemSearchRowBasicStoreDescriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The storeDescription 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 storeDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $storeDescription
     * @return \StructType\ItemSearchRowBasic
     */
    public function setStoreDescription(array $storeDescription = array())
    {
        // validation for constraint: array
        if ('' !== ($storeDescriptionArrayErrorMessage = self::validateStoreDescriptionForArrayConstraintsFromSetStoreDescription($storeDescription))) {
            throw new \InvalidArgumentException($storeDescriptionArrayErrorMessage, __LINE__);
        }
        $this->storeDescription = $storeDescription;
        return $this;
    }
    /**
     * Add item to storeDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToStoreDescription(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The storeDescription 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->storeDescription[] = $item;
        return $this;
    }
    /**
     * Get storeDetailedDescription value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getStoreDetailedDescription()
    {
        return $this->storeDetailedDescription;
    }
    /**
     * This method is responsible for validating the values passed to the setStoreDetailedDescription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStoreDetailedDescription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStoreDetailedDescriptionForArrayConstraintsFromSetStoreDetailedDescription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicStoreDetailedDescriptionItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicStoreDetailedDescriptionItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicStoreDetailedDescriptionItem) ? get_class($itemSearchRowBasicStoreDetailedDescriptionItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicStoreDetailedDescriptionItem), var_export($itemSearchRowBasicStoreDetailedDescriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The storeDetailedDescription 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 storeDetailedDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $storeDetailedDescription
     * @return \StructType\ItemSearchRowBasic
     */
    public function setStoreDetailedDescription(array $storeDetailedDescription = array())
    {
        // validation for constraint: array
        if ('' !== ($storeDetailedDescriptionArrayErrorMessage = self::validateStoreDetailedDescriptionForArrayConstraintsFromSetStoreDetailedDescription($storeDetailedDescription))) {
            throw new \InvalidArgumentException($storeDetailedDescriptionArrayErrorMessage, __LINE__);
        }
        $this->storeDetailedDescription = $storeDetailedDescription;
        return $this;
    }
    /**
     * Add item to storeDetailedDescription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToStoreDetailedDescription(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The storeDetailedDescription 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->storeDetailedDescription[] = $item;
        return $this;
    }
    /**
     * Get storeDisplayImage value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getStoreDisplayImage()
    {
        return $this->storeDisplayImage;
    }
    /**
     * This method is responsible for validating the values passed to the setStoreDisplayImage method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStoreDisplayImage method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStoreDisplayImageForArrayConstraintsFromSetStoreDisplayImage(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicStoreDisplayImageItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicStoreDisplayImageItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicStoreDisplayImageItem) ? get_class($itemSearchRowBasicStoreDisplayImageItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicStoreDisplayImageItem), var_export($itemSearchRowBasicStoreDisplayImageItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The storeDisplayImage 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 storeDisplayImage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $storeDisplayImage
     * @return \StructType\ItemSearchRowBasic
     */
    public function setStoreDisplayImage(array $storeDisplayImage = array())
    {
        // validation for constraint: array
        if ('' !== ($storeDisplayImageArrayErrorMessage = self::validateStoreDisplayImageForArrayConstraintsFromSetStoreDisplayImage($storeDisplayImage))) {
            throw new \InvalidArgumentException($storeDisplayImageArrayErrorMessage, __LINE__);
        }
        $this->storeDisplayImage = $storeDisplayImage;
        return $this;
    }
    /**
     * Add item to storeDisplayImage value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToStoreDisplayImage(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The storeDisplayImage 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->storeDisplayImage[] = $item;
        return $this;
    }
    /**
     * Get storeDisplayName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getStoreDisplayName()
    {
        return $this->storeDisplayName;
    }
    /**
     * This method is responsible for validating the values passed to the setStoreDisplayName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStoreDisplayName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStoreDisplayNameForArrayConstraintsFromSetStoreDisplayName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicStoreDisplayNameItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicStoreDisplayNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicStoreDisplayNameItem) ? get_class($itemSearchRowBasicStoreDisplayNameItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicStoreDisplayNameItem), var_export($itemSearchRowBasicStoreDisplayNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The storeDisplayName 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 storeDisplayName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $storeDisplayName
     * @return \StructType\ItemSearchRowBasic
     */
    public function setStoreDisplayName(array $storeDisplayName = array())
    {
        // validation for constraint: array
        if ('' !== ($storeDisplayNameArrayErrorMessage = self::validateStoreDisplayNameForArrayConstraintsFromSetStoreDisplayName($storeDisplayName))) {
            throw new \InvalidArgumentException($storeDisplayNameArrayErrorMessage, __LINE__);
        }
        $this->storeDisplayName = $storeDisplayName;
        return $this;
    }
    /**
     * Add item to storeDisplayName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToStoreDisplayName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The storeDisplayName 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->storeDisplayName[] = $item;
        return $this;
    }
    /**
     * Get storeDisplayThumbnail value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getStoreDisplayThumbnail()
    {
        return $this->storeDisplayThumbnail;
    }
    /**
     * This method is responsible for validating the values passed to the setStoreDisplayThumbnail method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStoreDisplayThumbnail method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStoreDisplayThumbnailForArrayConstraintsFromSetStoreDisplayThumbnail(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicStoreDisplayThumbnailItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicStoreDisplayThumbnailItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicStoreDisplayThumbnailItem) ? get_class($itemSearchRowBasicStoreDisplayThumbnailItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicStoreDisplayThumbnailItem), var_export($itemSearchRowBasicStoreDisplayThumbnailItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The storeDisplayThumbnail 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 storeDisplayThumbnail value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $storeDisplayThumbnail
     * @return \StructType\ItemSearchRowBasic
     */
    public function setStoreDisplayThumbnail(array $storeDisplayThumbnail = array())
    {
        // validation for constraint: array
        if ('' !== ($storeDisplayThumbnailArrayErrorMessage = self::validateStoreDisplayThumbnailForArrayConstraintsFromSetStoreDisplayThumbnail($storeDisplayThumbnail))) {
            throw new \InvalidArgumentException($storeDisplayThumbnailArrayErrorMessage, __LINE__);
        }
        $this->storeDisplayThumbnail = $storeDisplayThumbnail;
        return $this;
    }
    /**
     * Add item to storeDisplayThumbnail value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToStoreDisplayThumbnail(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The storeDisplayThumbnail 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->storeDisplayThumbnail[] = $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 $itemSearchRowBasicSubsidiaryItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSubsidiaryItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicSubsidiaryItem) ? get_class($itemSearchRowBasicSubsidiaryItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSubsidiaryItem), var_export($itemSearchRowBasicSubsidiaryItem, 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\ItemSearchRowBasic
     */
    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\ItemSearchRowBasic
     */
    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 subType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getSubType()
    {
        return $this->subType;
    }
    /**
     * This method is responsible for validating the values passed to the setSubType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSubType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSubTypeForArrayConstraintsFromSetSubType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSubTypeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSubTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicSubTypeItem) ? get_class($itemSearchRowBasicSubTypeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSubTypeItem), var_export($itemSearchRowBasicSubTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The subType 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 subType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $subType
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSubType(array $subType = array())
    {
        // validation for constraint: array
        if ('' !== ($subTypeArrayErrorMessage = self::validateSubTypeForArrayConstraintsFromSetSubType($subType))) {
            throw new \InvalidArgumentException($subTypeArrayErrorMessage, __LINE__);
        }
        $this->subType = $subType;
        return $this;
    }
    /**
     * Add item to subType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSubType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The subType 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->subType[] = $item;
        return $this;
    }
    /**
     * Get supplyLotSizingMethod value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getSupplyLotSizingMethod()
    {
        return $this->supplyLotSizingMethod;
    }
    /**
     * This method is responsible for validating the values passed to the setSupplyLotSizingMethod method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSupplyLotSizingMethod method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSupplyLotSizingMethodForArrayConstraintsFromSetSupplyLotSizingMethod(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSupplyLotSizingMethodItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSupplyLotSizingMethodItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicSupplyLotSizingMethodItem) ? get_class($itemSearchRowBasicSupplyLotSizingMethodItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSupplyLotSizingMethodItem), var_export($itemSearchRowBasicSupplyLotSizingMethodItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The supplyLotSizingMethod 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 supplyLotSizingMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $supplyLotSizingMethod
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSupplyLotSizingMethod(array $supplyLotSizingMethod = array())
    {
        // validation for constraint: array
        if ('' !== ($supplyLotSizingMethodArrayErrorMessage = self::validateSupplyLotSizingMethodForArrayConstraintsFromSetSupplyLotSizingMethod($supplyLotSizingMethod))) {
            throw new \InvalidArgumentException($supplyLotSizingMethodArrayErrorMessage, __LINE__);
        }
        $this->supplyLotSizingMethod = $supplyLotSizingMethod;
        return $this;
    }
    /**
     * Add item to supplyLotSizingMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSupplyLotSizingMethod(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The supplyLotSizingMethod 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->supplyLotSizingMethod[] = $item;
        return $this;
    }
    /**
     * Get supplyReplenishmentMethod value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getSupplyReplenishmentMethod()
    {
        return $this->supplyReplenishmentMethod;
    }
    /**
     * This method is responsible for validating the values passed to the setSupplyReplenishmentMethod method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSupplyReplenishmentMethod method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSupplyReplenishmentMethodForArrayConstraintsFromSetSupplyReplenishmentMethod(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSupplyReplenishmentMethodItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSupplyReplenishmentMethodItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicSupplyReplenishmentMethodItem) ? get_class($itemSearchRowBasicSupplyReplenishmentMethodItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSupplyReplenishmentMethodItem), var_export($itemSearchRowBasicSupplyReplenishmentMethodItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The supplyReplenishmentMethod 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 supplyReplenishmentMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $supplyReplenishmentMethod
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSupplyReplenishmentMethod(array $supplyReplenishmentMethod = array())
    {
        // validation for constraint: array
        if ('' !== ($supplyReplenishmentMethodArrayErrorMessage = self::validateSupplyReplenishmentMethodForArrayConstraintsFromSetSupplyReplenishmentMethod($supplyReplenishmentMethod))) {
            throw new \InvalidArgumentException($supplyReplenishmentMethodArrayErrorMessage, __LINE__);
        }
        $this->supplyReplenishmentMethod = $supplyReplenishmentMethod;
        return $this;
    }
    /**
     * Add item to supplyReplenishmentMethod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSupplyReplenishmentMethod(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The supplyReplenishmentMethod 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->supplyReplenishmentMethod[] = $item;
        return $this;
    }
    /**
     * Get supplyTimeFence value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getSupplyTimeFence()
    {
        return $this->supplyTimeFence;
    }
    /**
     * This method is responsible for validating the values passed to the setSupplyTimeFence method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSupplyTimeFence method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSupplyTimeFenceForArrayConstraintsFromSetSupplyTimeFence(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSupplyTimeFenceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSupplyTimeFenceItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($itemSearchRowBasicSupplyTimeFenceItem) ? get_class($itemSearchRowBasicSupplyTimeFenceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSupplyTimeFenceItem), var_export($itemSearchRowBasicSupplyTimeFenceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The supplyTimeFence 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 supplyTimeFence value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $supplyTimeFence
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSupplyTimeFence(array $supplyTimeFence = array())
    {
        // validation for constraint: array
        if ('' !== ($supplyTimeFenceArrayErrorMessage = self::validateSupplyTimeFenceForArrayConstraintsFromSetSupplyTimeFence($supplyTimeFence))) {
            throw new \InvalidArgumentException($supplyTimeFenceArrayErrorMessage, __LINE__);
        }
        $this->supplyTimeFence = $supplyTimeFence;
        return $this;
    }
    /**
     * Add item to supplyTimeFence value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSupplyTimeFence(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The supplyTimeFence 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->supplyTimeFence[] = $item;
        return $this;
    }
    /**
     * Get supplyType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getSupplyType()
    {
        return $this->supplyType;
    }
    /**
     * This method is responsible for validating the values passed to the setSupplyType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSupplyType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSupplyTypeForArrayConstraintsFromSetSupplyType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicSupplyTypeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicSupplyTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicSupplyTypeItem) ? get_class($itemSearchRowBasicSupplyTypeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicSupplyTypeItem), var_export($itemSearchRowBasicSupplyTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The supplyType 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 supplyType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $supplyType
     * @return \StructType\ItemSearchRowBasic
     */
    public function setSupplyType(array $supplyType = array())
    {
        // validation for constraint: array
        if ('' !== ($supplyTypeArrayErrorMessage = self::validateSupplyTypeForArrayConstraintsFromSetSupplyType($supplyType))) {
            throw new \InvalidArgumentException($supplyTypeArrayErrorMessage, __LINE__);
        }
        $this->supplyType = $supplyType;
        return $this;
    }
    /**
     * Add item to supplyType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToSupplyType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The supplyType 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->supplyType[] = $item;
        return $this;
    }
    /**
     * Get taxSchedule value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getTaxSchedule()
    {
        return $this->taxSchedule;
    }
    /**
     * This method is responsible for validating the values passed to the setTaxSchedule method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTaxSchedule method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTaxScheduleForArrayConstraintsFromSetTaxSchedule(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicTaxScheduleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicTaxScheduleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicTaxScheduleItem) ? get_class($itemSearchRowBasicTaxScheduleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicTaxScheduleItem), var_export($itemSearchRowBasicTaxScheduleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The taxSchedule 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 taxSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $taxSchedule
     * @return \StructType\ItemSearchRowBasic
     */
    public function setTaxSchedule(array $taxSchedule = array())
    {
        // validation for constraint: array
        if ('' !== ($taxScheduleArrayErrorMessage = self::validateTaxScheduleForArrayConstraintsFromSetTaxSchedule($taxSchedule))) {
            throw new \InvalidArgumentException($taxScheduleArrayErrorMessage, __LINE__);
        }
        $this->taxSchedule = $taxSchedule;
        return $this;
    }
    /**
     * Add item to taxSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToTaxSchedule(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The taxSchedule 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->taxSchedule[] = $item;
        return $this;
    }
    /**
     * Get thumbNailUrl value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getThumbNailUrl()
    {
        return $this->thumbNailUrl;
    }
    /**
     * This method is responsible for validating the values passed to the setThumbNailUrl method
     * This method is willingly generated in order to preserve the one-line inline validation within the setThumbNailUrl method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateThumbNailUrlForArrayConstraintsFromSetThumbNailUrl(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicThumbNailUrlItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicThumbNailUrlItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicThumbNailUrlItem) ? get_class($itemSearchRowBasicThumbNailUrlItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicThumbNailUrlItem), var_export($itemSearchRowBasicThumbNailUrlItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The thumbNailUrl 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 thumbNailUrl value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $thumbNailUrl
     * @return \StructType\ItemSearchRowBasic
     */
    public function setThumbNailUrl(array $thumbNailUrl = array())
    {
        // validation for constraint: array
        if ('' !== ($thumbNailUrlArrayErrorMessage = self::validateThumbNailUrlForArrayConstraintsFromSetThumbNailUrl($thumbNailUrl))) {
            throw new \InvalidArgumentException($thumbNailUrlArrayErrorMessage, __LINE__);
        }
        $this->thumbNailUrl = $thumbNailUrl;
        return $this;
    }
    /**
     * Add item to thumbNailUrl value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToThumbNailUrl(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The thumbNailUrl 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->thumbNailUrl[] = $item;
        return $this;
    }
    /**
     * Get totalValue value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getTotalValue()
    {
        return $this->totalValue;
    }
    /**
     * This method is responsible for validating the values passed to the setTotalValue method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTotalValue method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTotalValueForArrayConstraintsFromSetTotalValue(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicTotalValueItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicTotalValueItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicTotalValueItem) ? get_class($itemSearchRowBasicTotalValueItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicTotalValueItem), var_export($itemSearchRowBasicTotalValueItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The totalValue 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 totalValue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $totalValue
     * @return \StructType\ItemSearchRowBasic
     */
    public function setTotalValue(array $totalValue = array())
    {
        // validation for constraint: array
        if ('' !== ($totalValueArrayErrorMessage = self::validateTotalValueForArrayConstraintsFromSetTotalValue($totalValue))) {
            throw new \InvalidArgumentException($totalValueArrayErrorMessage, __LINE__);
        }
        $this->totalValue = $totalValue;
        return $this;
    }
    /**
     * Add item to totalValue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToTotalValue(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The totalValue 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->totalValue[] = $item;
        return $this;
    }
    /**
     * Get trackLandedCost value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getTrackLandedCost()
    {
        return $this->trackLandedCost;
    }
    /**
     * This method is responsible for validating the values passed to the setTrackLandedCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTrackLandedCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTrackLandedCostForArrayConstraintsFromSetTrackLandedCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicTrackLandedCostItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicTrackLandedCostItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicTrackLandedCostItem) ? get_class($itemSearchRowBasicTrackLandedCostItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicTrackLandedCostItem), var_export($itemSearchRowBasicTrackLandedCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The trackLandedCost 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 trackLandedCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $trackLandedCost
     * @return \StructType\ItemSearchRowBasic
     */
    public function setTrackLandedCost(array $trackLandedCost = array())
    {
        // validation for constraint: array
        if ('' !== ($trackLandedCostArrayErrorMessage = self::validateTrackLandedCostForArrayConstraintsFromSetTrackLandedCost($trackLandedCost))) {
            throw new \InvalidArgumentException($trackLandedCostArrayErrorMessage, __LINE__);
        }
        $this->trackLandedCost = $trackLandedCost;
        return $this;
    }
    /**
     * Add item to trackLandedCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToTrackLandedCost(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The trackLandedCost 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->trackLandedCost[] = $item;
        return $this;
    }
    /**
     * Get transferPrice value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getTransferPrice()
    {
        return $this->transferPrice;
    }
    /**
     * This method is responsible for validating the values passed to the setTransferPrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTransferPrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTransferPriceForArrayConstraintsFromSetTransferPrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicTransferPriceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicTransferPriceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicTransferPriceItem) ? get_class($itemSearchRowBasicTransferPriceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicTransferPriceItem), var_export($itemSearchRowBasicTransferPriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The transferPrice 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 transferPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $transferPrice
     * @return \StructType\ItemSearchRowBasic
     */
    public function setTransferPrice(array $transferPrice = array())
    {
        // validation for constraint: array
        if ('' !== ($transferPriceArrayErrorMessage = self::validateTransferPriceForArrayConstraintsFromSetTransferPrice($transferPrice))) {
            throw new \InvalidArgumentException($transferPriceArrayErrorMessage, __LINE__);
        }
        $this->transferPrice = $transferPrice;
        return $this;
    }
    /**
     * Add item to transferPrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToTransferPrice(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The transferPrice 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->transferPrice[] = $item;
        return $this;
    }
    /**
     * Get type value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getType()
    {
        return $this->type;
    }
    /**
     * This method is responsible for validating the values passed to the setType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTypeForArrayConstraintsFromSetType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicTypeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicTypeItem) ? get_class($itemSearchRowBasicTypeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicTypeItem), var_export($itemSearchRowBasicTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The type 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 type value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $type
     * @return \StructType\ItemSearchRowBasic
     */
    public function setType(array $type = array())
    {
        // validation for constraint: array
        if ('' !== ($typeArrayErrorMessage = self::validateTypeForArrayConstraintsFromSetType($type))) {
            throw new \InvalidArgumentException($typeArrayErrorMessage, __LINE__);
        }
        $this->type = $type;
        return $this;
    }
    /**
     * Add item to type value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The type 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->type[] = $item;
        return $this;
    }
    /**
     * Get unbuildVarianceAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getUnbuildVarianceAccount()
    {
        return $this->unbuildVarianceAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setUnbuildVarianceAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUnbuildVarianceAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUnbuildVarianceAccountForArrayConstraintsFromSetUnbuildVarianceAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicUnbuildVarianceAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicUnbuildVarianceAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicUnbuildVarianceAccountItem) ? get_class($itemSearchRowBasicUnbuildVarianceAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicUnbuildVarianceAccountItem), var_export($itemSearchRowBasicUnbuildVarianceAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The unbuildVarianceAccount 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 unbuildVarianceAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $unbuildVarianceAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setUnbuildVarianceAccount(array $unbuildVarianceAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($unbuildVarianceAccountArrayErrorMessage = self::validateUnbuildVarianceAccountForArrayConstraintsFromSetUnbuildVarianceAccount($unbuildVarianceAccount))) {
            throw new \InvalidArgumentException($unbuildVarianceAccountArrayErrorMessage, __LINE__);
        }
        $this->unbuildVarianceAccount = $unbuildVarianceAccount;
        return $this;
    }
    /**
     * Add item to unbuildVarianceAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToUnbuildVarianceAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The unbuildVarianceAccount 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->unbuildVarianceAccount[] = $item;
        return $this;
    }
    /**
     * Get unitsType value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getUnitsType()
    {
        return $this->unitsType;
    }
    /**
     * This method is responsible for validating the values passed to the setUnitsType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUnitsType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUnitsTypeForArrayConstraintsFromSetUnitsType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicUnitsTypeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicUnitsTypeItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicUnitsTypeItem) ? get_class($itemSearchRowBasicUnitsTypeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicUnitsTypeItem), var_export($itemSearchRowBasicUnitsTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The unitsType 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 unitsType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $unitsType
     * @return \StructType\ItemSearchRowBasic
     */
    public function setUnitsType(array $unitsType = array())
    {
        // validation for constraint: array
        if ('' !== ($unitsTypeArrayErrorMessage = self::validateUnitsTypeForArrayConstraintsFromSetUnitsType($unitsType))) {
            throw new \InvalidArgumentException($unitsTypeArrayErrorMessage, __LINE__);
        }
        $this->unitsType = $unitsType;
        return $this;
    }
    /**
     * Add item to unitsType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToUnitsType(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The unitsType 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->unitsType[] = $item;
        return $this;
    }
    /**
     * Get upcCode value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getUpcCode()
    {
        return $this->upcCode;
    }
    /**
     * This method is responsible for validating the values passed to the setUpcCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUpcCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUpcCodeForArrayConstraintsFromSetUpcCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicUpcCodeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicUpcCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicUpcCodeItem) ? get_class($itemSearchRowBasicUpcCodeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicUpcCodeItem), var_export($itemSearchRowBasicUpcCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The upcCode 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 upcCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $upcCode
     * @return \StructType\ItemSearchRowBasic
     */
    public function setUpcCode(array $upcCode = array())
    {
        // validation for constraint: array
        if ('' !== ($upcCodeArrayErrorMessage = self::validateUpcCodeForArrayConstraintsFromSetUpcCode($upcCode))) {
            throw new \InvalidArgumentException($upcCodeArrayErrorMessage, __LINE__);
        }
        $this->upcCode = $upcCode;
        return $this;
    }
    /**
     * Add item to upcCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToUpcCode(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The upcCode 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->upcCode[] = $item;
        return $this;
    }
    /**
     * Get urlComponent value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getUrlComponent()
    {
        return $this->urlComponent;
    }
    /**
     * This method is responsible for validating the values passed to the setUrlComponent method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUrlComponent method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUrlComponentForArrayConstraintsFromSetUrlComponent(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicUrlComponentItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicUrlComponentItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicUrlComponentItem) ? get_class($itemSearchRowBasicUrlComponentItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicUrlComponentItem), var_export($itemSearchRowBasicUrlComponentItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The urlComponent 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 urlComponent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $urlComponent
     * @return \StructType\ItemSearchRowBasic
     */
    public function setUrlComponent(array $urlComponent = array())
    {
        // validation for constraint: array
        if ('' !== ($urlComponentArrayErrorMessage = self::validateUrlComponentForArrayConstraintsFromSetUrlComponent($urlComponent))) {
            throw new \InvalidArgumentException($urlComponentArrayErrorMessage, __LINE__);
        }
        $this->urlComponent = $urlComponent;
        return $this;
    }
    /**
     * Add item to urlComponent value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToUrlComponent(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The urlComponent 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->urlComponent[] = $item;
        return $this;
    }
    /**
     * Get useBins value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getUseBins()
    {
        return $this->useBins;
    }
    /**
     * This method is responsible for validating the values passed to the setUseBins method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUseBins method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUseBinsForArrayConstraintsFromSetUseBins(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicUseBinsItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicUseBinsItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicUseBinsItem) ? get_class($itemSearchRowBasicUseBinsItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicUseBinsItem), var_export($itemSearchRowBasicUseBinsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The useBins 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 useBins value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $useBins
     * @return \StructType\ItemSearchRowBasic
     */
    public function setUseBins(array $useBins = array())
    {
        // validation for constraint: array
        if ('' !== ($useBinsArrayErrorMessage = self::validateUseBinsForArrayConstraintsFromSetUseBins($useBins))) {
            throw new \InvalidArgumentException($useBinsArrayErrorMessage, __LINE__);
        }
        $this->useBins = $useBins;
        return $this;
    }
    /**
     * Add item to useBins value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToUseBins(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The useBins 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->useBins[] = $item;
        return $this;
    }
    /**
     * Get useComponentYield value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getUseComponentYield()
    {
        return $this->useComponentYield;
    }
    /**
     * This method is responsible for validating the values passed to the setUseComponentYield method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUseComponentYield method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUseComponentYieldForArrayConstraintsFromSetUseComponentYield(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicUseComponentYieldItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicUseComponentYieldItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicUseComponentYieldItem) ? get_class($itemSearchRowBasicUseComponentYieldItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicUseComponentYieldItem), var_export($itemSearchRowBasicUseComponentYieldItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The useComponentYield 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 useComponentYield value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $useComponentYield
     * @return \StructType\ItemSearchRowBasic
     */
    public function setUseComponentYield(array $useComponentYield = array())
    {
        // validation for constraint: array
        if ('' !== ($useComponentYieldArrayErrorMessage = self::validateUseComponentYieldForArrayConstraintsFromSetUseComponentYield($useComponentYield))) {
            throw new \InvalidArgumentException($useComponentYieldArrayErrorMessage, __LINE__);
        }
        $this->useComponentYield = $useComponentYield;
        return $this;
    }
    /**
     * Add item to useComponentYield value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToUseComponentYield(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The useComponentYield 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->useComponentYield[] = $item;
        return $this;
    }
    /**
     * Get useMarginalRates value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getUseMarginalRates()
    {
        return $this->useMarginalRates;
    }
    /**
     * This method is responsible for validating the values passed to the setUseMarginalRates method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUseMarginalRates method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUseMarginalRatesForArrayConstraintsFromSetUseMarginalRates(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicUseMarginalRatesItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicUseMarginalRatesItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicUseMarginalRatesItem) ? get_class($itemSearchRowBasicUseMarginalRatesItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicUseMarginalRatesItem), var_export($itemSearchRowBasicUseMarginalRatesItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The useMarginalRates 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 useMarginalRates value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $useMarginalRates
     * @return \StructType\ItemSearchRowBasic
     */
    public function setUseMarginalRates(array $useMarginalRates = array())
    {
        // validation for constraint: array
        if ('' !== ($useMarginalRatesArrayErrorMessage = self::validateUseMarginalRatesForArrayConstraintsFromSetUseMarginalRates($useMarginalRates))) {
            throw new \InvalidArgumentException($useMarginalRatesArrayErrorMessage, __LINE__);
        }
        $this->useMarginalRates = $useMarginalRates;
        return $this;
    }
    /**
     * Add item to useMarginalRates value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToUseMarginalRates(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The useMarginalRates 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->useMarginalRates[] = $item;
        return $this;
    }
    /**
     * Get vendor value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getVendor()
    {
        return $this->vendor;
    }
    /**
     * This method is responsible for validating the values passed to the setVendor method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVendor method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVendorForArrayConstraintsFromSetVendor(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVendorItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVendorItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicVendorItem) ? get_class($itemSearchRowBasicVendorItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVendorItem), var_export($itemSearchRowBasicVendorItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vendor 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 vendor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $vendor
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVendor(array $vendor = array())
    {
        // validation for constraint: array
        if ('' !== ($vendorArrayErrorMessage = self::validateVendorForArrayConstraintsFromSetVendor($vendor))) {
            throw new \InvalidArgumentException($vendorArrayErrorMessage, __LINE__);
        }
        $this->vendor = $vendor;
        return $this;
    }
    /**
     * Add item to vendor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVendor(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The vendor 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->vendor[] = $item;
        return $this;
    }
    /**
     * Get vendorCode value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getVendorCode()
    {
        return $this->vendorCode;
    }
    /**
     * This method is responsible for validating the values passed to the setVendorCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVendorCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVendorCodeForArrayConstraintsFromSetVendorCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVendorCodeItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVendorCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicVendorCodeItem) ? get_class($itemSearchRowBasicVendorCodeItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVendorCodeItem), var_export($itemSearchRowBasicVendorCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vendorCode 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 vendorCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $vendorCode
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVendorCode(array $vendorCode = array())
    {
        // validation for constraint: array
        if ('' !== ($vendorCodeArrayErrorMessage = self::validateVendorCodeForArrayConstraintsFromSetVendorCode($vendorCode))) {
            throw new \InvalidArgumentException($vendorCodeArrayErrorMessage, __LINE__);
        }
        $this->vendorCode = $vendorCode;
        return $this;
    }
    /**
     * Add item to vendorCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVendorCode(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The vendorCode 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->vendorCode[] = $item;
        return $this;
    }
    /**
     * Get vendorCost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getVendorCost()
    {
        return $this->vendorCost;
    }
    /**
     * This method is responsible for validating the values passed to the setVendorCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVendorCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVendorCostForArrayConstraintsFromSetVendorCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVendorCostItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVendorCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicVendorCostItem) ? get_class($itemSearchRowBasicVendorCostItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVendorCostItem), var_export($itemSearchRowBasicVendorCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vendorCost 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 vendorCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $vendorCost
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVendorCost(array $vendorCost = array())
    {
        // validation for constraint: array
        if ('' !== ($vendorCostArrayErrorMessage = self::validateVendorCostForArrayConstraintsFromSetVendorCost($vendorCost))) {
            throw new \InvalidArgumentException($vendorCostArrayErrorMessage, __LINE__);
        }
        $this->vendorCost = $vendorCost;
        return $this;
    }
    /**
     * Add item to vendorCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVendorCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The vendorCost 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->vendorCost[] = $item;
        return $this;
    }
    /**
     * Get vendorCostEntered value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getVendorCostEntered()
    {
        return $this->vendorCostEntered;
    }
    /**
     * This method is responsible for validating the values passed to the setVendorCostEntered method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVendorCostEntered method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVendorCostEnteredForArrayConstraintsFromSetVendorCostEntered(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVendorCostEnteredItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVendorCostEnteredItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicVendorCostEnteredItem) ? get_class($itemSearchRowBasicVendorCostEnteredItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVendorCostEnteredItem), var_export($itemSearchRowBasicVendorCostEnteredItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vendorCostEntered 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 vendorCostEntered value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $vendorCostEntered
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVendorCostEntered(array $vendorCostEntered = array())
    {
        // validation for constraint: array
        if ('' !== ($vendorCostEnteredArrayErrorMessage = self::validateVendorCostEnteredForArrayConstraintsFromSetVendorCostEntered($vendorCostEntered))) {
            throw new \InvalidArgumentException($vendorCostEnteredArrayErrorMessage, __LINE__);
        }
        $this->vendorCostEntered = $vendorCostEntered;
        return $this;
    }
    /**
     * Add item to vendorCostEntered value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVendorCostEntered(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The vendorCostEntered 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->vendorCostEntered[] = $item;
        return $this;
    }
    /**
     * Get vendorName value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getVendorName()
    {
        return $this->vendorName;
    }
    /**
     * This method is responsible for validating the values passed to the setVendorName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVendorName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVendorNameForArrayConstraintsFromSetVendorName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVendorNameItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVendorNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicVendorNameItem) ? get_class($itemSearchRowBasicVendorNameItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVendorNameItem), var_export($itemSearchRowBasicVendorNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vendorName 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 vendorName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $vendorName
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVendorName(array $vendorName = array())
    {
        // validation for constraint: array
        if ('' !== ($vendorNameArrayErrorMessage = self::validateVendorNameForArrayConstraintsFromSetVendorName($vendorName))) {
            throw new \InvalidArgumentException($vendorNameArrayErrorMessage, __LINE__);
        }
        $this->vendorName = $vendorName;
        return $this;
    }
    /**
     * Add item to vendorName value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVendorName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The vendorName 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->vendorName[] = $item;
        return $this;
    }
    /**
     * Get vendorPriceCurrency value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getVendorPriceCurrency()
    {
        return $this->vendorPriceCurrency;
    }
    /**
     * This method is responsible for validating the values passed to the setVendorPriceCurrency method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVendorPriceCurrency method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVendorPriceCurrencyForArrayConstraintsFromSetVendorPriceCurrency(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVendorPriceCurrencyItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVendorPriceCurrencyItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($itemSearchRowBasicVendorPriceCurrencyItem) ? get_class($itemSearchRowBasicVendorPriceCurrencyItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVendorPriceCurrencyItem), var_export($itemSearchRowBasicVendorPriceCurrencyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vendorPriceCurrency 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 vendorPriceCurrency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $vendorPriceCurrency
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVendorPriceCurrency(array $vendorPriceCurrency = array())
    {
        // validation for constraint: array
        if ('' !== ($vendorPriceCurrencyArrayErrorMessage = self::validateVendorPriceCurrencyForArrayConstraintsFromSetVendorPriceCurrency($vendorPriceCurrency))) {
            throw new \InvalidArgumentException($vendorPriceCurrencyArrayErrorMessage, __LINE__);
        }
        $this->vendorPriceCurrency = $vendorPriceCurrency;
        return $this;
    }
    /**
     * Add item to vendorPriceCurrency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVendorPriceCurrency(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The vendorPriceCurrency 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->vendorPriceCurrency[] = $item;
        return $this;
    }
    /**
     * Get vendorSchedule value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getVendorSchedule()
    {
        return $this->vendorSchedule;
    }
    /**
     * This method is responsible for validating the values passed to the setVendorSchedule method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVendorSchedule method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVendorScheduleForArrayConstraintsFromSetVendorSchedule(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVendorScheduleItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVendorScheduleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicVendorScheduleItem) ? get_class($itemSearchRowBasicVendorScheduleItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVendorScheduleItem), var_export($itemSearchRowBasicVendorScheduleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vendorSchedule 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 vendorSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $vendorSchedule
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVendorSchedule(array $vendorSchedule = array())
    {
        // validation for constraint: array
        if ('' !== ($vendorScheduleArrayErrorMessage = self::validateVendorScheduleForArrayConstraintsFromSetVendorSchedule($vendorSchedule))) {
            throw new \InvalidArgumentException($vendorScheduleArrayErrorMessage, __LINE__);
        }
        $this->vendorSchedule = $vendorSchedule;
        return $this;
    }
    /**
     * Add item to vendorSchedule value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVendorSchedule(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The vendorSchedule 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->vendorSchedule[] = $item;
        return $this;
    }
    /**
     * Get vendReturnVarianceAccount value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getVendReturnVarianceAccount()
    {
        return $this->vendReturnVarianceAccount;
    }
    /**
     * This method is responsible for validating the values passed to the setVendReturnVarianceAccount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVendReturnVarianceAccount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVendReturnVarianceAccountForArrayConstraintsFromSetVendReturnVarianceAccount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVendReturnVarianceAccountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVendReturnVarianceAccountItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicVendReturnVarianceAccountItem) ? get_class($itemSearchRowBasicVendReturnVarianceAccountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVendReturnVarianceAccountItem), var_export($itemSearchRowBasicVendReturnVarianceAccountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vendReturnVarianceAccount 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 vendReturnVarianceAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $vendReturnVarianceAccount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVendReturnVarianceAccount(array $vendReturnVarianceAccount = array())
    {
        // validation for constraint: array
        if ('' !== ($vendReturnVarianceAccountArrayErrorMessage = self::validateVendReturnVarianceAccountForArrayConstraintsFromSetVendReturnVarianceAccount($vendReturnVarianceAccount))) {
            throw new \InvalidArgumentException($vendReturnVarianceAccountArrayErrorMessage, __LINE__);
        }
        $this->vendReturnVarianceAccount = $vendReturnVarianceAccount;
        return $this;
    }
    /**
     * Add item to vendReturnVarianceAccount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVendReturnVarianceAccount(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The vendReturnVarianceAccount 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->vendReturnVarianceAccount[] = $item;
        return $this;
    }
    /**
     * Get vsoeDeferral value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getVsoeDeferral()
    {
        return $this->vsoeDeferral;
    }
    /**
     * This method is responsible for validating the values passed to the setVsoeDeferral method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVsoeDeferral method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVsoeDeferralForArrayConstraintsFromSetVsoeDeferral(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVsoeDeferralItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVsoeDeferralItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicVsoeDeferralItem) ? get_class($itemSearchRowBasicVsoeDeferralItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVsoeDeferralItem), var_export($itemSearchRowBasicVsoeDeferralItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vsoeDeferral 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 vsoeDeferral value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $vsoeDeferral
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVsoeDeferral(array $vsoeDeferral = array())
    {
        // validation for constraint: array
        if ('' !== ($vsoeDeferralArrayErrorMessage = self::validateVsoeDeferralForArrayConstraintsFromSetVsoeDeferral($vsoeDeferral))) {
            throw new \InvalidArgumentException($vsoeDeferralArrayErrorMessage, __LINE__);
        }
        $this->vsoeDeferral = $vsoeDeferral;
        return $this;
    }
    /**
     * Add item to vsoeDeferral value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVsoeDeferral(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The vsoeDeferral 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->vsoeDeferral[] = $item;
        return $this;
    }
    /**
     * Get vsoeDelivered value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getVsoeDelivered()
    {
        return $this->vsoeDelivered;
    }
    /**
     * This method is responsible for validating the values passed to the setVsoeDelivered method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVsoeDelivered method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVsoeDeliveredForArrayConstraintsFromSetVsoeDelivered(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVsoeDeliveredItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVsoeDeliveredItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicVsoeDeliveredItem) ? get_class($itemSearchRowBasicVsoeDeliveredItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVsoeDeliveredItem), var_export($itemSearchRowBasicVsoeDeliveredItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vsoeDelivered 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 vsoeDelivered value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $vsoeDelivered
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVsoeDelivered(array $vsoeDelivered = array())
    {
        // validation for constraint: array
        if ('' !== ($vsoeDeliveredArrayErrorMessage = self::validateVsoeDeliveredForArrayConstraintsFromSetVsoeDelivered($vsoeDelivered))) {
            throw new \InvalidArgumentException($vsoeDeliveredArrayErrorMessage, __LINE__);
        }
        $this->vsoeDelivered = $vsoeDelivered;
        return $this;
    }
    /**
     * Add item to vsoeDelivered value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVsoeDelivered(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The vsoeDelivered 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->vsoeDelivered[] = $item;
        return $this;
    }
    /**
     * Get vsoePermitDiscount value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getVsoePermitDiscount()
    {
        return $this->vsoePermitDiscount;
    }
    /**
     * This method is responsible for validating the values passed to the setVsoePermitDiscount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVsoePermitDiscount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVsoePermitDiscountForArrayConstraintsFromSetVsoePermitDiscount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVsoePermitDiscountItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVsoePermitDiscountItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicVsoePermitDiscountItem) ? get_class($itemSearchRowBasicVsoePermitDiscountItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVsoePermitDiscountItem), var_export($itemSearchRowBasicVsoePermitDiscountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vsoePermitDiscount 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 vsoePermitDiscount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $vsoePermitDiscount
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVsoePermitDiscount(array $vsoePermitDiscount = array())
    {
        // validation for constraint: array
        if ('' !== ($vsoePermitDiscountArrayErrorMessage = self::validateVsoePermitDiscountForArrayConstraintsFromSetVsoePermitDiscount($vsoePermitDiscount))) {
            throw new \InvalidArgumentException($vsoePermitDiscountArrayErrorMessage, __LINE__);
        }
        $this->vsoePermitDiscount = $vsoePermitDiscount;
        return $this;
    }
    /**
     * Add item to vsoePermitDiscount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVsoePermitDiscount(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The vsoePermitDiscount 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->vsoePermitDiscount[] = $item;
        return $this;
    }
    /**
     * Get vsoePrice value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getVsoePrice()
    {
        return $this->vsoePrice;
    }
    /**
     * This method is responsible for validating the values passed to the setVsoePrice method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVsoePrice method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVsoePriceForArrayConstraintsFromSetVsoePrice(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVsoePriceItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVsoePriceItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicVsoePriceItem) ? get_class($itemSearchRowBasicVsoePriceItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVsoePriceItem), var_export($itemSearchRowBasicVsoePriceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vsoePrice 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 vsoePrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $vsoePrice
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVsoePrice(array $vsoePrice = array())
    {
        // validation for constraint: array
        if ('' !== ($vsoePriceArrayErrorMessage = self::validateVsoePriceForArrayConstraintsFromSetVsoePrice($vsoePrice))) {
            throw new \InvalidArgumentException($vsoePriceArrayErrorMessage, __LINE__);
        }
        $this->vsoePrice = $vsoePrice;
        return $this;
    }
    /**
     * Add item to vsoePrice value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVsoePrice(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The vsoePrice 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->vsoePrice[] = $item;
        return $this;
    }
    /**
     * Get vsoeSopGroup value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getVsoeSopGroup()
    {
        return $this->vsoeSopGroup;
    }
    /**
     * This method is responsible for validating the values passed to the setVsoeSopGroup method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVsoeSopGroup method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVsoeSopGroupForArrayConstraintsFromSetVsoeSopGroup(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicVsoeSopGroupItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicVsoeSopGroupItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicVsoeSopGroupItem) ? get_class($itemSearchRowBasicVsoeSopGroupItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicVsoeSopGroupItem), var_export($itemSearchRowBasicVsoeSopGroupItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vsoeSopGroup 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 vsoeSopGroup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $vsoeSopGroup
     * @return \StructType\ItemSearchRowBasic
     */
    public function setVsoeSopGroup(array $vsoeSopGroup = array())
    {
        // validation for constraint: array
        if ('' !== ($vsoeSopGroupArrayErrorMessage = self::validateVsoeSopGroupForArrayConstraintsFromSetVsoeSopGroup($vsoeSopGroup))) {
            throw new \InvalidArgumentException($vsoeSopGroupArrayErrorMessage, __LINE__);
        }
        $this->vsoeSopGroup = $vsoeSopGroup;
        return $this;
    }
    /**
     * Add item to vsoeSopGroup value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToVsoeSopGroup(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The vsoeSopGroup 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->vsoeSopGroup[] = $item;
        return $this;
    }
    /**
     * Get webSite value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getWebSite()
    {
        return $this->webSite;
    }
    /**
     * This method is responsible for validating the values passed to the setWebSite method
     * This method is willingly generated in order to preserve the one-line inline validation within the setWebSite method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateWebSiteForArrayConstraintsFromSetWebSite(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicWebSiteItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicWebSiteItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicWebSiteItem) ? get_class($itemSearchRowBasicWebSiteItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicWebSiteItem), var_export($itemSearchRowBasicWebSiteItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The webSite 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 webSite value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $webSite
     * @return \StructType\ItemSearchRowBasic
     */
    public function setWebSite(array $webSite = array())
    {
        // validation for constraint: array
        if ('' !== ($webSiteArrayErrorMessage = self::validateWebSiteForArrayConstraintsFromSetWebSite($webSite))) {
            throw new \InvalidArgumentException($webSiteArrayErrorMessage, __LINE__);
        }
        $this->webSite = $webSite;
        return $this;
    }
    /**
     * Add item to webSite value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToWebSite(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The webSite 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->webSite[] = $item;
        return $this;
    }
    /**
     * Get weight value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getWeight()
    {
        return $this->weight;
    }
    /**
     * This method is responsible for validating the values passed to the setWeight method
     * This method is willingly generated in order to preserve the one-line inline validation within the setWeight method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateWeightForArrayConstraintsFromSetWeight(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicWeightItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicWeightItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($itemSearchRowBasicWeightItem) ? get_class($itemSearchRowBasicWeightItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicWeightItem), var_export($itemSearchRowBasicWeightItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The weight 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 weight value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $weight
     * @return \StructType\ItemSearchRowBasic
     */
    public function setWeight(array $weight = array())
    {
        // validation for constraint: array
        if ('' !== ($weightArrayErrorMessage = self::validateWeightForArrayConstraintsFromSetWeight($weight))) {
            throw new \InvalidArgumentException($weightArrayErrorMessage, __LINE__);
        }
        $this->weight = $weight;
        return $this;
    }
    /**
     * Add item to weight value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToWeight(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The weight 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->weight[] = $item;
        return $this;
    }
    /**
     * Get weightUnit value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getWeightUnit()
    {
        return $this->weightUnit;
    }
    /**
     * This method is responsible for validating the values passed to the setWeightUnit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setWeightUnit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateWeightUnitForArrayConstraintsFromSetWeightUnit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicWeightUnitItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicWeightUnitItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicWeightUnitItem) ? get_class($itemSearchRowBasicWeightUnitItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicWeightUnitItem), var_export($itemSearchRowBasicWeightUnitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The weightUnit 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 weightUnit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $weightUnit
     * @return \StructType\ItemSearchRowBasic
     */
    public function setWeightUnit(array $weightUnit = array())
    {
        // validation for constraint: array
        if ('' !== ($weightUnitArrayErrorMessage = self::validateWeightUnitForArrayConstraintsFromSetWeightUnit($weightUnit))) {
            throw new \InvalidArgumentException($weightUnitArrayErrorMessage, __LINE__);
        }
        $this->weightUnit = $weightUnit;
        return $this;
    }
    /**
     * Add item to weightUnit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToWeightUnit(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The weightUnit 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->weightUnit[] = $item;
        return $this;
    }
    /**
     * Get wipAcct value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getWipAcct()
    {
        return $this->wipAcct;
    }
    /**
     * This method is responsible for validating the values passed to the setWipAcct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setWipAcct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateWipAcctForArrayConstraintsFromSetWipAcct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicWipAcctItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicWipAcctItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicWipAcctItem) ? get_class($itemSearchRowBasicWipAcctItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicWipAcctItem), var_export($itemSearchRowBasicWipAcctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The wipAcct 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 wipAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $wipAcct
     * @return \StructType\ItemSearchRowBasic
     */
    public function setWipAcct(array $wipAcct = array())
    {
        // validation for constraint: array
        if ('' !== ($wipAcctArrayErrorMessage = self::validateWipAcctForArrayConstraintsFromSetWipAcct($wipAcct))) {
            throw new \InvalidArgumentException($wipAcctArrayErrorMessage, __LINE__);
        }
        $this->wipAcct = $wipAcct;
        return $this;
    }
    /**
     * Add item to wipAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToWipAcct(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The wipAcct 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->wipAcct[] = $item;
        return $this;
    }
    /**
     * Get wipVarianceAcct value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getWipVarianceAcct()
    {
        return $this->wipVarianceAcct;
    }
    /**
     * This method is responsible for validating the values passed to the setWipVarianceAcct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setWipVarianceAcct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateWipVarianceAcctForArrayConstraintsFromSetWipVarianceAcct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicWipVarianceAcctItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicWipVarianceAcctItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($itemSearchRowBasicWipVarianceAcctItem) ? get_class($itemSearchRowBasicWipVarianceAcctItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicWipVarianceAcctItem), var_export($itemSearchRowBasicWipVarianceAcctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The wipVarianceAcct 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 wipVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $wipVarianceAcct
     * @return \StructType\ItemSearchRowBasic
     */
    public function setWipVarianceAcct(array $wipVarianceAcct = array())
    {
        // validation for constraint: array
        if ('' !== ($wipVarianceAcctArrayErrorMessage = self::validateWipVarianceAcctForArrayConstraintsFromSetWipVarianceAcct($wipVarianceAcct))) {
            throw new \InvalidArgumentException($wipVarianceAcctArrayErrorMessage, __LINE__);
        }
        $this->wipVarianceAcct = $wipVarianceAcct;
        return $this;
    }
    /**
     * Add item to wipVarianceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToWipVarianceAcct(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The wipVarianceAcct 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->wipVarianceAcct[] = $item;
        return $this;
    }
    /**
     * Get yahooProductFeed value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getYahooProductFeed()
    {
        return $this->yahooProductFeed;
    }
    /**
     * This method is responsible for validating the values passed to the setYahooProductFeed method
     * This method is willingly generated in order to preserve the one-line inline validation within the setYahooProductFeed method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateYahooProductFeedForArrayConstraintsFromSetYahooProductFeed(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $itemSearchRowBasicYahooProductFeedItem) {
            // validation for constraint: itemType
            if (!$itemSearchRowBasicYahooProductFeedItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($itemSearchRowBasicYahooProductFeedItem) ? get_class($itemSearchRowBasicYahooProductFeedItem) : sprintf('%s(%s)', gettype($itemSearchRowBasicYahooProductFeedItem), var_export($itemSearchRowBasicYahooProductFeedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The yahooProductFeed 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 yahooProductFeed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $yahooProductFeed
     * @return \StructType\ItemSearchRowBasic
     */
    public function setYahooProductFeed(array $yahooProductFeed = array())
    {
        // validation for constraint: array
        if ('' !== ($yahooProductFeedArrayErrorMessage = self::validateYahooProductFeedForArrayConstraintsFromSetYahooProductFeed($yahooProductFeed))) {
            throw new \InvalidArgumentException($yahooProductFeedArrayErrorMessage, __LINE__);
        }
        $this->yahooProductFeed = $yahooProductFeed;
        return $this;
    }
    /**
     * Add item to yahooProductFeed value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\ItemSearchRowBasic
     */
    public function addToYahooProductFeed(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The yahooProductFeed 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->yahooProductFeed[] = $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\ItemSearchRowBasic
     */
    public function setCustomFieldList(\StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this->customFieldList = $customFieldList;
        return $this;
    }
}
