<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CampaignSearchRowBasic StructType
 * @subpackage Structs
 */
class CampaignSearchRowBasic extends SearchRowBasic
{
    /**
     * The audience
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $audience;
    /**
     * The baseCost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $baseCost;
    /**
     * The campaignId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $campaignId;
    /**
     * The category
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $category;
    /**
     * The channel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $channel;
    /**
     * The cost
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $cost;
    /**
     * The createdDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $createdDate;
    /**
     * The endDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $endDate;
    /**
     * The event
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $event;
    /**
     * The executedDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $executedDate;
    /**
     * The expectedRevenue
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $expectedRevenue;
    /**
     * The externalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $externalId;
    /**
     * The family
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $family;
    /**
     * The internalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $internalId;
    /**
     * The isInactive
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isInactive;
    /**
     * The isSalesCampaign
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isSalesCampaign;
    /**
     * The item
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $item;
    /**
     * The keyword
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $keyword;
    /**
     * The lastModifiedDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastModifiedDate;
    /**
     * The managerRole
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $managerRole;
    /**
     * The message
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $message;
    /**
     * The offer
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $offer;
    /**
     * The owner
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $owner;
    /**
     * The promoCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $promoCode;
    /**
     * The recipient
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $recipient;
    /**
     * The response
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $response;
    /**
     * The responseCategory
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $responseCategory;
    /**
     * The responseCode
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $responseCode;
    /**
     * The responseDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $responseDate;
    /**
     * The responseNotes
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $responseNotes;
    /**
     * The revenue
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $revenue;
    /**
     * The roi
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $roi;
    /**
     * The scheduledDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $scheduledDate;
    /**
     * The searchEngine
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $searchEngine;
    /**
     * The startDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $startDate;
    /**
     * The status
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $status;
    /**
     * The subscription
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $subscription;
    /**
     * The title
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $title;
    /**
     * The url
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $url;
    /**
     * The vertical
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $vertical;
    /**
     * The customFieldList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\SearchColumnCustomFieldList
     */
    public $customFieldList;
    /**
     * Constructor method for CampaignSearchRowBasic
     * @uses CampaignSearchRowBasic::setAudience()
     * @uses CampaignSearchRowBasic::setBaseCost()
     * @uses CampaignSearchRowBasic::setCampaignId()
     * @uses CampaignSearchRowBasic::setCategory()
     * @uses CampaignSearchRowBasic::setChannel()
     * @uses CampaignSearchRowBasic::setCost()
     * @uses CampaignSearchRowBasic::setCreatedDate()
     * @uses CampaignSearchRowBasic::setEndDate()
     * @uses CampaignSearchRowBasic::setEvent()
     * @uses CampaignSearchRowBasic::setExecutedDate()
     * @uses CampaignSearchRowBasic::setExpectedRevenue()
     * @uses CampaignSearchRowBasic::setExternalId()
     * @uses CampaignSearchRowBasic::setFamily()
     * @uses CampaignSearchRowBasic::setInternalId()
     * @uses CampaignSearchRowBasic::setIsInactive()
     * @uses CampaignSearchRowBasic::setIsSalesCampaign()
     * @uses CampaignSearchRowBasic::setItem()
     * @uses CampaignSearchRowBasic::setKeyword()
     * @uses CampaignSearchRowBasic::setLastModifiedDate()
     * @uses CampaignSearchRowBasic::setManagerRole()
     * @uses CampaignSearchRowBasic::setMessage()
     * @uses CampaignSearchRowBasic::setOffer()
     * @uses CampaignSearchRowBasic::setOwner()
     * @uses CampaignSearchRowBasic::setPromoCode()
     * @uses CampaignSearchRowBasic::setRecipient()
     * @uses CampaignSearchRowBasic::setResponse()
     * @uses CampaignSearchRowBasic::setResponseCategory()
     * @uses CampaignSearchRowBasic::setResponseCode()
     * @uses CampaignSearchRowBasic::setResponseDate()
     * @uses CampaignSearchRowBasic::setResponseNotes()
     * @uses CampaignSearchRowBasic::setRevenue()
     * @uses CampaignSearchRowBasic::setRoi()
     * @uses CampaignSearchRowBasic::setScheduledDate()
     * @uses CampaignSearchRowBasic::setSearchEngine()
     * @uses CampaignSearchRowBasic::setStartDate()
     * @uses CampaignSearchRowBasic::setStatus()
     * @uses CampaignSearchRowBasic::setSubscription()
     * @uses CampaignSearchRowBasic::setTitle()
     * @uses CampaignSearchRowBasic::setUrl()
     * @uses CampaignSearchRowBasic::setVertical()
     * @uses CampaignSearchRowBasic::setCustomFieldList()
     * @param \StructType\SearchColumnSelectField[] $audience
     * @param \StructType\SearchColumnDoubleField[] $baseCost
     * @param \StructType\SearchColumnStringField[] $campaignId
     * @param \StructType\SearchColumnSelectField[] $category
     * @param \StructType\SearchColumnSelectField[] $channel
     * @param \StructType\SearchColumnDoubleField[] $cost
     * @param \StructType\SearchColumnDateField[] $createdDate
     * @param \StructType\SearchColumnDateField[] $endDate
     * @param \StructType\SearchColumnStringField[] $event
     * @param \StructType\SearchColumnDateField[] $executedDate
     * @param \StructType\SearchColumnDoubleField[] $expectedRevenue
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @param \StructType\SearchColumnSelectField[] $family
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @param \StructType\SearchColumnBooleanField[] $isInactive
     * @param \StructType\SearchColumnBooleanField[] $isSalesCampaign
     * @param \StructType\SearchColumnSelectField[] $item
     * @param \StructType\SearchColumnStringField[] $keyword
     * @param \StructType\SearchColumnDateField[] $lastModifiedDate
     * @param \StructType\SearchColumnSelectField[] $managerRole
     * @param \StructType\SearchColumnStringField[] $message
     * @param \StructType\SearchColumnSelectField[] $offer
     * @param \StructType\SearchColumnSelectField[] $owner
     * @param \StructType\SearchColumnStringField[] $promoCode
     * @param \StructType\SearchColumnSelectField[] $recipient
     * @param \StructType\SearchColumnEnumSelectField[] $response
     * @param \StructType\SearchColumnEnumSelectField[] $responseCategory
     * @param \StructType\SearchColumnLongField[] $responseCode
     * @param \StructType\SearchColumnDateField[] $responseDate
     * @param \StructType\SearchColumnStringField[] $responseNotes
     * @param \StructType\SearchColumnDoubleField[] $revenue
     * @param \StructType\SearchColumnDoubleField[] $roi
     * @param \StructType\SearchColumnDateField[] $scheduledDate
     * @param \StructType\SearchColumnSelectField[] $searchEngine
     * @param \StructType\SearchColumnDateField[] $startDate
     * @param \StructType\SearchColumnEnumSelectField[] $status
     * @param \StructType\SearchColumnSelectField[] $subscription
     * @param \StructType\SearchColumnStringField[] $title
     * @param \StructType\SearchColumnStringField[] $url
     * @param \StructType\SearchColumnSelectField[] $vertical
     * @param \StructType\SearchColumnCustomFieldList $customFieldList
     */
    public function __construct(array $audience = array(), array $baseCost = array(), array $campaignId = array(), array $category = array(), array $channel = array(), array $cost = array(), array $createdDate = array(), array $endDate = array(), array $event = array(), array $executedDate = array(), array $expectedRevenue = array(), array $externalId = array(), array $family = array(), array $internalId = array(), array $isInactive = array(), array $isSalesCampaign = array(), array $item = array(), array $keyword = array(), array $lastModifiedDate = array(), array $managerRole = array(), array $message = array(), array $offer = array(), array $owner = array(), array $promoCode = array(), array $recipient = array(), array $response = array(), array $responseCategory = array(), array $responseCode = array(), array $responseDate = array(), array $responseNotes = array(), array $revenue = array(), array $roi = array(), array $scheduledDate = array(), array $searchEngine = array(), array $startDate = array(), array $status = array(), array $subscription = array(), array $title = array(), array $url = array(), array $vertical = array(), \StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this
            ->setAudience($audience)
            ->setBaseCost($baseCost)
            ->setCampaignId($campaignId)
            ->setCategory($category)
            ->setChannel($channel)
            ->setCost($cost)
            ->setCreatedDate($createdDate)
            ->setEndDate($endDate)
            ->setEvent($event)
            ->setExecutedDate($executedDate)
            ->setExpectedRevenue($expectedRevenue)
            ->setExternalId($externalId)
            ->setFamily($family)
            ->setInternalId($internalId)
            ->setIsInactive($isInactive)
            ->setIsSalesCampaign($isSalesCampaign)
            ->setItem($item)
            ->setKeyword($keyword)
            ->setLastModifiedDate($lastModifiedDate)
            ->setManagerRole($managerRole)
            ->setMessage($message)
            ->setOffer($offer)
            ->setOwner($owner)
            ->setPromoCode($promoCode)
            ->setRecipient($recipient)
            ->setResponse($response)
            ->setResponseCategory($responseCategory)
            ->setResponseCode($responseCode)
            ->setResponseDate($responseDate)
            ->setResponseNotes($responseNotes)
            ->setRevenue($revenue)
            ->setRoi($roi)
            ->setScheduledDate($scheduledDate)
            ->setSearchEngine($searchEngine)
            ->setStartDate($startDate)
            ->setStatus($status)
            ->setSubscription($subscription)
            ->setTitle($title)
            ->setUrl($url)
            ->setVertical($vertical)
            ->setCustomFieldList($customFieldList);
    }
    /**
     * Get audience value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAudience()
    {
        return $this->audience;
    }
    /**
     * This method is responsible for validating the values passed to the setAudience method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAudience method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAudienceForArrayConstraintsFromSetAudience(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicAudienceItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicAudienceItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicAudienceItem) ? get_class($campaignSearchRowBasicAudienceItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicAudienceItem), var_export($campaignSearchRowBasicAudienceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The audience 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 audience value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $audience
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setAudience(array $audience = array())
    {
        // validation for constraint: array
        if ('' !== ($audienceArrayErrorMessage = self::validateAudienceForArrayConstraintsFromSetAudience($audience))) {
            throw new \InvalidArgumentException($audienceArrayErrorMessage, __LINE__);
        }
        $this->audience = $audience;
        return $this;
    }
    /**
     * Add item to audience value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToAudience(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The audience 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->audience[] = $item;
        return $this;
    }
    /**
     * Get baseCost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getBaseCost()
    {
        return $this->baseCost;
    }
    /**
     * This method is responsible for validating the values passed to the setBaseCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setBaseCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateBaseCostForArrayConstraintsFromSetBaseCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicBaseCostItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicBaseCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($campaignSearchRowBasicBaseCostItem) ? get_class($campaignSearchRowBasicBaseCostItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicBaseCostItem), var_export($campaignSearchRowBasicBaseCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The baseCost 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 baseCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $baseCost
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setBaseCost(array $baseCost = array())
    {
        // validation for constraint: array
        if ('' !== ($baseCostArrayErrorMessage = self::validateBaseCostForArrayConstraintsFromSetBaseCost($baseCost))) {
            throw new \InvalidArgumentException($baseCostArrayErrorMessage, __LINE__);
        }
        $this->baseCost = $baseCost;
        return $this;
    }
    /**
     * Add item to baseCost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToBaseCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The baseCost 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->baseCost[] = $item;
        return $this;
    }
    /**
     * Get campaignId value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCampaignId()
    {
        return $this->campaignId;
    }
    /**
     * This method is responsible for validating the values passed to the setCampaignId method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCampaignId method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCampaignIdForArrayConstraintsFromSetCampaignId(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicCampaignIdItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicCampaignIdItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($campaignSearchRowBasicCampaignIdItem) ? get_class($campaignSearchRowBasicCampaignIdItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicCampaignIdItem), var_export($campaignSearchRowBasicCampaignIdItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The campaignId property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set campaignId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $campaignId
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setCampaignId(array $campaignId = array())
    {
        // validation for constraint: array
        if ('' !== ($campaignIdArrayErrorMessage = self::validateCampaignIdForArrayConstraintsFromSetCampaignId($campaignId))) {
            throw new \InvalidArgumentException($campaignIdArrayErrorMessage, __LINE__);
        }
        $this->campaignId = $campaignId;
        return $this;
    }
    /**
     * Add item to campaignId value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToCampaignId(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The campaignId property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->campaignId[] = $item;
        return $this;
    }
    /**
     * Get category value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCategory()
    {
        return $this->category;
    }
    /**
     * This method is responsible for validating the values passed to the setCategory method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCategory method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCategoryForArrayConstraintsFromSetCategory(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicCategoryItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicCategoryItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicCategoryItem) ? get_class($campaignSearchRowBasicCategoryItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicCategoryItem), var_export($campaignSearchRowBasicCategoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The category property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set category value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $category
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setCategory(array $category = array())
    {
        // validation for constraint: array
        if ('' !== ($categoryArrayErrorMessage = self::validateCategoryForArrayConstraintsFromSetCategory($category))) {
            throw new \InvalidArgumentException($categoryArrayErrorMessage, __LINE__);
        }
        $this->category = $category;
        return $this;
    }
    /**
     * Add item to category value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToCategory(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The category property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->category[] = $item;
        return $this;
    }
    /**
     * Get channel value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getChannel()
    {
        return $this->channel;
    }
    /**
     * This method is responsible for validating the values passed to the setChannel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setChannel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateChannelForArrayConstraintsFromSetChannel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicChannelItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicChannelItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicChannelItem) ? get_class($campaignSearchRowBasicChannelItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicChannelItem), var_export($campaignSearchRowBasicChannelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The channel 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 channel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $channel
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setChannel(array $channel = array())
    {
        // validation for constraint: array
        if ('' !== ($channelArrayErrorMessage = self::validateChannelForArrayConstraintsFromSetChannel($channel))) {
            throw new \InvalidArgumentException($channelArrayErrorMessage, __LINE__);
        }
        $this->channel = $channel;
        return $this;
    }
    /**
     * Add item to channel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToChannel(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The channel 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->channel[] = $item;
        return $this;
    }
    /**
     * Get cost value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getCost()
    {
        return $this->cost;
    }
    /**
     * This method is responsible for validating the values passed to the setCost method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCost method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCostForArrayConstraintsFromSetCost(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicCostItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicCostItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($campaignSearchRowBasicCostItem) ? get_class($campaignSearchRowBasicCostItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicCostItem), var_export($campaignSearchRowBasicCostItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The cost property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set cost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $cost
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setCost(array $cost = array())
    {
        // validation for constraint: array
        if ('' !== ($costArrayErrorMessage = self::validateCostForArrayConstraintsFromSetCost($cost))) {
            throw new \InvalidArgumentException($costArrayErrorMessage, __LINE__);
        }
        $this->cost = $cost;
        return $this;
    }
    /**
     * Add item to cost value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToCost(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The cost property can only contain items of type \StructType\SearchColumnDoubleField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->cost[] = $item;
        return $this;
    }
    /**
     * Get createdDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getCreatedDate()
    {
        return $this->createdDate;
    }
    /**
     * This method is responsible for validating the values passed to the setCreatedDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCreatedDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCreatedDateForArrayConstraintsFromSetCreatedDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicCreatedDateItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicCreatedDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($campaignSearchRowBasicCreatedDateItem) ? get_class($campaignSearchRowBasicCreatedDateItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicCreatedDateItem), var_export($campaignSearchRowBasicCreatedDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The createdDate 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 createdDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $createdDate
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setCreatedDate(array $createdDate = array())
    {
        // validation for constraint: array
        if ('' !== ($createdDateArrayErrorMessage = self::validateCreatedDateForArrayConstraintsFromSetCreatedDate($createdDate))) {
            throw new \InvalidArgumentException($createdDateArrayErrorMessage, __LINE__);
        }
        $this->createdDate = $createdDate;
        return $this;
    }
    /**
     * Add item to createdDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToCreatedDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The createdDate 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->createdDate[] = $item;
        return $this;
    }
    /**
     * Get endDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getEndDate()
    {
        return $this->endDate;
    }
    /**
     * This method is responsible for validating the values passed to the setEndDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEndDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEndDateForArrayConstraintsFromSetEndDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicEndDateItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicEndDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($campaignSearchRowBasicEndDateItem) ? get_class($campaignSearchRowBasicEndDateItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicEndDateItem), var_export($campaignSearchRowBasicEndDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The endDate property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set endDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $endDate
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setEndDate(array $endDate = array())
    {
        // validation for constraint: array
        if ('' !== ($endDateArrayErrorMessage = self::validateEndDateForArrayConstraintsFromSetEndDate($endDate))) {
            throw new \InvalidArgumentException($endDateArrayErrorMessage, __LINE__);
        }
        $this->endDate = $endDate;
        return $this;
    }
    /**
     * Add item to endDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToEndDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The endDate property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->endDate[] = $item;
        return $this;
    }
    /**
     * Get event value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getEvent()
    {
        return $this->event;
    }
    /**
     * This method is responsible for validating the values passed to the setEvent method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEvent method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEventForArrayConstraintsFromSetEvent(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicEventItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicEventItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($campaignSearchRowBasicEventItem) ? get_class($campaignSearchRowBasicEventItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicEventItem), var_export($campaignSearchRowBasicEventItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The event property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set event value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $event
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setEvent(array $event = array())
    {
        // validation for constraint: array
        if ('' !== ($eventArrayErrorMessage = self::validateEventForArrayConstraintsFromSetEvent($event))) {
            throw new \InvalidArgumentException($eventArrayErrorMessage, __LINE__);
        }
        $this->event = $event;
        return $this;
    }
    /**
     * Add item to event value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToEvent(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The event property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->event[] = $item;
        return $this;
    }
    /**
     * Get executedDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getExecutedDate()
    {
        return $this->executedDate;
    }
    /**
     * This method is responsible for validating the values passed to the setExecutedDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setExecutedDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateExecutedDateForArrayConstraintsFromSetExecutedDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicExecutedDateItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicExecutedDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($campaignSearchRowBasicExecutedDateItem) ? get_class($campaignSearchRowBasicExecutedDateItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicExecutedDateItem), var_export($campaignSearchRowBasicExecutedDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The executedDate 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 executedDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $executedDate
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setExecutedDate(array $executedDate = array())
    {
        // validation for constraint: array
        if ('' !== ($executedDateArrayErrorMessage = self::validateExecutedDateForArrayConstraintsFromSetExecutedDate($executedDate))) {
            throw new \InvalidArgumentException($executedDateArrayErrorMessage, __LINE__);
        }
        $this->executedDate = $executedDate;
        return $this;
    }
    /**
     * Add item to executedDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToExecutedDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The executedDate 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->executedDate[] = $item;
        return $this;
    }
    /**
     * Get expectedRevenue value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getExpectedRevenue()
    {
        return $this->expectedRevenue;
    }
    /**
     * This method is responsible for validating the values passed to the setExpectedRevenue method
     * This method is willingly generated in order to preserve the one-line inline validation within the setExpectedRevenue method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateExpectedRevenueForArrayConstraintsFromSetExpectedRevenue(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicExpectedRevenueItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicExpectedRevenueItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($campaignSearchRowBasicExpectedRevenueItem) ? get_class($campaignSearchRowBasicExpectedRevenueItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicExpectedRevenueItem), var_export($campaignSearchRowBasicExpectedRevenueItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The expectedRevenue 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 expectedRevenue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $expectedRevenue
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setExpectedRevenue(array $expectedRevenue = array())
    {
        // validation for constraint: array
        if ('' !== ($expectedRevenueArrayErrorMessage = self::validateExpectedRevenueForArrayConstraintsFromSetExpectedRevenue($expectedRevenue))) {
            throw new \InvalidArgumentException($expectedRevenueArrayErrorMessage, __LINE__);
        }
        $this->expectedRevenue = $expectedRevenue;
        return $this;
    }
    /**
     * Add item to expectedRevenue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToExpectedRevenue(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The expectedRevenue 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->expectedRevenue[] = $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 $campaignSearchRowBasicExternalIdItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicExternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicExternalIdItem) ? get_class($campaignSearchRowBasicExternalIdItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicExternalIdItem), var_export($campaignSearchRowBasicExternalIdItem, 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\CampaignSearchRowBasic
     */
    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\CampaignSearchRowBasic
     */
    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 family value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getFamily()
    {
        return $this->family;
    }
    /**
     * This method is responsible for validating the values passed to the setFamily method
     * This method is willingly generated in order to preserve the one-line inline validation within the setFamily method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateFamilyForArrayConstraintsFromSetFamily(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicFamilyItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicFamilyItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicFamilyItem) ? get_class($campaignSearchRowBasicFamilyItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicFamilyItem), var_export($campaignSearchRowBasicFamilyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The family 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 family value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $family
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setFamily(array $family = array())
    {
        // validation for constraint: array
        if ('' !== ($familyArrayErrorMessage = self::validateFamilyForArrayConstraintsFromSetFamily($family))) {
            throw new \InvalidArgumentException($familyArrayErrorMessage, __LINE__);
        }
        $this->family = $family;
        return $this;
    }
    /**
     * Add item to family value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToFamily(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The family 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->family[] = $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 $campaignSearchRowBasicInternalIdItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicInternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicInternalIdItem) ? get_class($campaignSearchRowBasicInternalIdItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicInternalIdItem), var_export($campaignSearchRowBasicInternalIdItem, 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\CampaignSearchRowBasic
     */
    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\CampaignSearchRowBasic
     */
    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 isInactive value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsInactive()
    {
        return $this->isInactive;
    }
    /**
     * This method is responsible for validating the values passed to the setIsInactive method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsInactive method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsInactiveForArrayConstraintsFromSetIsInactive(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicIsInactiveItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicIsInactiveItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($campaignSearchRowBasicIsInactiveItem) ? get_class($campaignSearchRowBasicIsInactiveItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicIsInactiveItem), var_export($campaignSearchRowBasicIsInactiveItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isInactive property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set isInactive value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isInactive
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setIsInactive(array $isInactive = array())
    {
        // validation for constraint: array
        if ('' !== ($isInactiveArrayErrorMessage = self::validateIsInactiveForArrayConstraintsFromSetIsInactive($isInactive))) {
            throw new \InvalidArgumentException($isInactiveArrayErrorMessage, __LINE__);
        }
        $this->isInactive = $isInactive;
        return $this;
    }
    /**
     * Add item to isInactive value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToIsInactive(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isInactive property can only contain items of type \StructType\SearchColumnBooleanField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->isInactive[] = $item;
        return $this;
    }
    /**
     * Get isSalesCampaign value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsSalesCampaign()
    {
        return $this->isSalesCampaign;
    }
    /**
     * This method is responsible for validating the values passed to the setIsSalesCampaign method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsSalesCampaign method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsSalesCampaignForArrayConstraintsFromSetIsSalesCampaign(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicIsSalesCampaignItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicIsSalesCampaignItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($campaignSearchRowBasicIsSalesCampaignItem) ? get_class($campaignSearchRowBasicIsSalesCampaignItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicIsSalesCampaignItem), var_export($campaignSearchRowBasicIsSalesCampaignItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isSalesCampaign 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 isSalesCampaign value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isSalesCampaign
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setIsSalesCampaign(array $isSalesCampaign = array())
    {
        // validation for constraint: array
        if ('' !== ($isSalesCampaignArrayErrorMessage = self::validateIsSalesCampaignForArrayConstraintsFromSetIsSalesCampaign($isSalesCampaign))) {
            throw new \InvalidArgumentException($isSalesCampaignArrayErrorMessage, __LINE__);
        }
        $this->isSalesCampaign = $isSalesCampaign;
        return $this;
    }
    /**
     * Add item to isSalesCampaign value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToIsSalesCampaign(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isSalesCampaign 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->isSalesCampaign[] = $item;
        return $this;
    }
    /**
     * Get item value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getItem()
    {
        return $this->item;
    }
    /**
     * This method is responsible for validating the values passed to the setItem method
     * This method is willingly generated in order to preserve the one-line inline validation within the setItem method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateItemForArrayConstraintsFromSetItem(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicItemItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicItemItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicItemItem) ? get_class($campaignSearchRowBasicItemItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicItemItem), var_export($campaignSearchRowBasicItemItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The item 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 item value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setItem(array $item = array())
    {
        // validation for constraint: array
        if ('' !== ($itemArrayErrorMessage = self::validateItemForArrayConstraintsFromSetItem($item))) {
            throw new \InvalidArgumentException($itemArrayErrorMessage, __LINE__);
        }
        $this->item = $item;
        return $this;
    }
    /**
     * Add item to item value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToItem(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The item 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->item[] = $item;
        return $this;
    }
    /**
     * Get keyword value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getKeyword()
    {
        return $this->keyword;
    }
    /**
     * This method is responsible for validating the values passed to the setKeyword method
     * This method is willingly generated in order to preserve the one-line inline validation within the setKeyword method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateKeywordForArrayConstraintsFromSetKeyword(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicKeywordItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicKeywordItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($campaignSearchRowBasicKeywordItem) ? get_class($campaignSearchRowBasicKeywordItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicKeywordItem), var_export($campaignSearchRowBasicKeywordItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The keyword property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set keyword value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $keyword
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setKeyword(array $keyword = array())
    {
        // validation for constraint: array
        if ('' !== ($keywordArrayErrorMessage = self::validateKeywordForArrayConstraintsFromSetKeyword($keyword))) {
            throw new \InvalidArgumentException($keywordArrayErrorMessage, __LINE__);
        }
        $this->keyword = $keyword;
        return $this;
    }
    /**
     * Add item to keyword value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToKeyword(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The keyword property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->keyword[] = $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 $campaignSearchRowBasicLastModifiedDateItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicLastModifiedDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($campaignSearchRowBasicLastModifiedDateItem) ? get_class($campaignSearchRowBasicLastModifiedDateItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicLastModifiedDateItem), var_export($campaignSearchRowBasicLastModifiedDateItem, 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\CampaignSearchRowBasic
     */
    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\CampaignSearchRowBasic
     */
    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 managerRole value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getManagerRole()
    {
        return $this->managerRole;
    }
    /**
     * This method is responsible for validating the values passed to the setManagerRole method
     * This method is willingly generated in order to preserve the one-line inline validation within the setManagerRole method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateManagerRoleForArrayConstraintsFromSetManagerRole(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicManagerRoleItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicManagerRoleItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicManagerRoleItem) ? get_class($campaignSearchRowBasicManagerRoleItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicManagerRoleItem), var_export($campaignSearchRowBasicManagerRoleItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The managerRole 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 managerRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $managerRole
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setManagerRole(array $managerRole = array())
    {
        // validation for constraint: array
        if ('' !== ($managerRoleArrayErrorMessage = self::validateManagerRoleForArrayConstraintsFromSetManagerRole($managerRole))) {
            throw new \InvalidArgumentException($managerRoleArrayErrorMessage, __LINE__);
        }
        $this->managerRole = $managerRole;
        return $this;
    }
    /**
     * Add item to managerRole value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToManagerRole(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The managerRole 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->managerRole[] = $item;
        return $this;
    }
    /**
     * Get message value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getMessage()
    {
        return $this->message;
    }
    /**
     * This method is responsible for validating the values passed to the setMessage method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMessage method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMessageForArrayConstraintsFromSetMessage(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicMessageItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicMessageItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($campaignSearchRowBasicMessageItem) ? get_class($campaignSearchRowBasicMessageItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicMessageItem), var_export($campaignSearchRowBasicMessageItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The message property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set message value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $message
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setMessage(array $message = array())
    {
        // validation for constraint: array
        if ('' !== ($messageArrayErrorMessage = self::validateMessageForArrayConstraintsFromSetMessage($message))) {
            throw new \InvalidArgumentException($messageArrayErrorMessage, __LINE__);
        }
        $this->message = $message;
        return $this;
    }
    /**
     * Add item to message value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToMessage(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The message property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->message[] = $item;
        return $this;
    }
    /**
     * Get offer value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getOffer()
    {
        return $this->offer;
    }
    /**
     * This method is responsible for validating the values passed to the setOffer method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOffer method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOfferForArrayConstraintsFromSetOffer(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicOfferItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicOfferItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicOfferItem) ? get_class($campaignSearchRowBasicOfferItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicOfferItem), var_export($campaignSearchRowBasicOfferItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The offer 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 offer value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $offer
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setOffer(array $offer = array())
    {
        // validation for constraint: array
        if ('' !== ($offerArrayErrorMessage = self::validateOfferForArrayConstraintsFromSetOffer($offer))) {
            throw new \InvalidArgumentException($offerArrayErrorMessage, __LINE__);
        }
        $this->offer = $offer;
        return $this;
    }
    /**
     * Add item to offer value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToOffer(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The offer 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->offer[] = $item;
        return $this;
    }
    /**
     * Get owner value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getOwner()
    {
        return $this->owner;
    }
    /**
     * This method is responsible for validating the values passed to the setOwner method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOwner method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOwnerForArrayConstraintsFromSetOwner(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicOwnerItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicOwnerItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicOwnerItem) ? get_class($campaignSearchRowBasicOwnerItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicOwnerItem), var_export($campaignSearchRowBasicOwnerItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The owner 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 owner value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $owner
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setOwner(array $owner = array())
    {
        // validation for constraint: array
        if ('' !== ($ownerArrayErrorMessage = self::validateOwnerForArrayConstraintsFromSetOwner($owner))) {
            throw new \InvalidArgumentException($ownerArrayErrorMessage, __LINE__);
        }
        $this->owner = $owner;
        return $this;
    }
    /**
     * Add item to owner value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToOwner(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The owner 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->owner[] = $item;
        return $this;
    }
    /**
     * Get promoCode value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getPromoCode()
    {
        return $this->promoCode;
    }
    /**
     * This method is responsible for validating the values passed to the setPromoCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPromoCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePromoCodeForArrayConstraintsFromSetPromoCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicPromoCodeItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicPromoCodeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($campaignSearchRowBasicPromoCodeItem) ? get_class($campaignSearchRowBasicPromoCodeItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicPromoCodeItem), var_export($campaignSearchRowBasicPromoCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The promoCode property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set promoCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $promoCode
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setPromoCode(array $promoCode = array())
    {
        // validation for constraint: array
        if ('' !== ($promoCodeArrayErrorMessage = self::validatePromoCodeForArrayConstraintsFromSetPromoCode($promoCode))) {
            throw new \InvalidArgumentException($promoCodeArrayErrorMessage, __LINE__);
        }
        $this->promoCode = $promoCode;
        return $this;
    }
    /**
     * Add item to promoCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToPromoCode(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The promoCode property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->promoCode[] = $item;
        return $this;
    }
    /**
     * Get recipient value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getRecipient()
    {
        return $this->recipient;
    }
    /**
     * This method is responsible for validating the values passed to the setRecipient method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRecipient method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRecipientForArrayConstraintsFromSetRecipient(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicRecipientItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicRecipientItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicRecipientItem) ? get_class($campaignSearchRowBasicRecipientItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicRecipientItem), var_export($campaignSearchRowBasicRecipientItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The recipient 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 recipient value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $recipient
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setRecipient(array $recipient = array())
    {
        // validation for constraint: array
        if ('' !== ($recipientArrayErrorMessage = self::validateRecipientForArrayConstraintsFromSetRecipient($recipient))) {
            throw new \InvalidArgumentException($recipientArrayErrorMessage, __LINE__);
        }
        $this->recipient = $recipient;
        return $this;
    }
    /**
     * Add item to recipient value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToRecipient(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The recipient 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->recipient[] = $item;
        return $this;
    }
    /**
     * Get response value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getResponse()
    {
        return $this->response;
    }
    /**
     * This method is responsible for validating the values passed to the setResponse method
     * This method is willingly generated in order to preserve the one-line inline validation within the setResponse method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateResponseForArrayConstraintsFromSetResponse(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicResponseItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicResponseItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicResponseItem) ? get_class($campaignSearchRowBasicResponseItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicResponseItem), var_export($campaignSearchRowBasicResponseItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The response 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 response value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $response
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setResponse(array $response = array())
    {
        // validation for constraint: array
        if ('' !== ($responseArrayErrorMessage = self::validateResponseForArrayConstraintsFromSetResponse($response))) {
            throw new \InvalidArgumentException($responseArrayErrorMessage, __LINE__);
        }
        $this->response = $response;
        return $this;
    }
    /**
     * Add item to response value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToResponse(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The response 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->response[] = $item;
        return $this;
    }
    /**
     * Get responseCategory value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getResponseCategory()
    {
        return $this->responseCategory;
    }
    /**
     * This method is responsible for validating the values passed to the setResponseCategory method
     * This method is willingly generated in order to preserve the one-line inline validation within the setResponseCategory method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateResponseCategoryForArrayConstraintsFromSetResponseCategory(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicResponseCategoryItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicResponseCategoryItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicResponseCategoryItem) ? get_class($campaignSearchRowBasicResponseCategoryItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicResponseCategoryItem), var_export($campaignSearchRowBasicResponseCategoryItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The responseCategory 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 responseCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $responseCategory
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setResponseCategory(array $responseCategory = array())
    {
        // validation for constraint: array
        if ('' !== ($responseCategoryArrayErrorMessage = self::validateResponseCategoryForArrayConstraintsFromSetResponseCategory($responseCategory))) {
            throw new \InvalidArgumentException($responseCategoryArrayErrorMessage, __LINE__);
        }
        $this->responseCategory = $responseCategory;
        return $this;
    }
    /**
     * Add item to responseCategory value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToResponseCategory(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The responseCategory 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->responseCategory[] = $item;
        return $this;
    }
    /**
     * Get responseCode value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getResponseCode()
    {
        return $this->responseCode;
    }
    /**
     * This method is responsible for validating the values passed to the setResponseCode method
     * This method is willingly generated in order to preserve the one-line inline validation within the setResponseCode method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateResponseCodeForArrayConstraintsFromSetResponseCode(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicResponseCodeItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicResponseCodeItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($campaignSearchRowBasicResponseCodeItem) ? get_class($campaignSearchRowBasicResponseCodeItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicResponseCodeItem), var_export($campaignSearchRowBasicResponseCodeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The responseCode 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 responseCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $responseCode
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setResponseCode(array $responseCode = array())
    {
        // validation for constraint: array
        if ('' !== ($responseCodeArrayErrorMessage = self::validateResponseCodeForArrayConstraintsFromSetResponseCode($responseCode))) {
            throw new \InvalidArgumentException($responseCodeArrayErrorMessage, __LINE__);
        }
        $this->responseCode = $responseCode;
        return $this;
    }
    /**
     * Add item to responseCode value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToResponseCode(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The responseCode 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->responseCode[] = $item;
        return $this;
    }
    /**
     * Get responseDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getResponseDate()
    {
        return $this->responseDate;
    }
    /**
     * This method is responsible for validating the values passed to the setResponseDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setResponseDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateResponseDateForArrayConstraintsFromSetResponseDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicResponseDateItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicResponseDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($campaignSearchRowBasicResponseDateItem) ? get_class($campaignSearchRowBasicResponseDateItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicResponseDateItem), var_export($campaignSearchRowBasicResponseDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The responseDate 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 responseDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $responseDate
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setResponseDate(array $responseDate = array())
    {
        // validation for constraint: array
        if ('' !== ($responseDateArrayErrorMessage = self::validateResponseDateForArrayConstraintsFromSetResponseDate($responseDate))) {
            throw new \InvalidArgumentException($responseDateArrayErrorMessage, __LINE__);
        }
        $this->responseDate = $responseDate;
        return $this;
    }
    /**
     * Add item to responseDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToResponseDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The responseDate 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->responseDate[] = $item;
        return $this;
    }
    /**
     * Get responseNotes value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getResponseNotes()
    {
        return $this->responseNotes;
    }
    /**
     * This method is responsible for validating the values passed to the setResponseNotes method
     * This method is willingly generated in order to preserve the one-line inline validation within the setResponseNotes method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateResponseNotesForArrayConstraintsFromSetResponseNotes(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicResponseNotesItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicResponseNotesItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($campaignSearchRowBasicResponseNotesItem) ? get_class($campaignSearchRowBasicResponseNotesItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicResponseNotesItem), var_export($campaignSearchRowBasicResponseNotesItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The responseNotes property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set responseNotes value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $responseNotes
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setResponseNotes(array $responseNotes = array())
    {
        // validation for constraint: array
        if ('' !== ($responseNotesArrayErrorMessage = self::validateResponseNotesForArrayConstraintsFromSetResponseNotes($responseNotes))) {
            throw new \InvalidArgumentException($responseNotesArrayErrorMessage, __LINE__);
        }
        $this->responseNotes = $responseNotes;
        return $this;
    }
    /**
     * Add item to responseNotes value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToResponseNotes(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The responseNotes property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->responseNotes[] = $item;
        return $this;
    }
    /**
     * Get revenue value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getRevenue()
    {
        return $this->revenue;
    }
    /**
     * This method is responsible for validating the values passed to the setRevenue method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRevenue method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRevenueForArrayConstraintsFromSetRevenue(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicRevenueItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicRevenueItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($campaignSearchRowBasicRevenueItem) ? get_class($campaignSearchRowBasicRevenueItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicRevenueItem), var_export($campaignSearchRowBasicRevenueItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The revenue 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 revenue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $revenue
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setRevenue(array $revenue = array())
    {
        // validation for constraint: array
        if ('' !== ($revenueArrayErrorMessage = self::validateRevenueForArrayConstraintsFromSetRevenue($revenue))) {
            throw new \InvalidArgumentException($revenueArrayErrorMessage, __LINE__);
        }
        $this->revenue = $revenue;
        return $this;
    }
    /**
     * Add item to revenue value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToRevenue(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The revenue 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->revenue[] = $item;
        return $this;
    }
    /**
     * Get roi value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getRoi()
    {
        return $this->roi;
    }
    /**
     * This method is responsible for validating the values passed to the setRoi method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRoi method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRoiForArrayConstraintsFromSetRoi(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicRoiItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicRoiItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($campaignSearchRowBasicRoiItem) ? get_class($campaignSearchRowBasicRoiItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicRoiItem), var_export($campaignSearchRowBasicRoiItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The roi 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 roi value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $roi
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setRoi(array $roi = array())
    {
        // validation for constraint: array
        if ('' !== ($roiArrayErrorMessage = self::validateRoiForArrayConstraintsFromSetRoi($roi))) {
            throw new \InvalidArgumentException($roiArrayErrorMessage, __LINE__);
        }
        $this->roi = $roi;
        return $this;
    }
    /**
     * Add item to roi value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToRoi(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The roi 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->roi[] = $item;
        return $this;
    }
    /**
     * Get scheduledDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getScheduledDate()
    {
        return $this->scheduledDate;
    }
    /**
     * This method is responsible for validating the values passed to the setScheduledDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setScheduledDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateScheduledDateForArrayConstraintsFromSetScheduledDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicScheduledDateItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicScheduledDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($campaignSearchRowBasicScheduledDateItem) ? get_class($campaignSearchRowBasicScheduledDateItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicScheduledDateItem), var_export($campaignSearchRowBasicScheduledDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The scheduledDate 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 scheduledDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $scheduledDate
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setScheduledDate(array $scheduledDate = array())
    {
        // validation for constraint: array
        if ('' !== ($scheduledDateArrayErrorMessage = self::validateScheduledDateForArrayConstraintsFromSetScheduledDate($scheduledDate))) {
            throw new \InvalidArgumentException($scheduledDateArrayErrorMessage, __LINE__);
        }
        $this->scheduledDate = $scheduledDate;
        return $this;
    }
    /**
     * Add item to scheduledDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToScheduledDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The scheduledDate 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->scheduledDate[] = $item;
        return $this;
    }
    /**
     * Get searchEngine value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSearchEngine()
    {
        return $this->searchEngine;
    }
    /**
     * This method is responsible for validating the values passed to the setSearchEngine method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSearchEngine method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSearchEngineForArrayConstraintsFromSetSearchEngine(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicSearchEngineItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicSearchEngineItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicSearchEngineItem) ? get_class($campaignSearchRowBasicSearchEngineItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicSearchEngineItem), var_export($campaignSearchRowBasicSearchEngineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The searchEngine 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 searchEngine value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $searchEngine
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setSearchEngine(array $searchEngine = array())
    {
        // validation for constraint: array
        if ('' !== ($searchEngineArrayErrorMessage = self::validateSearchEngineForArrayConstraintsFromSetSearchEngine($searchEngine))) {
            throw new \InvalidArgumentException($searchEngineArrayErrorMessage, __LINE__);
        }
        $this->searchEngine = $searchEngine;
        return $this;
    }
    /**
     * Add item to searchEngine value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToSearchEngine(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The searchEngine 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->searchEngine[] = $item;
        return $this;
    }
    /**
     * Get startDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getStartDate()
    {
        return $this->startDate;
    }
    /**
     * This method is responsible for validating the values passed to the setStartDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStartDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStartDateForArrayConstraintsFromSetStartDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicStartDateItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicStartDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($campaignSearchRowBasicStartDateItem) ? get_class($campaignSearchRowBasicStartDateItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicStartDateItem), var_export($campaignSearchRowBasicStartDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The startDate property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set startDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $startDate
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setStartDate(array $startDate = array())
    {
        // validation for constraint: array
        if ('' !== ($startDateArrayErrorMessage = self::validateStartDateForArrayConstraintsFromSetStartDate($startDate))) {
            throw new \InvalidArgumentException($startDateArrayErrorMessage, __LINE__);
        }
        $this->startDate = $startDate;
        return $this;
    }
    /**
     * Add item to startDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToStartDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The startDate property can only contain items of type \StructType\SearchColumnDateField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->startDate[] = $item;
        return $this;
    }
    /**
     * Get 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 $campaignSearchRowBasicStatusItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicStatusItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicStatusItem) ? get_class($campaignSearchRowBasicStatusItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicStatusItem), var_export($campaignSearchRowBasicStatusItem, 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\CampaignSearchRowBasic
     */
    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\CampaignSearchRowBasic
     */
    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 subscription value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getSubscription()
    {
        return $this->subscription;
    }
    /**
     * This method is responsible for validating the values passed to the setSubscription method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSubscription method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSubscriptionForArrayConstraintsFromSetSubscription(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicSubscriptionItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicSubscriptionItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicSubscriptionItem) ? get_class($campaignSearchRowBasicSubscriptionItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicSubscriptionItem), var_export($campaignSearchRowBasicSubscriptionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The subscription property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set subscription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $subscription
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setSubscription(array $subscription = array())
    {
        // validation for constraint: array
        if ('' !== ($subscriptionArrayErrorMessage = self::validateSubscriptionForArrayConstraintsFromSetSubscription($subscription))) {
            throw new \InvalidArgumentException($subscriptionArrayErrorMessage, __LINE__);
        }
        $this->subscription = $subscription;
        return $this;
    }
    /**
     * Add item to subscription value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToSubscription(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The subscription property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->subscription[] = $item;
        return $this;
    }
    /**
     * Get 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 $campaignSearchRowBasicTitleItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicTitleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($campaignSearchRowBasicTitleItem) ? get_class($campaignSearchRowBasicTitleItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicTitleItem), var_export($campaignSearchRowBasicTitleItem, 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\CampaignSearchRowBasic
     */
    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\CampaignSearchRowBasic
     */
    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 url value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getUrl()
    {
        return $this->url;
    }
    /**
     * This method is responsible for validating the values passed to the setUrl method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUrl method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUrlForArrayConstraintsFromSetUrl(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicUrlItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicUrlItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($campaignSearchRowBasicUrlItem) ? get_class($campaignSearchRowBasicUrlItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicUrlItem), var_export($campaignSearchRowBasicUrlItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The url property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set url value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $url
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setUrl(array $url = array())
    {
        // validation for constraint: array
        if ('' !== ($urlArrayErrorMessage = self::validateUrlForArrayConstraintsFromSetUrl($url))) {
            throw new \InvalidArgumentException($urlArrayErrorMessage, __LINE__);
        }
        $this->url = $url;
        return $this;
    }
    /**
     * Add item to url value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToUrl(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The url property can only contain items of type \StructType\SearchColumnStringField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->url[] = $item;
        return $this;
    }
    /**
     * Get vertical value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getVertical()
    {
        return $this->vertical;
    }
    /**
     * This method is responsible for validating the values passed to the setVertical method
     * This method is willingly generated in order to preserve the one-line inline validation within the setVertical method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateVerticalForArrayConstraintsFromSetVertical(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $campaignSearchRowBasicVerticalItem) {
            // validation for constraint: itemType
            if (!$campaignSearchRowBasicVerticalItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($campaignSearchRowBasicVerticalItem) ? get_class($campaignSearchRowBasicVerticalItem) : sprintf('%s(%s)', gettype($campaignSearchRowBasicVerticalItem), var_export($campaignSearchRowBasicVerticalItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The vertical 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 vertical value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $vertical
     * @return \StructType\CampaignSearchRowBasic
     */
    public function setVertical(array $vertical = array())
    {
        // validation for constraint: array
        if ('' !== ($verticalArrayErrorMessage = self::validateVerticalForArrayConstraintsFromSetVertical($vertical))) {
            throw new \InvalidArgumentException($verticalArrayErrorMessage, __LINE__);
        }
        $this->vertical = $vertical;
        return $this;
    }
    /**
     * Add item to vertical value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CampaignSearchRowBasic
     */
    public function addToVertical(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The vertical 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->vertical[] = $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\CampaignSearchRowBasic
     */
    public function setCustomFieldList(\StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this->customFieldList = $customFieldList;
        return $this;
    }
}
