<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for OpportunitySearchRowBasic StructType
 * @subpackage Structs
 */
class OpportunitySearchRowBasic extends SearchRowBasic
{
    /**
     * The actionItem
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $actionItem;
    /**
     * The availableOffline
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $availableOffline;
    /**
     * The buyingReason
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $buyingReason;
    /**
     * The buyingTimeFrame
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $buyingTimeFrame;
    /**
     * The class
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $class;
    /**
     * The closeDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $closeDate;
    /**
     * The competitor
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $competitor;
    /**
     * The contribution
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $contribution;
    /**
     * The contributionPrimary
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $contributionPrimary;
    /**
     * The currency
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $currency;
    /**
     * The custType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $custType;
    /**
     * The dateCreated
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $dateCreated;
    /**
     * The daysOpen
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $daysOpen;
    /**
     * The daysToClose
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $daysToClose;
    /**
     * The decisionMaker
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $decisionMaker;
    /**
     * The department
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $department;
    /**
     * The status
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $status;
    /**
     * The entity
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $entity;
    /**
     * The entityStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $entityStatus;
    /**
     * The estimatedBudget
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $estimatedBudget;
    /**
     * The expectedCloseDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $expectedCloseDate;
    /**
     * The externalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $externalId;
    /**
     * The forecastType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $forecastType;
    /**
     * The foreignProjectedAmount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $foreignProjectedAmount;
    /**
     * The foreignRangeHigh
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $foreignRangeHigh;
    /**
     * The foreignRangeLow
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $foreignRangeLow;
    /**
     * The fxTranCostEstimate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $fxTranCostEstimate;
    /**
     * The internalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $internalId;
    /**
     * The isBudgetApproved
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isBudgetApproved;
    /**
     * The lastModifiedDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastModifiedDate;
    /**
     * The leadSource
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $leadSource;
    /**
     * The location
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $location;
    /**
     * The memo
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $memo;
    /**
     * The partner
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $partner;
    /**
     * The partnerContribution
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $partnerContribution;
    /**
     * The partnerRole
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $partnerRole;
    /**
     * The partnerTeamMember
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $partnerTeamMember;
    /**
     * The period
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $period;
    /**
     * The probability
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $probability;
    /**
     * The projAltSalesAmt
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $projAltSalesAmt;
    /**
     * The projectedTotal
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $projectedTotal;
    /**
     * The rangeHigh
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $rangeHigh;
    /**
     * The rangeHighAlt
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $rangeHighAlt;
    /**
     * The rangeLow
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $rangeLow;
    /**
     * The rangeLowAlt
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $rangeLowAlt;
    /**
     * The salesReadiness
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $salesReadiness;
    /**
     * The salesRep
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $salesRep;
    /**
     * The salesTeamMember
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $salesTeamMember;
    /**
     * The salesTeamRole
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $salesTeamRole;
    /**
     * The subsidiary
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $subsidiary;
    /**
     * The taxPeriod
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $taxPeriod;
    /**
     * The title
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $title;
    /**
     * The total
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $total;
    /**
     * The tranCostEstimate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $tranCostEstimate;
    /**
     * The tranDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $tranDate;
    /**
     * The tranEstGrossProfit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $tranEstGrossProfit;
    /**
     * The tranEstGrossProfitPct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $tranEstGrossProfitPct;
    /**
     * The tranFxEstGrossProfit
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $tranFxEstGrossProfit;
    /**
     * The tranId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $tranId;
    /**
     * The weightedTotal
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $weightedTotal;
    /**
     * The winLossReason
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $winLossReason;
    /**
     * The wonBy
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $wonBy;
    /**
     * The customFieldList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\SearchColumnCustomFieldList
     */
    public $customFieldList;
    /**
     * Constructor method for OpportunitySearchRowBasic
     * @uses OpportunitySearchRowBasic::setActionItem()
     * @uses OpportunitySearchRowBasic::setAvailableOffline()
     * @uses OpportunitySearchRowBasic::setBuyingReason()
     * @uses OpportunitySearchRowBasic::setBuyingTimeFrame()
     * @uses OpportunitySearchRowBasic::setClass()
     * @uses OpportunitySearchRowBasic::setCloseDate()
     * @uses OpportunitySearchRowBasic::setCompetitor()
     * @uses OpportunitySearchRowBasic::setContribution()
     * @uses OpportunitySearchRowBasic::setContributionPrimary()
     * @uses OpportunitySearchRowBasic::setCurrency()
     * @uses OpportunitySearchRowBasic::setCustType()
     * @uses OpportunitySearchRowBasic::setDateCreated()
     * @uses OpportunitySearchRowBasic::setDaysOpen()
     * @uses OpportunitySearchRowBasic::setDaysToClose()
     * @uses OpportunitySearchRowBasic::setDecisionMaker()
     * @uses OpportunitySearchRowBasic::setDepartment()
     * @uses OpportunitySearchRowBasic::setStatus()
     * @uses OpportunitySearchRowBasic::setEntity()
     * @uses OpportunitySearchRowBasic::setEntityStatus()
     * @uses OpportunitySearchRowBasic::setEstimatedBudget()
     * @uses OpportunitySearchRowBasic::setExpectedCloseDate()
     * @uses OpportunitySearchRowBasic::setExternalId()
     * @uses OpportunitySearchRowBasic::setForecastType()
     * @uses OpportunitySearchRowBasic::setForeignProjectedAmount()
     * @uses OpportunitySearchRowBasic::setForeignRangeHigh()
     * @uses OpportunitySearchRowBasic::setForeignRangeLow()
     * @uses OpportunitySearchRowBasic::setFxTranCostEstimate()
     * @uses OpportunitySearchRowBasic::setInternalId()
     * @uses OpportunitySearchRowBasic::setIsBudgetApproved()
     * @uses OpportunitySearchRowBasic::setLastModifiedDate()
     * @uses OpportunitySearchRowBasic::setLeadSource()
     * @uses OpportunitySearchRowBasic::setLocation()
     * @uses OpportunitySearchRowBasic::setMemo()
     * @uses OpportunitySearchRowBasic::setPartner()
     * @uses OpportunitySearchRowBasic::setPartnerContribution()
     * @uses OpportunitySearchRowBasic::setPartnerRole()
     * @uses OpportunitySearchRowBasic::setPartnerTeamMember()
     * @uses OpportunitySearchRowBasic::setPeriod()
     * @uses OpportunitySearchRowBasic::setProbability()
     * @uses OpportunitySearchRowBasic::setProjAltSalesAmt()
     * @uses OpportunitySearchRowBasic::setProjectedTotal()
     * @uses OpportunitySearchRowBasic::setRangeHigh()
     * @uses OpportunitySearchRowBasic::setRangeHighAlt()
     * @uses OpportunitySearchRowBasic::setRangeLow()
     * @uses OpportunitySearchRowBasic::setRangeLowAlt()
     * @uses OpportunitySearchRowBasic::setSalesReadiness()
     * @uses OpportunitySearchRowBasic::setSalesRep()
     * @uses OpportunitySearchRowBasic::setSalesTeamMember()
     * @uses OpportunitySearchRowBasic::setSalesTeamRole()
     * @uses OpportunitySearchRowBasic::setSubsidiary()
     * @uses OpportunitySearchRowBasic::setTaxPeriod()
     * @uses OpportunitySearchRowBasic::setTitle()
     * @uses OpportunitySearchRowBasic::setTotal()
     * @uses OpportunitySearchRowBasic::setTranCostEstimate()
     * @uses OpportunitySearchRowBasic::setTranDate()
     * @uses OpportunitySearchRowBasic::setTranEstGrossProfit()
     * @uses OpportunitySearchRowBasic::setTranEstGrossProfitPct()
     * @uses OpportunitySearchRowBasic::setTranFxEstGrossProfit()
     * @uses OpportunitySearchRowBasic::setTranId()
     * @uses OpportunitySearchRowBasic::setWeightedTotal()
     * @uses OpportunitySearchRowBasic::setWinLossReason()
     * @uses OpportunitySearchRowBasic::setWonBy()
     * @uses OpportunitySearchRowBasic::setCustomFieldList()
     * @param \StructType\SearchColumnStringField[] $actionItem
     * @param \StructType\SearchColumnBooleanField[] $availableOffline
     * @param \StructType\SearchColumnStringField[] $buyingReason
     * @param \StructType\SearchColumnStringField[] $buyingTimeFrame
     * @param \StructType\SearchColumnSelectField[] $class
     * @param \StructType\SearchColumnDateField[] $closeDate
     * @param \StructType\SearchColumnSelectField[] $competitor
     * @param \StructType\SearchColumnDoubleField[] $contribution
     * @param \StructType\SearchColumnDoubleField[] $contributionPrimary
     * @param \StructType\SearchColumnSelectField[] $currency
     * @param \StructType\SearchColumnStringField[] $custType
     * @param \StructType\SearchColumnDateField[] $dateCreated
     * @param \StructType\SearchColumnLongField[] $daysOpen
     * @param \StructType\SearchColumnLongField[] $daysToClose
     * @param \StructType\SearchColumnSelectField[] $decisionMaker
     * @param \StructType\SearchColumnSelectField[] $department
     * @param \StructType\SearchColumnEnumSelectField[] $status
     * @param \StructType\SearchColumnSelectField[] $entity
     * @param \StructType\SearchColumnSelectField[] $entityStatus
     * @param \StructType\SearchColumnDoubleField[] $estimatedBudget
     * @param \StructType\SearchColumnDateField[] $expectedCloseDate
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @param \StructType\SearchColumnEnumSelectField[] $forecastType
     * @param \StructType\SearchColumnDoubleField[] $foreignProjectedAmount
     * @param \StructType\SearchColumnDoubleField[] $foreignRangeHigh
     * @param \StructType\SearchColumnDoubleField[] $foreignRangeLow
     * @param \StructType\SearchColumnDoubleField[] $fxTranCostEstimate
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @param \StructType\SearchColumnBooleanField[] $isBudgetApproved
     * @param \StructType\SearchColumnDateField[] $lastModifiedDate
     * @param \StructType\SearchColumnSelectField[] $leadSource
     * @param \StructType\SearchColumnSelectField[] $location
     * @param \StructType\SearchColumnStringField[] $memo
     * @param \StructType\SearchColumnSelectField[] $partner
     * @param \StructType\SearchColumnDoubleField[] $partnerContribution
     * @param \StructType\SearchColumnSelectField[] $partnerRole
     * @param \StructType\SearchColumnSelectField[] $partnerTeamMember
     * @param \StructType\SearchColumnStringField[] $period
     * @param \StructType\SearchColumnDoubleField[] $probability
     * @param \StructType\SearchColumnDoubleField[] $projAltSalesAmt
     * @param \StructType\SearchColumnDoubleField[] $projectedTotal
     * @param \StructType\SearchColumnDoubleField[] $rangeHigh
     * @param \StructType\SearchColumnDoubleField[] $rangeHighAlt
     * @param \StructType\SearchColumnDoubleField[] $rangeLow
     * @param \StructType\SearchColumnDoubleField[] $rangeLowAlt
     * @param \StructType\SearchColumnStringField[] $salesReadiness
     * @param \StructType\SearchColumnSelectField[] $salesRep
     * @param \StructType\SearchColumnSelectField[] $salesTeamMember
     * @param \StructType\SearchColumnSelectField[] $salesTeamRole
     * @param \StructType\SearchColumnSelectField[] $subsidiary
     * @param \StructType\SearchColumnSelectField[] $taxPeriod
     * @param \StructType\SearchColumnStringField[] $title
     * @param \StructType\SearchColumnDoubleField[] $total
     * @param \StructType\SearchColumnDoubleField[] $tranCostEstimate
     * @param \StructType\SearchColumnDateField[] $tranDate
     * @param \StructType\SearchColumnDoubleField[] $tranEstGrossProfit
     * @param \StructType\SearchColumnDoubleField[] $tranEstGrossProfitPct
     * @param \StructType\SearchColumnDoubleField[] $tranFxEstGrossProfit
     * @param \StructType\SearchColumnStringField[] $tranId
     * @param \StructType\SearchColumnDoubleField[] $weightedTotal
     * @param \StructType\SearchColumnSelectField[] $winLossReason
     * @param \StructType\SearchColumnSelectField[] $wonBy
     * @param \StructType\SearchColumnCustomFieldList $customFieldList
     */
    public function __construct(array $actionItem = array(), array $availableOffline = array(), array $buyingReason = array(), array $buyingTimeFrame = array(), array $class = array(), array $closeDate = array(), array $competitor = array(), array $contribution = array(), array $contributionPrimary = array(), array $currency = array(), array $custType = array(), array $dateCreated = array(), array $daysOpen = array(), array $daysToClose = array(), array $decisionMaker = array(), array $department = array(), array $status = array(), array $entity = array(), array $entityStatus = array(), array $estimatedBudget = array(), array $expectedCloseDate = array(), array $externalId = array(), array $forecastType = array(), array $foreignProjectedAmount = array(), array $foreignRangeHigh = array(), array $foreignRangeLow = array(), array $fxTranCostEstimate = array(), array $internalId = array(), array $isBudgetApproved = array(), array $lastModifiedDate = array(), array $leadSource = array(), array $location = array(), array $memo = array(), array $partner = array(), array $partnerContribution = array(), array $partnerRole = array(), array $partnerTeamMember = array(), array $period = array(), array $probability = array(), array $projAltSalesAmt = array(), array $projectedTotal = array(), array $rangeHigh = array(), array $rangeHighAlt = array(), array $rangeLow = array(), array $rangeLowAlt = array(), array $salesReadiness = array(), array $salesRep = array(), array $salesTeamMember = array(), array $salesTeamRole = array(), array $subsidiary = array(), array $taxPeriod = array(), array $title = array(), array $total = array(), array $tranCostEstimate = array(), array $tranDate = array(), array $tranEstGrossProfit = array(), array $tranEstGrossProfitPct = array(), array $tranFxEstGrossProfit = array(), array $tranId = array(), array $weightedTotal = array(), array $winLossReason = array(), array $wonBy = array(), \StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this
            ->setActionItem($actionItem)
            ->setAvailableOffline($availableOffline)
            ->setBuyingReason($buyingReason)
            ->setBuyingTimeFrame($buyingTimeFrame)
            ->setClass($class)
            ->setCloseDate($closeDate)
            ->setCompetitor($competitor)
            ->setContribution($contribution)
            ->setContributionPrimary($contributionPrimary)
            ->setCurrency($currency)
            ->setCustType($custType)
            ->setDateCreated($dateCreated)
            ->setDaysOpen($daysOpen)
            ->setDaysToClose($daysToClose)
            ->setDecisionMaker($decisionMaker)
            ->setDepartment($department)
            ->setStatus($status)
            ->setEntity($entity)
            ->setEntityStatus($entityStatus)
            ->setEstimatedBudget($estimatedBudget)
            ->setExpectedCloseDate($expectedCloseDate)
            ->setExternalId($externalId)
            ->setForecastType($forecastType)
            ->setForeignProjectedAmount($foreignProjectedAmount)
            ->setForeignRangeHigh($foreignRangeHigh)
            ->setForeignRangeLow($foreignRangeLow)
            ->setFxTranCostEstimate($fxTranCostEstimate)
            ->setInternalId($internalId)
            ->setIsBudgetApproved($isBudgetApproved)
            ->setLastModifiedDate($lastModifiedDate)
            ->setLeadSource($leadSource)
            ->setLocation($location)
            ->setMemo($memo)
            ->setPartner($partner)
            ->setPartnerContribution($partnerContribution)
            ->setPartnerRole($partnerRole)
            ->setPartnerTeamMember($partnerTeamMember)
            ->setPeriod($period)
            ->setProbability($probability)
            ->setProjAltSalesAmt($projAltSalesAmt)
            ->setProjectedTotal($projectedTotal)
            ->setRangeHigh($rangeHigh)
            ->setRangeHighAlt($rangeHighAlt)
            ->setRangeLow($rangeLow)
            ->setRangeLowAlt($rangeLowAlt)
            ->setSalesReadiness($salesReadiness)
            ->setSalesRep($salesRep)
            ->setSalesTeamMember($salesTeamMember)
            ->setSalesTeamRole($salesTeamRole)
            ->setSubsidiary($subsidiary)
            ->setTaxPeriod($taxPeriod)
            ->setTitle($title)
            ->setTotal($total)
            ->setTranCostEstimate($tranCostEstimate)
            ->setTranDate($tranDate)
            ->setTranEstGrossProfit($tranEstGrossProfit)
            ->setTranEstGrossProfitPct($tranEstGrossProfitPct)
            ->setTranFxEstGrossProfit($tranFxEstGrossProfit)
            ->setTranId($tranId)
            ->setWeightedTotal($weightedTotal)
            ->setWinLossReason($winLossReason)
            ->setWonBy($wonBy)
            ->setCustomFieldList($customFieldList);
    }
    /**
     * Get actionItem value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getActionItem()
    {
        return $this->actionItem;
    }
    /**
     * This method is responsible for validating the values passed to the setActionItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setActionItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateActionItemForArrayConstraintsFromSetActionItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicActionItemItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicActionItemItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicActionItemItem) ? get_class($opportunitySearchRowBasicActionItemItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicActionItemItem), var_export($opportunitySearchRowBasicActionItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The actionItem property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set actionItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $actionItem
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setActionItem(array $actionItem = array())
    {
        // validation for constraint: array
        if ('' !== ($actionItemArrayErrorMessage = self::validateActionItemForArrayConstraintsFromSetActionItem($actionItem))) {
            throw new \InvalidArgumentException($actionItemArrayErrorMessage, __LINE__);
        }
        $this->actionItem = $actionItem;
        return $this;
    }
    /**
     * Add item to actionItem value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToActionItem(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The actionItem property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->actionItem[] = $item;
        return $this;
    }
    /**
     * Get availableOffline value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getAvailableOffline()
    {
        return $this->availableOffline;
    }
    /**
     * This method is responsible for validating the values passed to the setAvailableOffline method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAvailableOffline method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAvailableOfflineForArrayConstraintsFromSetAvailableOffline(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicAvailableOfflineItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicAvailableOfflineItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicAvailableOfflineItem) ? get_class($opportunitySearchRowBasicAvailableOfflineItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicAvailableOfflineItem), var_export($opportunitySearchRowBasicAvailableOfflineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The availableOffline property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set availableOffline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $availableOffline
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setAvailableOffline(array $availableOffline = array())
    {
        // validation for constraint: array
        if ('' !== ($availableOfflineArrayErrorMessage = self::validateAvailableOfflineForArrayConstraintsFromSetAvailableOffline($availableOffline))) {
            throw new \InvalidArgumentException($availableOfflineArrayErrorMessage, __LINE__);
        }
        $this->availableOffline = $availableOffline;
        return $this;
    }
    /**
     * Add item to availableOffline value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToAvailableOffline(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The availableOffline property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->availableOffline[] = $item;
        return $this;
    }
    /**
     * Get buyingReason value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBuyingReason()
    {
        return $this->buyingReason;
    }
    /**
     * This method is responsible for validating the values passed to the setBuyingReason method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBuyingReason method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBuyingReasonForArrayConstraintsFromSetBuyingReason(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicBuyingReasonItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicBuyingReasonItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicBuyingReasonItem) ? get_class($opportunitySearchRowBasicBuyingReasonItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicBuyingReasonItem), var_export($opportunitySearchRowBasicBuyingReasonItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The buyingReason property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set buyingReason value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $buyingReason
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setBuyingReason(array $buyingReason = array())
    {
        // validation for constraint: array
        if ('' !== ($buyingReasonArrayErrorMessage = self::validateBuyingReasonForArrayConstraintsFromSetBuyingReason($buyingReason))) {
            throw new \InvalidArgumentException($buyingReasonArrayErrorMessage, __LINE__);
        }
        $this->buyingReason = $buyingReason;
        return $this;
    }
    /**
     * Add item to buyingReason value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToBuyingReason(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The buyingReason property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->buyingReason[] = $item;
        return $this;
    }
    /**
     * Get buyingTimeFrame value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getBuyingTimeFrame()
    {
        return $this->buyingTimeFrame;
    }
    /**
     * This method is responsible for validating the values passed to the setBuyingTimeFrame method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBuyingTimeFrame method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBuyingTimeFrameForArrayConstraintsFromSetBuyingTimeFrame(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicBuyingTimeFrameItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicBuyingTimeFrameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicBuyingTimeFrameItem) ? get_class($opportunitySearchRowBasicBuyingTimeFrameItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicBuyingTimeFrameItem), var_export($opportunitySearchRowBasicBuyingTimeFrameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The buyingTimeFrame property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set buyingTimeFrame value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $buyingTimeFrame
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setBuyingTimeFrame(array $buyingTimeFrame = array())
    {
        // validation for constraint: array
        if ('' !== ($buyingTimeFrameArrayErrorMessage = self::validateBuyingTimeFrameForArrayConstraintsFromSetBuyingTimeFrame($buyingTimeFrame))) {
            throw new \InvalidArgumentException($buyingTimeFrameArrayErrorMessage, __LINE__);
        }
        $this->buyingTimeFrame = $buyingTimeFrame;
        return $this;
    }
    /**
     * Add item to buyingTimeFrame value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToBuyingTimeFrame(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The buyingTimeFrame property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->buyingTimeFrame[] = $item;
        return $this;
    }
    /**
     * Get 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 $opportunitySearchRowBasicClassItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicClassItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicClassItem) ? get_class($opportunitySearchRowBasicClassItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicClassItem), var_export($opportunitySearchRowBasicClassItem, 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\OpportunitySearchRowBasic
     */
    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\OpportunitySearchRowBasic
     */
    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 closeDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getCloseDate()
    {
        return $this->closeDate;
    }
    /**
     * This method is responsible for validating the values passed to the setCloseDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCloseDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCloseDateForArrayConstraintsFromSetCloseDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicCloseDateItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicCloseDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicCloseDateItem) ? get_class($opportunitySearchRowBasicCloseDateItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicCloseDateItem), var_export($opportunitySearchRowBasicCloseDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The closeDate 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 closeDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $closeDate
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setCloseDate(array $closeDate = array())
    {
        // validation for constraint: array
        if ('' !== ($closeDateArrayErrorMessage = self::validateCloseDateForArrayConstraintsFromSetCloseDate($closeDate))) {
            throw new \InvalidArgumentException($closeDateArrayErrorMessage, __LINE__);
        }
        $this->closeDate = $closeDate;
        return $this;
    }
    /**
     * Add item to closeDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToCloseDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The closeDate 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->closeDate[] = $item;
        return $this;
    }
    /**
     * Get competitor value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCompetitor()
    {
        return $this->competitor;
    }
    /**
     * This method is responsible for validating the values passed to the setCompetitor method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCompetitor method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCompetitorForArrayConstraintsFromSetCompetitor(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicCompetitorItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicCompetitorItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicCompetitorItem) ? get_class($opportunitySearchRowBasicCompetitorItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicCompetitorItem), var_export($opportunitySearchRowBasicCompetitorItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The competitor 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 competitor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $competitor
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setCompetitor(array $competitor = array())
    {
        // validation for constraint: array
        if ('' !== ($competitorArrayErrorMessage = self::validateCompetitorForArrayConstraintsFromSetCompetitor($competitor))) {
            throw new \InvalidArgumentException($competitorArrayErrorMessage, __LINE__);
        }
        $this->competitor = $competitor;
        return $this;
    }
    /**
     * Add item to competitor value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToCompetitor(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The competitor 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->competitor[] = $item;
        return $this;
    }
    /**
     * Get contribution value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getContribution()
    {
        return $this->contribution;
    }
    /**
     * This method is responsible for validating the values passed to the setContribution method
     * This method is willingly generated in order to preserve the one-line inline validation within the setContribution method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateContributionForArrayConstraintsFromSetContribution(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicContributionItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicContributionItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicContributionItem) ? get_class($opportunitySearchRowBasicContributionItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicContributionItem), var_export($opportunitySearchRowBasicContributionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The contribution property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set contribution value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $contribution
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setContribution(array $contribution = array())
    {
        // validation for constraint: array
        if ('' !== ($contributionArrayErrorMessage = self::validateContributionForArrayConstraintsFromSetContribution($contribution))) {
            throw new \InvalidArgumentException($contributionArrayErrorMessage, __LINE__);
        }
        $this->contribution = $contribution;
        return $this;
    }
    /**
     * Add item to contribution value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToContribution(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The contribution property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->contribution[] = $item;
        return $this;
    }
    /**
     * Get contributionPrimary value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getContributionPrimary()
    {
        return $this->contributionPrimary;
    }
    /**
     * This method is responsible for validating the values passed to the setContributionPrimary method
     * This method is willingly generated in order to preserve the one-line inline validation within the setContributionPrimary method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateContributionPrimaryForArrayConstraintsFromSetContributionPrimary(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicContributionPrimaryItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicContributionPrimaryItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicContributionPrimaryItem) ? get_class($opportunitySearchRowBasicContributionPrimaryItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicContributionPrimaryItem), var_export($opportunitySearchRowBasicContributionPrimaryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The contributionPrimary property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set contributionPrimary value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $contributionPrimary
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setContributionPrimary(array $contributionPrimary = array())
    {
        // validation for constraint: array
        if ('' !== ($contributionPrimaryArrayErrorMessage = self::validateContributionPrimaryForArrayConstraintsFromSetContributionPrimary($contributionPrimary))) {
            throw new \InvalidArgumentException($contributionPrimaryArrayErrorMessage, __LINE__);
        }
        $this->contributionPrimary = $contributionPrimary;
        return $this;
    }
    /**
     * Add item to contributionPrimary value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToContributionPrimary(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The contributionPrimary property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->contributionPrimary[] = $item;
        return $this;
    }
    /**
     * Get currency value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCurrency()
    {
        return $this->currency;
    }
    /**
     * This method is responsible for validating the values passed to the setCurrency method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCurrency method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCurrencyForArrayConstraintsFromSetCurrency(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicCurrencyItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicCurrencyItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicCurrencyItem) ? get_class($opportunitySearchRowBasicCurrencyItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicCurrencyItem), var_export($opportunitySearchRowBasicCurrencyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The currency property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set currency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $currency
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setCurrency(array $currency = array())
    {
        // validation for constraint: array
        if ('' !== ($currencyArrayErrorMessage = self::validateCurrencyForArrayConstraintsFromSetCurrency($currency))) {
            throw new \InvalidArgumentException($currencyArrayErrorMessage, __LINE__);
        }
        $this->currency = $currency;
        return $this;
    }
    /**
     * Add item to currency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToCurrency(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The currency property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->currency[] = $item;
        return $this;
    }
    /**
     * Get custType value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCustType()
    {
        return $this->custType;
    }
    /**
     * This method is responsible for validating the values passed to the setCustType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCustType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCustTypeForArrayConstraintsFromSetCustType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicCustTypeItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicCustTypeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicCustTypeItem) ? get_class($opportunitySearchRowBasicCustTypeItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicCustTypeItem), var_export($opportunitySearchRowBasicCustTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The custType property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set custType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $custType
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setCustType(array $custType = array())
    {
        // validation for constraint: array
        if ('' !== ($custTypeArrayErrorMessage = self::validateCustTypeForArrayConstraintsFromSetCustType($custType))) {
            throw new \InvalidArgumentException($custTypeArrayErrorMessage, __LINE__);
        }
        $this->custType = $custType;
        return $this;
    }
    /**
     * Add item to custType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToCustType(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The custType property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->custType[] = $item;
        return $this;
    }
    /**
     * Get dateCreated value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getDateCreated()
    {
        return $this->dateCreated;
    }
    /**
     * This method is responsible for validating the values passed to the setDateCreated method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDateCreated method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDateCreatedForArrayConstraintsFromSetDateCreated(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicDateCreatedItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicDateCreatedItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicDateCreatedItem) ? get_class($opportunitySearchRowBasicDateCreatedItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicDateCreatedItem), var_export($opportunitySearchRowBasicDateCreatedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The dateCreated property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set dateCreated value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $dateCreated
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setDateCreated(array $dateCreated = array())
    {
        // validation for constraint: array
        if ('' !== ($dateCreatedArrayErrorMessage = self::validateDateCreatedForArrayConstraintsFromSetDateCreated($dateCreated))) {
            throw new \InvalidArgumentException($dateCreatedArrayErrorMessage, __LINE__);
        }
        $this->dateCreated = $dateCreated;
        return $this;
    }
    /**
     * Add item to dateCreated value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToDateCreated(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The dateCreated property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->dateCreated[] = $item;
        return $this;
    }
    /**
     * Get daysOpen value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getDaysOpen()
    {
        return $this->daysOpen;
    }
    /**
     * This method is responsible for validating the values passed to the setDaysOpen method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDaysOpen method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDaysOpenForArrayConstraintsFromSetDaysOpen(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicDaysOpenItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicDaysOpenItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicDaysOpenItem) ? get_class($opportunitySearchRowBasicDaysOpenItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicDaysOpenItem), var_export($opportunitySearchRowBasicDaysOpenItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The daysOpen 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 daysOpen value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $daysOpen
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setDaysOpen(array $daysOpen = array())
    {
        // validation for constraint: array
        if ('' !== ($daysOpenArrayErrorMessage = self::validateDaysOpenForArrayConstraintsFromSetDaysOpen($daysOpen))) {
            throw new \InvalidArgumentException($daysOpenArrayErrorMessage, __LINE__);
        }
        $this->daysOpen = $daysOpen;
        return $this;
    }
    /**
     * Add item to daysOpen value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToDaysOpen(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The daysOpen 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->daysOpen[] = $item;
        return $this;
    }
    /**
     * Get daysToClose value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getDaysToClose()
    {
        return $this->daysToClose;
    }
    /**
     * This method is responsible for validating the values passed to the setDaysToClose method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDaysToClose method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDaysToCloseForArrayConstraintsFromSetDaysToClose(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicDaysToCloseItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicDaysToCloseItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicDaysToCloseItem) ? get_class($opportunitySearchRowBasicDaysToCloseItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicDaysToCloseItem), var_export($opportunitySearchRowBasicDaysToCloseItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The daysToClose 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 daysToClose value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $daysToClose
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setDaysToClose(array $daysToClose = array())
    {
        // validation for constraint: array
        if ('' !== ($daysToCloseArrayErrorMessage = self::validateDaysToCloseForArrayConstraintsFromSetDaysToClose($daysToClose))) {
            throw new \InvalidArgumentException($daysToCloseArrayErrorMessage, __LINE__);
        }
        $this->daysToClose = $daysToClose;
        return $this;
    }
    /**
     * Add item to daysToClose value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToDaysToClose(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The daysToClose 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->daysToClose[] = $item;
        return $this;
    }
    /**
     * Get decisionMaker value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getDecisionMaker()
    {
        return $this->decisionMaker;
    }
    /**
     * This method is responsible for validating the values passed to the setDecisionMaker method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDecisionMaker method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDecisionMakerForArrayConstraintsFromSetDecisionMaker(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicDecisionMakerItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicDecisionMakerItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicDecisionMakerItem) ? get_class($opportunitySearchRowBasicDecisionMakerItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicDecisionMakerItem), var_export($opportunitySearchRowBasicDecisionMakerItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The decisionMaker 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 decisionMaker value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $decisionMaker
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setDecisionMaker(array $decisionMaker = array())
    {
        // validation for constraint: array
        if ('' !== ($decisionMakerArrayErrorMessage = self::validateDecisionMakerForArrayConstraintsFromSetDecisionMaker($decisionMaker))) {
            throw new \InvalidArgumentException($decisionMakerArrayErrorMessage, __LINE__);
        }
        $this->decisionMaker = $decisionMaker;
        return $this;
    }
    /**
     * Add item to decisionMaker value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToDecisionMaker(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The decisionMaker 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->decisionMaker[] = $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 $opportunitySearchRowBasicDepartmentItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicDepartmentItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicDepartmentItem) ? get_class($opportunitySearchRowBasicDepartmentItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicDepartmentItem), var_export($opportunitySearchRowBasicDepartmentItem, 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\OpportunitySearchRowBasic
     */
    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\OpportunitySearchRowBasic
     */
    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 status value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getStatus()
    {
        return $this->status;
    }
    /**
     * This method is responsible for validating the values passed to the setStatus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStatus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStatusForArrayConstraintsFromSetStatus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicStatusItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicStatusItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicStatusItem) ? get_class($opportunitySearchRowBasicStatusItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicStatusItem), var_export($opportunitySearchRowBasicStatusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The status 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 status value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $status
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setStatus(array $status = array())
    {
        // validation for constraint: array
        if ('' !== ($statusArrayErrorMessage = self::validateStatusForArrayConstraintsFromSetStatus($status))) {
            throw new \InvalidArgumentException($statusArrayErrorMessage, __LINE__);
        }
        $this->status = $status;
        return $this;
    }
    /**
     * Add item to status value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToStatus(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The status 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->status[] = $item;
        return $this;
    }
    /**
     * Get entity value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getEntity()
    {
        return $this->entity;
    }
    /**
     * This method is responsible for validating the values passed to the setEntity method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEntity method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEntityForArrayConstraintsFromSetEntity(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicEntityItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicEntityItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicEntityItem) ? get_class($opportunitySearchRowBasicEntityItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicEntityItem), var_export($opportunitySearchRowBasicEntityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The entity 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 entity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $entity
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setEntity(array $entity = array())
    {
        // validation for constraint: array
        if ('' !== ($entityArrayErrorMessage = self::validateEntityForArrayConstraintsFromSetEntity($entity))) {
            throw new \InvalidArgumentException($entityArrayErrorMessage, __LINE__);
        }
        $this->entity = $entity;
        return $this;
    }
    /**
     * Add item to entity value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToEntity(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The entity 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->entity[] = $item;
        return $this;
    }
    /**
     * Get entityStatus value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getEntityStatus()
    {
        return $this->entityStatus;
    }
    /**
     * This method is responsible for validating the values passed to the setEntityStatus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEntityStatus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEntityStatusForArrayConstraintsFromSetEntityStatus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicEntityStatusItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicEntityStatusItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicEntityStatusItem) ? get_class($opportunitySearchRowBasicEntityStatusItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicEntityStatusItem), var_export($opportunitySearchRowBasicEntityStatusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The entityStatus property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set entityStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $entityStatus
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setEntityStatus(array $entityStatus = array())
    {
        // validation for constraint: array
        if ('' !== ($entityStatusArrayErrorMessage = self::validateEntityStatusForArrayConstraintsFromSetEntityStatus($entityStatus))) {
            throw new \InvalidArgumentException($entityStatusArrayErrorMessage, __LINE__);
        }
        $this->entityStatus = $entityStatus;
        return $this;
    }
    /**
     * Add item to entityStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToEntityStatus(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The entityStatus property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->entityStatus[] = $item;
        return $this;
    }
    /**
     * Get estimatedBudget value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getEstimatedBudget()
    {
        return $this->estimatedBudget;
    }
    /**
     * This method is responsible for validating the values passed to the setEstimatedBudget method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEstimatedBudget method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEstimatedBudgetForArrayConstraintsFromSetEstimatedBudget(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicEstimatedBudgetItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicEstimatedBudgetItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicEstimatedBudgetItem) ? get_class($opportunitySearchRowBasicEstimatedBudgetItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicEstimatedBudgetItem), var_export($opportunitySearchRowBasicEstimatedBudgetItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The estimatedBudget property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set estimatedBudget value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $estimatedBudget
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setEstimatedBudget(array $estimatedBudget = array())
    {
        // validation for constraint: array
        if ('' !== ($estimatedBudgetArrayErrorMessage = self::validateEstimatedBudgetForArrayConstraintsFromSetEstimatedBudget($estimatedBudget))) {
            throw new \InvalidArgumentException($estimatedBudgetArrayErrorMessage, __LINE__);
        }
        $this->estimatedBudget = $estimatedBudget;
        return $this;
    }
    /**
     * Add item to estimatedBudget value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToEstimatedBudget(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The estimatedBudget property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->estimatedBudget[] = $item;
        return $this;
    }
    /**
     * Get expectedCloseDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getExpectedCloseDate()
    {
        return $this->expectedCloseDate;
    }
    /**
     * This method is responsible for validating the values passed to the setExpectedCloseDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setExpectedCloseDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateExpectedCloseDateForArrayConstraintsFromSetExpectedCloseDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicExpectedCloseDateItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicExpectedCloseDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicExpectedCloseDateItem) ? get_class($opportunitySearchRowBasicExpectedCloseDateItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicExpectedCloseDateItem), var_export($opportunitySearchRowBasicExpectedCloseDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The expectedCloseDate 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 expectedCloseDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $expectedCloseDate
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setExpectedCloseDate(array $expectedCloseDate = array())
    {
        // validation for constraint: array
        if ('' !== ($expectedCloseDateArrayErrorMessage = self::validateExpectedCloseDateForArrayConstraintsFromSetExpectedCloseDate($expectedCloseDate))) {
            throw new \InvalidArgumentException($expectedCloseDateArrayErrorMessage, __LINE__);
        }
        $this->expectedCloseDate = $expectedCloseDate;
        return $this;
    }
    /**
     * Add item to expectedCloseDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToExpectedCloseDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The expectedCloseDate 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->expectedCloseDate[] = $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 $opportunitySearchRowBasicExternalIdItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicExternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicExternalIdItem) ? get_class($opportunitySearchRowBasicExternalIdItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicExternalIdItem), var_export($opportunitySearchRowBasicExternalIdItem, 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\OpportunitySearchRowBasic
     */
    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\OpportunitySearchRowBasic
     */
    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 forecastType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getForecastType()
    {
        return $this->forecastType;
    }
    /**
     * This method is responsible for validating the values passed to the setForecastType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setForecastType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateForecastTypeForArrayConstraintsFromSetForecastType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicForecastTypeItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicForecastTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicForecastTypeItem) ? get_class($opportunitySearchRowBasicForecastTypeItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicForecastTypeItem), var_export($opportunitySearchRowBasicForecastTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The forecastType 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 forecastType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $forecastType
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setForecastType(array $forecastType = array())
    {
        // validation for constraint: array
        if ('' !== ($forecastTypeArrayErrorMessage = self::validateForecastTypeForArrayConstraintsFromSetForecastType($forecastType))) {
            throw new \InvalidArgumentException($forecastTypeArrayErrorMessage, __LINE__);
        }
        $this->forecastType = $forecastType;
        return $this;
    }
    /**
     * Add item to forecastType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToForecastType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The forecastType 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->forecastType[] = $item;
        return $this;
    }
    /**
     * Get foreignProjectedAmount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getForeignProjectedAmount()
    {
        return $this->foreignProjectedAmount;
    }
    /**
     * This method is responsible for validating the values passed to the setForeignProjectedAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setForeignProjectedAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateForeignProjectedAmountForArrayConstraintsFromSetForeignProjectedAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicForeignProjectedAmountItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicForeignProjectedAmountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicForeignProjectedAmountItem) ? get_class($opportunitySearchRowBasicForeignProjectedAmountItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicForeignProjectedAmountItem), var_export($opportunitySearchRowBasicForeignProjectedAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The foreignProjectedAmount 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 foreignProjectedAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $foreignProjectedAmount
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setForeignProjectedAmount(array $foreignProjectedAmount = array())
    {
        // validation for constraint: array
        if ('' !== ($foreignProjectedAmountArrayErrorMessage = self::validateForeignProjectedAmountForArrayConstraintsFromSetForeignProjectedAmount($foreignProjectedAmount))) {
            throw new \InvalidArgumentException($foreignProjectedAmountArrayErrorMessage, __LINE__);
        }
        $this->foreignProjectedAmount = $foreignProjectedAmount;
        return $this;
    }
    /**
     * Add item to foreignProjectedAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToForeignProjectedAmount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The foreignProjectedAmount 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->foreignProjectedAmount[] = $item;
        return $this;
    }
    /**
     * Get foreignRangeHigh value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getForeignRangeHigh()
    {
        return $this->foreignRangeHigh;
    }
    /**
     * This method is responsible for validating the values passed to the setForeignRangeHigh method
     * This method is willingly generated in order to preserve the one-line inline validation within the setForeignRangeHigh method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateForeignRangeHighForArrayConstraintsFromSetForeignRangeHigh(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicForeignRangeHighItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicForeignRangeHighItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicForeignRangeHighItem) ? get_class($opportunitySearchRowBasicForeignRangeHighItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicForeignRangeHighItem), var_export($opportunitySearchRowBasicForeignRangeHighItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The foreignRangeHigh 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 foreignRangeHigh value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $foreignRangeHigh
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setForeignRangeHigh(array $foreignRangeHigh = array())
    {
        // validation for constraint: array
        if ('' !== ($foreignRangeHighArrayErrorMessage = self::validateForeignRangeHighForArrayConstraintsFromSetForeignRangeHigh($foreignRangeHigh))) {
            throw new \InvalidArgumentException($foreignRangeHighArrayErrorMessage, __LINE__);
        }
        $this->foreignRangeHigh = $foreignRangeHigh;
        return $this;
    }
    /**
     * Add item to foreignRangeHigh value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToForeignRangeHigh(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The foreignRangeHigh 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->foreignRangeHigh[] = $item;
        return $this;
    }
    /**
     * Get foreignRangeLow value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getForeignRangeLow()
    {
        return $this->foreignRangeLow;
    }
    /**
     * This method is responsible for validating the values passed to the setForeignRangeLow method
     * This method is willingly generated in order to preserve the one-line inline validation within the setForeignRangeLow method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateForeignRangeLowForArrayConstraintsFromSetForeignRangeLow(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicForeignRangeLowItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicForeignRangeLowItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicForeignRangeLowItem) ? get_class($opportunitySearchRowBasicForeignRangeLowItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicForeignRangeLowItem), var_export($opportunitySearchRowBasicForeignRangeLowItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The foreignRangeLow 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 foreignRangeLow value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $foreignRangeLow
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setForeignRangeLow(array $foreignRangeLow = array())
    {
        // validation for constraint: array
        if ('' !== ($foreignRangeLowArrayErrorMessage = self::validateForeignRangeLowForArrayConstraintsFromSetForeignRangeLow($foreignRangeLow))) {
            throw new \InvalidArgumentException($foreignRangeLowArrayErrorMessage, __LINE__);
        }
        $this->foreignRangeLow = $foreignRangeLow;
        return $this;
    }
    /**
     * Add item to foreignRangeLow value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToForeignRangeLow(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The foreignRangeLow 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->foreignRangeLow[] = $item;
        return $this;
    }
    /**
     * Get fxTranCostEstimate value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getFxTranCostEstimate()
    {
        return $this->fxTranCostEstimate;
    }
    /**
     * This method is responsible for validating the values passed to the setFxTranCostEstimate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFxTranCostEstimate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFxTranCostEstimateForArrayConstraintsFromSetFxTranCostEstimate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicFxTranCostEstimateItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicFxTranCostEstimateItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicFxTranCostEstimateItem) ? get_class($opportunitySearchRowBasicFxTranCostEstimateItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicFxTranCostEstimateItem), var_export($opportunitySearchRowBasicFxTranCostEstimateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The fxTranCostEstimate 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 fxTranCostEstimate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $fxTranCostEstimate
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setFxTranCostEstimate(array $fxTranCostEstimate = array())
    {
        // validation for constraint: array
        if ('' !== ($fxTranCostEstimateArrayErrorMessage = self::validateFxTranCostEstimateForArrayConstraintsFromSetFxTranCostEstimate($fxTranCostEstimate))) {
            throw new \InvalidArgumentException($fxTranCostEstimateArrayErrorMessage, __LINE__);
        }
        $this->fxTranCostEstimate = $fxTranCostEstimate;
        return $this;
    }
    /**
     * Add item to fxTranCostEstimate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToFxTranCostEstimate(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The fxTranCostEstimate 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->fxTranCostEstimate[] = $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 $opportunitySearchRowBasicInternalIdItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicInternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicInternalIdItem) ? get_class($opportunitySearchRowBasicInternalIdItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicInternalIdItem), var_export($opportunitySearchRowBasicInternalIdItem, 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\OpportunitySearchRowBasic
     */
    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\OpportunitySearchRowBasic
     */
    public function addToInternalId(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The internalId property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->internalId[] = $item;
        return $this;
    }
    /**
     * Get isBudgetApproved value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsBudgetApproved()
    {
        return $this->isBudgetApproved;
    }
    /**
     * This method is responsible for validating the values passed to the setIsBudgetApproved method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsBudgetApproved method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsBudgetApprovedForArrayConstraintsFromSetIsBudgetApproved(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicIsBudgetApprovedItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicIsBudgetApprovedItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicIsBudgetApprovedItem) ? get_class($opportunitySearchRowBasicIsBudgetApprovedItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicIsBudgetApprovedItem), var_export($opportunitySearchRowBasicIsBudgetApprovedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isBudgetApproved property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set isBudgetApproved value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isBudgetApproved
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setIsBudgetApproved(array $isBudgetApproved = array())
    {
        // validation for constraint: array
        if ('' !== ($isBudgetApprovedArrayErrorMessage = self::validateIsBudgetApprovedForArrayConstraintsFromSetIsBudgetApproved($isBudgetApproved))) {
            throw new \InvalidArgumentException($isBudgetApprovedArrayErrorMessage, __LINE__);
        }
        $this->isBudgetApproved = $isBudgetApproved;
        return $this;
    }
    /**
     * Add item to isBudgetApproved value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToIsBudgetApproved(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isBudgetApproved property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->isBudgetApproved[] = $item;
        return $this;
    }
    /**
     * Get lastModifiedDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getLastModifiedDate()
    {
        return $this->lastModifiedDate;
    }
    /**
     * This method is responsible for validating the values passed to the setLastModifiedDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLastModifiedDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLastModifiedDateForArrayConstraintsFromSetLastModifiedDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicLastModifiedDateItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicLastModifiedDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicLastModifiedDateItem) ? get_class($opportunitySearchRowBasicLastModifiedDateItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicLastModifiedDateItem), var_export($opportunitySearchRowBasicLastModifiedDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lastModifiedDate property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set lastModifiedDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $lastModifiedDate
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setLastModifiedDate(array $lastModifiedDate = array())
    {
        // validation for constraint: array
        if ('' !== ($lastModifiedDateArrayErrorMessage = self::validateLastModifiedDateForArrayConstraintsFromSetLastModifiedDate($lastModifiedDate))) {
            throw new \InvalidArgumentException($lastModifiedDateArrayErrorMessage, __LINE__);
        }
        $this->lastModifiedDate = $lastModifiedDate;
        return $this;
    }
    /**
     * Add item to lastModifiedDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToLastModifiedDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The lastModifiedDate property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->lastModifiedDate[] = $item;
        return $this;
    }
    /**
     * Get leadSource value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getLeadSource()
    {
        return $this->leadSource;
    }
    /**
     * This method is responsible for validating the values passed to the setLeadSource method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLeadSource method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLeadSourceForArrayConstraintsFromSetLeadSource(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicLeadSourceItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicLeadSourceItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicLeadSourceItem) ? get_class($opportunitySearchRowBasicLeadSourceItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicLeadSourceItem), var_export($opportunitySearchRowBasicLeadSourceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The leadSource property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set leadSource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $leadSource
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setLeadSource(array $leadSource = array())
    {
        // validation for constraint: array
        if ('' !== ($leadSourceArrayErrorMessage = self::validateLeadSourceForArrayConstraintsFromSetLeadSource($leadSource))) {
            throw new \InvalidArgumentException($leadSourceArrayErrorMessage, __LINE__);
        }
        $this->leadSource = $leadSource;
        return $this;
    }
    /**
     * Add item to leadSource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToLeadSource(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The leadSource property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->leadSource[] = $item;
        return $this;
    }
    /**
     * Get 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 $opportunitySearchRowBasicLocationItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicLocationItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicLocationItem) ? get_class($opportunitySearchRowBasicLocationItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicLocationItem), var_export($opportunitySearchRowBasicLocationItem, 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\OpportunitySearchRowBasic
     */
    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\OpportunitySearchRowBasic
     */
    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 memo value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getMemo()
    {
        return $this->memo;
    }
    /**
     * This method is responsible for validating the values passed to the setMemo method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMemo method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMemoForArrayConstraintsFromSetMemo(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicMemoItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicMemoItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicMemoItem) ? get_class($opportunitySearchRowBasicMemoItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicMemoItem), var_export($opportunitySearchRowBasicMemoItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The memo property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set memo value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $memo
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setMemo(array $memo = array())
    {
        // validation for constraint: array
        if ('' !== ($memoArrayErrorMessage = self::validateMemoForArrayConstraintsFromSetMemo($memo))) {
            throw new \InvalidArgumentException($memoArrayErrorMessage, __LINE__);
        }
        $this->memo = $memo;
        return $this;
    }
    /**
     * Add item to memo value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToMemo(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The memo property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->memo[] = $item;
        return $this;
    }
    /**
     * Get partner value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPartner()
    {
        return $this->partner;
    }
    /**
     * This method is responsible for validating the values passed to the setPartner method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPartner method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePartnerForArrayConstraintsFromSetPartner(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicPartnerItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicPartnerItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicPartnerItem) ? get_class($opportunitySearchRowBasicPartnerItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicPartnerItem), var_export($opportunitySearchRowBasicPartnerItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The partner property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set partner value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $partner
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setPartner(array $partner = array())
    {
        // validation for constraint: array
        if ('' !== ($partnerArrayErrorMessage = self::validatePartnerForArrayConstraintsFromSetPartner($partner))) {
            throw new \InvalidArgumentException($partnerArrayErrorMessage, __LINE__);
        }
        $this->partner = $partner;
        return $this;
    }
    /**
     * Add item to partner value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToPartner(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The partner property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->partner[] = $item;
        return $this;
    }
    /**
     * Get partnerContribution value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPartnerContribution()
    {
        return $this->partnerContribution;
    }
    /**
     * This method is responsible for validating the values passed to the setPartnerContribution method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPartnerContribution method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePartnerContributionForArrayConstraintsFromSetPartnerContribution(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicPartnerContributionItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicPartnerContributionItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicPartnerContributionItem) ? get_class($opportunitySearchRowBasicPartnerContributionItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicPartnerContributionItem), var_export($opportunitySearchRowBasicPartnerContributionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The partnerContribution property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set partnerContribution value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $partnerContribution
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setPartnerContribution(array $partnerContribution = array())
    {
        // validation for constraint: array
        if ('' !== ($partnerContributionArrayErrorMessage = self::validatePartnerContributionForArrayConstraintsFromSetPartnerContribution($partnerContribution))) {
            throw new \InvalidArgumentException($partnerContributionArrayErrorMessage, __LINE__);
        }
        $this->partnerContribution = $partnerContribution;
        return $this;
    }
    /**
     * Add item to partnerContribution value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToPartnerContribution(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The partnerContribution property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->partnerContribution[] = $item;
        return $this;
    }
    /**
     * Get partnerRole value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPartnerRole()
    {
        return $this->partnerRole;
    }
    /**
     * This method is responsible for validating the values passed to the setPartnerRole method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPartnerRole method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePartnerRoleForArrayConstraintsFromSetPartnerRole(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicPartnerRoleItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicPartnerRoleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicPartnerRoleItem) ? get_class($opportunitySearchRowBasicPartnerRoleItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicPartnerRoleItem), var_export($opportunitySearchRowBasicPartnerRoleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The partnerRole 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 partnerRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $partnerRole
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setPartnerRole(array $partnerRole = array())
    {
        // validation for constraint: array
        if ('' !== ($partnerRoleArrayErrorMessage = self::validatePartnerRoleForArrayConstraintsFromSetPartnerRole($partnerRole))) {
            throw new \InvalidArgumentException($partnerRoleArrayErrorMessage, __LINE__);
        }
        $this->partnerRole = $partnerRole;
        return $this;
    }
    /**
     * Add item to partnerRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToPartnerRole(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The partnerRole 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->partnerRole[] = $item;
        return $this;
    }
    /**
     * Get partnerTeamMember value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getPartnerTeamMember()
    {
        return $this->partnerTeamMember;
    }
    /**
     * This method is responsible for validating the values passed to the setPartnerTeamMember method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPartnerTeamMember method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePartnerTeamMemberForArrayConstraintsFromSetPartnerTeamMember(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicPartnerTeamMemberItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicPartnerTeamMemberItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicPartnerTeamMemberItem) ? get_class($opportunitySearchRowBasicPartnerTeamMemberItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicPartnerTeamMemberItem), var_export($opportunitySearchRowBasicPartnerTeamMemberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The partnerTeamMember property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set partnerTeamMember value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $partnerTeamMember
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setPartnerTeamMember(array $partnerTeamMember = array())
    {
        // validation for constraint: array
        if ('' !== ($partnerTeamMemberArrayErrorMessage = self::validatePartnerTeamMemberForArrayConstraintsFromSetPartnerTeamMember($partnerTeamMember))) {
            throw new \InvalidArgumentException($partnerTeamMemberArrayErrorMessage, __LINE__);
        }
        $this->partnerTeamMember = $partnerTeamMember;
        return $this;
    }
    /**
     * Add item to partnerTeamMember value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToPartnerTeamMember(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The partnerTeamMember property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->partnerTeamMember[] = $item;
        return $this;
    }
    /**
     * Get period value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPeriod()
    {
        return $this->period;
    }
    /**
     * This method is responsible for validating the values passed to the setPeriod method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPeriod method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePeriodForArrayConstraintsFromSetPeriod(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicPeriodItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicPeriodItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicPeriodItem) ? get_class($opportunitySearchRowBasicPeriodItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicPeriodItem), var_export($opportunitySearchRowBasicPeriodItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The period property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set period value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $period
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setPeriod(array $period = array())
    {
        // validation for constraint: array
        if ('' !== ($periodArrayErrorMessage = self::validatePeriodForArrayConstraintsFromSetPeriod($period))) {
            throw new \InvalidArgumentException($periodArrayErrorMessage, __LINE__);
        }
        $this->period = $period;
        return $this;
    }
    /**
     * Add item to period value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToPeriod(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The period property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->period[] = $item;
        return $this;
    }
    /**
     * Get probability value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getProbability()
    {
        return $this->probability;
    }
    /**
     * This method is responsible for validating the values passed to the setProbability method
     * This method is willingly generated in order to preserve the one-line inline validation within the setProbability method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateProbabilityForArrayConstraintsFromSetProbability(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicProbabilityItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicProbabilityItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicProbabilityItem) ? get_class($opportunitySearchRowBasicProbabilityItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicProbabilityItem), var_export($opportunitySearchRowBasicProbabilityItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The probability 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 probability value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $probability
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setProbability(array $probability = array())
    {
        // validation for constraint: array
        if ('' !== ($probabilityArrayErrorMessage = self::validateProbabilityForArrayConstraintsFromSetProbability($probability))) {
            throw new \InvalidArgumentException($probabilityArrayErrorMessage, __LINE__);
        }
        $this->probability = $probability;
        return $this;
    }
    /**
     * Add item to probability value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToProbability(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The probability 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->probability[] = $item;
        return $this;
    }
    /**
     * Get projAltSalesAmt value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getProjAltSalesAmt()
    {
        return $this->projAltSalesAmt;
    }
    /**
     * This method is responsible for validating the values passed to the setProjAltSalesAmt method
     * This method is willingly generated in order to preserve the one-line inline validation within the setProjAltSalesAmt method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateProjAltSalesAmtForArrayConstraintsFromSetProjAltSalesAmt(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicProjAltSalesAmtItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicProjAltSalesAmtItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicProjAltSalesAmtItem) ? get_class($opportunitySearchRowBasicProjAltSalesAmtItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicProjAltSalesAmtItem), var_export($opportunitySearchRowBasicProjAltSalesAmtItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The projAltSalesAmt 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 projAltSalesAmt value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $projAltSalesAmt
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setProjAltSalesAmt(array $projAltSalesAmt = array())
    {
        // validation for constraint: array
        if ('' !== ($projAltSalesAmtArrayErrorMessage = self::validateProjAltSalesAmtForArrayConstraintsFromSetProjAltSalesAmt($projAltSalesAmt))) {
            throw new \InvalidArgumentException($projAltSalesAmtArrayErrorMessage, __LINE__);
        }
        $this->projAltSalesAmt = $projAltSalesAmt;
        return $this;
    }
    /**
     * Add item to projAltSalesAmt value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToProjAltSalesAmt(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The projAltSalesAmt 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->projAltSalesAmt[] = $item;
        return $this;
    }
    /**
     * Get projectedTotal value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getProjectedTotal()
    {
        return $this->projectedTotal;
    }
    /**
     * This method is responsible for validating the values passed to the setProjectedTotal method
     * This method is willingly generated in order to preserve the one-line inline validation within the setProjectedTotal method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateProjectedTotalForArrayConstraintsFromSetProjectedTotal(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicProjectedTotalItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicProjectedTotalItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicProjectedTotalItem) ? get_class($opportunitySearchRowBasicProjectedTotalItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicProjectedTotalItem), var_export($opportunitySearchRowBasicProjectedTotalItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The projectedTotal 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 projectedTotal value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $projectedTotal
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setProjectedTotal(array $projectedTotal = array())
    {
        // validation for constraint: array
        if ('' !== ($projectedTotalArrayErrorMessage = self::validateProjectedTotalForArrayConstraintsFromSetProjectedTotal($projectedTotal))) {
            throw new \InvalidArgumentException($projectedTotalArrayErrorMessage, __LINE__);
        }
        $this->projectedTotal = $projectedTotal;
        return $this;
    }
    /**
     * Add item to projectedTotal value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToProjectedTotal(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The projectedTotal 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->projectedTotal[] = $item;
        return $this;
    }
    /**
     * Get rangeHigh value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getRangeHigh()
    {
        return $this->rangeHigh;
    }
    /**
     * This method is responsible for validating the values passed to the setRangeHigh method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRangeHigh method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRangeHighForArrayConstraintsFromSetRangeHigh(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicRangeHighItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicRangeHighItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicRangeHighItem) ? get_class($opportunitySearchRowBasicRangeHighItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicRangeHighItem), var_export($opportunitySearchRowBasicRangeHighItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The rangeHigh 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 rangeHigh value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $rangeHigh
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setRangeHigh(array $rangeHigh = array())
    {
        // validation for constraint: array
        if ('' !== ($rangeHighArrayErrorMessage = self::validateRangeHighForArrayConstraintsFromSetRangeHigh($rangeHigh))) {
            throw new \InvalidArgumentException($rangeHighArrayErrorMessage, __LINE__);
        }
        $this->rangeHigh = $rangeHigh;
        return $this;
    }
    /**
     * Add item to rangeHigh value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToRangeHigh(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The rangeHigh 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->rangeHigh[] = $item;
        return $this;
    }
    /**
     * Get rangeHighAlt value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getRangeHighAlt()
    {
        return $this->rangeHighAlt;
    }
    /**
     * This method is responsible for validating the values passed to the setRangeHighAlt method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRangeHighAlt method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRangeHighAltForArrayConstraintsFromSetRangeHighAlt(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicRangeHighAltItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicRangeHighAltItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicRangeHighAltItem) ? get_class($opportunitySearchRowBasicRangeHighAltItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicRangeHighAltItem), var_export($opportunitySearchRowBasicRangeHighAltItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The rangeHighAlt 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 rangeHighAlt value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $rangeHighAlt
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setRangeHighAlt(array $rangeHighAlt = array())
    {
        // validation for constraint: array
        if ('' !== ($rangeHighAltArrayErrorMessage = self::validateRangeHighAltForArrayConstraintsFromSetRangeHighAlt($rangeHighAlt))) {
            throw new \InvalidArgumentException($rangeHighAltArrayErrorMessage, __LINE__);
        }
        $this->rangeHighAlt = $rangeHighAlt;
        return $this;
    }
    /**
     * Add item to rangeHighAlt value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToRangeHighAlt(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The rangeHighAlt 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->rangeHighAlt[] = $item;
        return $this;
    }
    /**
     * Get rangeLow value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getRangeLow()
    {
        return $this->rangeLow;
    }
    /**
     * This method is responsible for validating the values passed to the setRangeLow method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRangeLow method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRangeLowForArrayConstraintsFromSetRangeLow(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicRangeLowItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicRangeLowItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicRangeLowItem) ? get_class($opportunitySearchRowBasicRangeLowItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicRangeLowItem), var_export($opportunitySearchRowBasicRangeLowItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The rangeLow 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 rangeLow value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $rangeLow
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setRangeLow(array $rangeLow = array())
    {
        // validation for constraint: array
        if ('' !== ($rangeLowArrayErrorMessage = self::validateRangeLowForArrayConstraintsFromSetRangeLow($rangeLow))) {
            throw new \InvalidArgumentException($rangeLowArrayErrorMessage, __LINE__);
        }
        $this->rangeLow = $rangeLow;
        return $this;
    }
    /**
     * Add item to rangeLow value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToRangeLow(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The rangeLow 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->rangeLow[] = $item;
        return $this;
    }
    /**
     * Get rangeLowAlt value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getRangeLowAlt()
    {
        return $this->rangeLowAlt;
    }
    /**
     * This method is responsible for validating the values passed to the setRangeLowAlt method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRangeLowAlt method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRangeLowAltForArrayConstraintsFromSetRangeLowAlt(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicRangeLowAltItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicRangeLowAltItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicRangeLowAltItem) ? get_class($opportunitySearchRowBasicRangeLowAltItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicRangeLowAltItem), var_export($opportunitySearchRowBasicRangeLowAltItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The rangeLowAlt 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 rangeLowAlt value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $rangeLowAlt
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setRangeLowAlt(array $rangeLowAlt = array())
    {
        // validation for constraint: array
        if ('' !== ($rangeLowAltArrayErrorMessage = self::validateRangeLowAltForArrayConstraintsFromSetRangeLowAlt($rangeLowAlt))) {
            throw new \InvalidArgumentException($rangeLowAltArrayErrorMessage, __LINE__);
        }
        $this->rangeLowAlt = $rangeLowAlt;
        return $this;
    }
    /**
     * Add item to rangeLowAlt value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToRangeLowAlt(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The rangeLowAlt 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->rangeLowAlt[] = $item;
        return $this;
    }
    /**
     * Get salesReadiness value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSalesReadiness()
    {
        return $this->salesReadiness;
    }
    /**
     * This method is responsible for validating the values passed to the setSalesReadiness method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalesReadiness method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalesReadinessForArrayConstraintsFromSetSalesReadiness(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicSalesReadinessItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicSalesReadinessItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicSalesReadinessItem) ? get_class($opportunitySearchRowBasicSalesReadinessItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicSalesReadinessItem), var_export($opportunitySearchRowBasicSalesReadinessItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salesReadiness property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set salesReadiness value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $salesReadiness
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setSalesReadiness(array $salesReadiness = array())
    {
        // validation for constraint: array
        if ('' !== ($salesReadinessArrayErrorMessage = self::validateSalesReadinessForArrayConstraintsFromSetSalesReadiness($salesReadiness))) {
            throw new \InvalidArgumentException($salesReadinessArrayErrorMessage, __LINE__);
        }
        $this->salesReadiness = $salesReadiness;
        return $this;
    }
    /**
     * Add item to salesReadiness value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToSalesReadiness(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The salesReadiness property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->salesReadiness[] = $item;
        return $this;
    }
    /**
     * Get salesRep value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSalesRep()
    {
        return $this->salesRep;
    }
    /**
     * This method is responsible for validating the values passed to the setSalesRep method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalesRep method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalesRepForArrayConstraintsFromSetSalesRep(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicSalesRepItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicSalesRepItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicSalesRepItem) ? get_class($opportunitySearchRowBasicSalesRepItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicSalesRepItem), var_export($opportunitySearchRowBasicSalesRepItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salesRep property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set salesRep value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $salesRep
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setSalesRep(array $salesRep = array())
    {
        // validation for constraint: array
        if ('' !== ($salesRepArrayErrorMessage = self::validateSalesRepForArrayConstraintsFromSetSalesRep($salesRep))) {
            throw new \InvalidArgumentException($salesRepArrayErrorMessage, __LINE__);
        }
        $this->salesRep = $salesRep;
        return $this;
    }
    /**
     * Add item to salesRep value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToSalesRep(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The salesRep property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->salesRep[] = $item;
        return $this;
    }
    /**
     * Get salesTeamMember value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSalesTeamMember()
    {
        return $this->salesTeamMember;
    }
    /**
     * This method is responsible for validating the values passed to the setSalesTeamMember method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalesTeamMember method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalesTeamMemberForArrayConstraintsFromSetSalesTeamMember(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicSalesTeamMemberItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicSalesTeamMemberItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicSalesTeamMemberItem) ? get_class($opportunitySearchRowBasicSalesTeamMemberItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicSalesTeamMemberItem), var_export($opportunitySearchRowBasicSalesTeamMemberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salesTeamMember property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set salesTeamMember value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $salesTeamMember
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setSalesTeamMember(array $salesTeamMember = array())
    {
        // validation for constraint: array
        if ('' !== ($salesTeamMemberArrayErrorMessage = self::validateSalesTeamMemberForArrayConstraintsFromSetSalesTeamMember($salesTeamMember))) {
            throw new \InvalidArgumentException($salesTeamMemberArrayErrorMessage, __LINE__);
        }
        $this->salesTeamMember = $salesTeamMember;
        return $this;
    }
    /**
     * Add item to salesTeamMember value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToSalesTeamMember(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The salesTeamMember property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->salesTeamMember[] = $item;
        return $this;
    }
    /**
     * Get salesTeamRole value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSalesTeamRole()
    {
        return $this->salesTeamRole;
    }
    /**
     * This method is responsible for validating the values passed to the setSalesTeamRole method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSalesTeamRole method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSalesTeamRoleForArrayConstraintsFromSetSalesTeamRole(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicSalesTeamRoleItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicSalesTeamRoleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicSalesTeamRoleItem) ? get_class($opportunitySearchRowBasicSalesTeamRoleItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicSalesTeamRoleItem), var_export($opportunitySearchRowBasicSalesTeamRoleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The salesTeamRole property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set salesTeamRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $salesTeamRole
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setSalesTeamRole(array $salesTeamRole = array())
    {
        // validation for constraint: array
        if ('' !== ($salesTeamRoleArrayErrorMessage = self::validateSalesTeamRoleForArrayConstraintsFromSetSalesTeamRole($salesTeamRole))) {
            throw new \InvalidArgumentException($salesTeamRoleArrayErrorMessage, __LINE__);
        }
        $this->salesTeamRole = $salesTeamRole;
        return $this;
    }
    /**
     * Add item to salesTeamRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToSalesTeamRole(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The salesTeamRole property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->salesTeamRole[] = $item;
        return $this;
    }
    /**
     * Get 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 $opportunitySearchRowBasicSubsidiaryItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicSubsidiaryItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicSubsidiaryItem) ? get_class($opportunitySearchRowBasicSubsidiaryItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicSubsidiaryItem), var_export($opportunitySearchRowBasicSubsidiaryItem, 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\OpportunitySearchRowBasic
     */
    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\OpportunitySearchRowBasic
     */
    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 taxPeriod value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getTaxPeriod()
    {
        return $this->taxPeriod;
    }
    /**
     * This method is responsible for validating the values passed to the setTaxPeriod method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTaxPeriod method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTaxPeriodForArrayConstraintsFromSetTaxPeriod(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicTaxPeriodItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicTaxPeriodItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicTaxPeriodItem) ? get_class($opportunitySearchRowBasicTaxPeriodItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicTaxPeriodItem), var_export($opportunitySearchRowBasicTaxPeriodItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The taxPeriod 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 taxPeriod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $taxPeriod
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setTaxPeriod(array $taxPeriod = array())
    {
        // validation for constraint: array
        if ('' !== ($taxPeriodArrayErrorMessage = self::validateTaxPeriodForArrayConstraintsFromSetTaxPeriod($taxPeriod))) {
            throw new \InvalidArgumentException($taxPeriodArrayErrorMessage, __LINE__);
        }
        $this->taxPeriod = $taxPeriod;
        return $this;
    }
    /**
     * Add item to taxPeriod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToTaxPeriod(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The taxPeriod 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->taxPeriod[] = $item;
        return $this;
    }
    /**
     * Get title value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getTitle()
    {
        return $this->title;
    }
    /**
     * This method is responsible for validating the values passed to the setTitle method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTitle method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTitleForArrayConstraintsFromSetTitle(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicTitleItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicTitleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicTitleItem) ? get_class($opportunitySearchRowBasicTitleItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicTitleItem), var_export($opportunitySearchRowBasicTitleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The title property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set title value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $title
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setTitle(array $title = array())
    {
        // validation for constraint: array
        if ('' !== ($titleArrayErrorMessage = self::validateTitleForArrayConstraintsFromSetTitle($title))) {
            throw new \InvalidArgumentException($titleArrayErrorMessage, __LINE__);
        }
        $this->title = $title;
        return $this;
    }
    /**
     * Add item to title value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToTitle(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The title property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->title[] = $item;
        return $this;
    }
    /**
     * Get total value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getTotal()
    {
        return $this->total;
    }
    /**
     * This method is responsible for validating the values passed to the setTotal method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTotal method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTotalForArrayConstraintsFromSetTotal(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicTotalItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicTotalItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicTotalItem) ? get_class($opportunitySearchRowBasicTotalItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicTotalItem), var_export($opportunitySearchRowBasicTotalItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The total 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 total value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $total
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setTotal(array $total = array())
    {
        // validation for constraint: array
        if ('' !== ($totalArrayErrorMessage = self::validateTotalForArrayConstraintsFromSetTotal($total))) {
            throw new \InvalidArgumentException($totalArrayErrorMessage, __LINE__);
        }
        $this->total = $total;
        return $this;
    }
    /**
     * Add item to total value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToTotal(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The total 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->total[] = $item;
        return $this;
    }
    /**
     * Get tranCostEstimate value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getTranCostEstimate()
    {
        return $this->tranCostEstimate;
    }
    /**
     * This method is responsible for validating the values passed to the setTranCostEstimate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTranCostEstimate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTranCostEstimateForArrayConstraintsFromSetTranCostEstimate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicTranCostEstimateItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicTranCostEstimateItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicTranCostEstimateItem) ? get_class($opportunitySearchRowBasicTranCostEstimateItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicTranCostEstimateItem), var_export($opportunitySearchRowBasicTranCostEstimateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The tranCostEstimate 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 tranCostEstimate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $tranCostEstimate
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setTranCostEstimate(array $tranCostEstimate = array())
    {
        // validation for constraint: array
        if ('' !== ($tranCostEstimateArrayErrorMessage = self::validateTranCostEstimateForArrayConstraintsFromSetTranCostEstimate($tranCostEstimate))) {
            throw new \InvalidArgumentException($tranCostEstimateArrayErrorMessage, __LINE__);
        }
        $this->tranCostEstimate = $tranCostEstimate;
        return $this;
    }
    /**
     * Add item to tranCostEstimate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToTranCostEstimate(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The tranCostEstimate 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->tranCostEstimate[] = $item;
        return $this;
    }
    /**
     * Get tranDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getTranDate()
    {
        return $this->tranDate;
    }
    /**
     * This method is responsible for validating the values passed to the setTranDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTranDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTranDateForArrayConstraintsFromSetTranDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicTranDateItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicTranDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicTranDateItem) ? get_class($opportunitySearchRowBasicTranDateItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicTranDateItem), var_export($opportunitySearchRowBasicTranDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The tranDate 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 tranDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $tranDate
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setTranDate(array $tranDate = array())
    {
        // validation for constraint: array
        if ('' !== ($tranDateArrayErrorMessage = self::validateTranDateForArrayConstraintsFromSetTranDate($tranDate))) {
            throw new \InvalidArgumentException($tranDateArrayErrorMessage, __LINE__);
        }
        $this->tranDate = $tranDate;
        return $this;
    }
    /**
     * Add item to tranDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToTranDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The tranDate 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->tranDate[] = $item;
        return $this;
    }
    /**
     * Get tranEstGrossProfit value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getTranEstGrossProfit()
    {
        return $this->tranEstGrossProfit;
    }
    /**
     * This method is responsible for validating the values passed to the setTranEstGrossProfit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTranEstGrossProfit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTranEstGrossProfitForArrayConstraintsFromSetTranEstGrossProfit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicTranEstGrossProfitItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicTranEstGrossProfitItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicTranEstGrossProfitItem) ? get_class($opportunitySearchRowBasicTranEstGrossProfitItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicTranEstGrossProfitItem), var_export($opportunitySearchRowBasicTranEstGrossProfitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The tranEstGrossProfit 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 tranEstGrossProfit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $tranEstGrossProfit
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setTranEstGrossProfit(array $tranEstGrossProfit = array())
    {
        // validation for constraint: array
        if ('' !== ($tranEstGrossProfitArrayErrorMessage = self::validateTranEstGrossProfitForArrayConstraintsFromSetTranEstGrossProfit($tranEstGrossProfit))) {
            throw new \InvalidArgumentException($tranEstGrossProfitArrayErrorMessage, __LINE__);
        }
        $this->tranEstGrossProfit = $tranEstGrossProfit;
        return $this;
    }
    /**
     * Add item to tranEstGrossProfit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToTranEstGrossProfit(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The tranEstGrossProfit 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->tranEstGrossProfit[] = $item;
        return $this;
    }
    /**
     * Get tranEstGrossProfitPct value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getTranEstGrossProfitPct()
    {
        return $this->tranEstGrossProfitPct;
    }
    /**
     * This method is responsible for validating the values passed to the setTranEstGrossProfitPct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTranEstGrossProfitPct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTranEstGrossProfitPctForArrayConstraintsFromSetTranEstGrossProfitPct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicTranEstGrossProfitPctItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicTranEstGrossProfitPctItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicTranEstGrossProfitPctItem) ? get_class($opportunitySearchRowBasicTranEstGrossProfitPctItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicTranEstGrossProfitPctItem), var_export($opportunitySearchRowBasicTranEstGrossProfitPctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The tranEstGrossProfitPct 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 tranEstGrossProfitPct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $tranEstGrossProfitPct
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setTranEstGrossProfitPct(array $tranEstGrossProfitPct = array())
    {
        // validation for constraint: array
        if ('' !== ($tranEstGrossProfitPctArrayErrorMessage = self::validateTranEstGrossProfitPctForArrayConstraintsFromSetTranEstGrossProfitPct($tranEstGrossProfitPct))) {
            throw new \InvalidArgumentException($tranEstGrossProfitPctArrayErrorMessage, __LINE__);
        }
        $this->tranEstGrossProfitPct = $tranEstGrossProfitPct;
        return $this;
    }
    /**
     * Add item to tranEstGrossProfitPct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToTranEstGrossProfitPct(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The tranEstGrossProfitPct 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->tranEstGrossProfitPct[] = $item;
        return $this;
    }
    /**
     * Get tranFxEstGrossProfit value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getTranFxEstGrossProfit()
    {
        return $this->tranFxEstGrossProfit;
    }
    /**
     * This method is responsible for validating the values passed to the setTranFxEstGrossProfit method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTranFxEstGrossProfit method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTranFxEstGrossProfitForArrayConstraintsFromSetTranFxEstGrossProfit(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicTranFxEstGrossProfitItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicTranFxEstGrossProfitItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicTranFxEstGrossProfitItem) ? get_class($opportunitySearchRowBasicTranFxEstGrossProfitItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicTranFxEstGrossProfitItem), var_export($opportunitySearchRowBasicTranFxEstGrossProfitItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The tranFxEstGrossProfit 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 tranFxEstGrossProfit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $tranFxEstGrossProfit
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setTranFxEstGrossProfit(array $tranFxEstGrossProfit = array())
    {
        // validation for constraint: array
        if ('' !== ($tranFxEstGrossProfitArrayErrorMessage = self::validateTranFxEstGrossProfitForArrayConstraintsFromSetTranFxEstGrossProfit($tranFxEstGrossProfit))) {
            throw new \InvalidArgumentException($tranFxEstGrossProfitArrayErrorMessage, __LINE__);
        }
        $this->tranFxEstGrossProfit = $tranFxEstGrossProfit;
        return $this;
    }
    /**
     * Add item to tranFxEstGrossProfit value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToTranFxEstGrossProfit(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The tranFxEstGrossProfit 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->tranFxEstGrossProfit[] = $item;
        return $this;
    }
    /**
     * Get tranId value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getTranId()
    {
        return $this->tranId;
    }
    /**
     * This method is responsible for validating the values passed to the setTranId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTranId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTranIdForArrayConstraintsFromSetTranId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicTranIdItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicTranIdItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicTranIdItem) ? get_class($opportunitySearchRowBasicTranIdItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicTranIdItem), var_export($opportunitySearchRowBasicTranIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The tranId property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set tranId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $tranId
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setTranId(array $tranId = array())
    {
        // validation for constraint: array
        if ('' !== ($tranIdArrayErrorMessage = self::validateTranIdForArrayConstraintsFromSetTranId($tranId))) {
            throw new \InvalidArgumentException($tranIdArrayErrorMessage, __LINE__);
        }
        $this->tranId = $tranId;
        return $this;
    }
    /**
     * Add item to tranId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToTranId(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The tranId property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->tranId[] = $item;
        return $this;
    }
    /**
     * Get weightedTotal value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getWeightedTotal()
    {
        return $this->weightedTotal;
    }
    /**
     * This method is responsible for validating the values passed to the setWeightedTotal method
     * This method is willingly generated in order to preserve the one-line inline validation within the setWeightedTotal method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateWeightedTotalForArrayConstraintsFromSetWeightedTotal(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicWeightedTotalItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicWeightedTotalItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicWeightedTotalItem) ? get_class($opportunitySearchRowBasicWeightedTotalItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicWeightedTotalItem), var_export($opportunitySearchRowBasicWeightedTotalItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The weightedTotal 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 weightedTotal value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $weightedTotal
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setWeightedTotal(array $weightedTotal = array())
    {
        // validation for constraint: array
        if ('' !== ($weightedTotalArrayErrorMessage = self::validateWeightedTotalForArrayConstraintsFromSetWeightedTotal($weightedTotal))) {
            throw new \InvalidArgumentException($weightedTotalArrayErrorMessage, __LINE__);
        }
        $this->weightedTotal = $weightedTotal;
        return $this;
    }
    /**
     * Add item to weightedTotal value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToWeightedTotal(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The weightedTotal 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->weightedTotal[] = $item;
        return $this;
    }
    /**
     * Get winLossReason value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getWinLossReason()
    {
        return $this->winLossReason;
    }
    /**
     * This method is responsible for validating the values passed to the setWinLossReason method
     * This method is willingly generated in order to preserve the one-line inline validation within the setWinLossReason method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateWinLossReasonForArrayConstraintsFromSetWinLossReason(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicWinLossReasonItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicWinLossReasonItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicWinLossReasonItem) ? get_class($opportunitySearchRowBasicWinLossReasonItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicWinLossReasonItem), var_export($opportunitySearchRowBasicWinLossReasonItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The winLossReason 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 winLossReason value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $winLossReason
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setWinLossReason(array $winLossReason = array())
    {
        // validation for constraint: array
        if ('' !== ($winLossReasonArrayErrorMessage = self::validateWinLossReasonForArrayConstraintsFromSetWinLossReason($winLossReason))) {
            throw new \InvalidArgumentException($winLossReasonArrayErrorMessage, __LINE__);
        }
        $this->winLossReason = $winLossReason;
        return $this;
    }
    /**
     * Add item to winLossReason value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToWinLossReason(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The winLossReason 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->winLossReason[] = $item;
        return $this;
    }
    /**
     * Get wonBy value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getWonBy()
    {
        return $this->wonBy;
    }
    /**
     * This method is responsible for validating the values passed to the setWonBy method
     * This method is willingly generated in order to preserve the one-line inline validation within the setWonBy method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateWonByForArrayConstraintsFromSetWonBy(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $opportunitySearchRowBasicWonByItem) {
            // validation for constraint: itemType
            if (!$opportunitySearchRowBasicWonByItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($opportunitySearchRowBasicWonByItem) ? get_class($opportunitySearchRowBasicWonByItem) : sprintf('%s(%s)', gettype($opportunitySearchRowBasicWonByItem), var_export($opportunitySearchRowBasicWonByItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The wonBy 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 wonBy value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $wonBy
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function setWonBy(array $wonBy = array())
    {
        // validation for constraint: array
        if ('' !== ($wonByArrayErrorMessage = self::validateWonByForArrayConstraintsFromSetWonBy($wonBy))) {
            throw new \InvalidArgumentException($wonByArrayErrorMessage, __LINE__);
        }
        $this->wonBy = $wonBy;
        return $this;
    }
    /**
     * Add item to wonBy value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\OpportunitySearchRowBasic
     */
    public function addToWonBy(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The wonBy 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->wonBy[] = $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\OpportunitySearchRowBasic
     */
    public function setCustomFieldList(\StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this->customFieldList = $customFieldList;
        return $this;
    }
}
