<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for CalendarEventSearchRowBasic StructType
 * @subpackage Structs
 */
class CalendarEventSearchRowBasic extends SearchRowBasic
{
    /**
     * The accessLevel
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $accessLevel;
    /**
     * The attendee
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $attendee;
    /**
     * The company
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $company;
    /**
     * The completedDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $completedDate;
    /**
     * The contact
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $contact;
    /**
     * The createdDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $createdDate;
    /**
     * The endTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $endTime;
    /**
     * The externalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $externalId;
    /**
     * The instanceEnd
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $instanceEnd;
    /**
     * The instanceStart
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $instanceStart;
    /**
     * The internalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $internalId;
    /**
     * The lastModifiedDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $lastModifiedDate;
    /**
     * The location
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $location;
    /**
     * The markdone
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $markdone;
    /**
     * The message
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $message;
    /**
     * The organizer
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $organizer;
    /**
     * The owner
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $owner;
    /**
     * The recurrence
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $recurrence;
    /**
     * The resource
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $resource;
    /**
     * The response
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $response;
    /**
     * The startDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $startDate;
    /**
     * The startTime
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $startTime;
    /**
     * The status
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $status;
    /**
     * The title
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $title;
    /**
     * The transaction
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $transaction;
    /**
     * The customFieldList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\SearchColumnCustomFieldList
     */
    public $customFieldList;
    /**
     * Constructor method for CalendarEventSearchRowBasic
     * @uses CalendarEventSearchRowBasic::setAccessLevel()
     * @uses CalendarEventSearchRowBasic::setAttendee()
     * @uses CalendarEventSearchRowBasic::setCompany()
     * @uses CalendarEventSearchRowBasic::setCompletedDate()
     * @uses CalendarEventSearchRowBasic::setContact()
     * @uses CalendarEventSearchRowBasic::setCreatedDate()
     * @uses CalendarEventSearchRowBasic::setEndTime()
     * @uses CalendarEventSearchRowBasic::setExternalId()
     * @uses CalendarEventSearchRowBasic::setInstanceEnd()
     * @uses CalendarEventSearchRowBasic::setInstanceStart()
     * @uses CalendarEventSearchRowBasic::setInternalId()
     * @uses CalendarEventSearchRowBasic::setLastModifiedDate()
     * @uses CalendarEventSearchRowBasic::setLocation()
     * @uses CalendarEventSearchRowBasic::setMarkdone()
     * @uses CalendarEventSearchRowBasic::setMessage()
     * @uses CalendarEventSearchRowBasic::setOrganizer()
     * @uses CalendarEventSearchRowBasic::setOwner()
     * @uses CalendarEventSearchRowBasic::setRecurrence()
     * @uses CalendarEventSearchRowBasic::setResource()
     * @uses CalendarEventSearchRowBasic::setResponse()
     * @uses CalendarEventSearchRowBasic::setStartDate()
     * @uses CalendarEventSearchRowBasic::setStartTime()
     * @uses CalendarEventSearchRowBasic::setStatus()
     * @uses CalendarEventSearchRowBasic::setTitle()
     * @uses CalendarEventSearchRowBasic::setTransaction()
     * @uses CalendarEventSearchRowBasic::setCustomFieldList()
     * @param \StructType\SearchColumnEnumSelectField[] $accessLevel
     * @param \StructType\SearchColumnSelectField[] $attendee
     * @param \StructType\SearchColumnSelectField[] $company
     * @param \StructType\SearchColumnDateField[] $completedDate
     * @param \StructType\SearchColumnSelectField[] $contact
     * @param \StructType\SearchColumnDateField[] $createdDate
     * @param \StructType\SearchColumnStringField[] $endTime
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @param \StructType\SearchColumnDateField[] $instanceEnd
     * @param \StructType\SearchColumnDateField[] $instanceStart
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @param \StructType\SearchColumnDateField[] $lastModifiedDate
     * @param \StructType\SearchColumnStringField[] $location
     * @param \StructType\SearchColumnStringField[] $markdone
     * @param \StructType\SearchColumnStringField[] $message
     * @param \StructType\SearchColumnSelectField[] $organizer
     * @param \StructType\SearchColumnSelectField[] $owner
     * @param \StructType\SearchColumnStringField[] $recurrence
     * @param \StructType\SearchColumnSelectField[] $resource
     * @param \StructType\SearchColumnEnumSelectField[] $response
     * @param \StructType\SearchColumnStringField[] $startDate
     * @param \StructType\SearchColumnStringField[] $startTime
     * @param \StructType\SearchColumnEnumSelectField[] $status
     * @param \StructType\SearchColumnStringField[] $title
     * @param \StructType\SearchColumnSelectField[] $transaction
     * @param \StructType\SearchColumnCustomFieldList $customFieldList
     */
    public function __construct(array $accessLevel = array(), array $attendee = array(), array $company = array(), array $completedDate = array(), array $contact = array(), array $createdDate = array(), array $endTime = array(), array $externalId = array(), array $instanceEnd = array(), array $instanceStart = array(), array $internalId = array(), array $lastModifiedDate = array(), array $location = array(), array $markdone = array(), array $message = array(), array $organizer = array(), array $owner = array(), array $recurrence = array(), array $resource = array(), array $response = array(), array $startDate = array(), array $startTime = array(), array $status = array(), array $title = array(), array $transaction = array(), \StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this
            ->setAccessLevel($accessLevel)
            ->setAttendee($attendee)
            ->setCompany($company)
            ->setCompletedDate($completedDate)
            ->setContact($contact)
            ->setCreatedDate($createdDate)
            ->setEndTime($endTime)
            ->setExternalId($externalId)
            ->setInstanceEnd($instanceEnd)
            ->setInstanceStart($instanceStart)
            ->setInternalId($internalId)
            ->setLastModifiedDate($lastModifiedDate)
            ->setLocation($location)
            ->setMarkdone($markdone)
            ->setMessage($message)
            ->setOrganizer($organizer)
            ->setOwner($owner)
            ->setRecurrence($recurrence)
            ->setResource($resource)
            ->setResponse($response)
            ->setStartDate($startDate)
            ->setStartTime($startTime)
            ->setStatus($status)
            ->setTitle($title)
            ->setTransaction($transaction)
            ->setCustomFieldList($customFieldList);
    }
    /**
     * Get accessLevel value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getAccessLevel()
    {
        return $this->accessLevel;
    }
    /**
     * This method is responsible for validating the values passed to the setAccessLevel method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAccessLevel method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAccessLevelForArrayConstraintsFromSetAccessLevel(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicAccessLevelItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicAccessLevelItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicAccessLevelItem) ? get_class($calendarEventSearchRowBasicAccessLevelItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicAccessLevelItem), var_export($calendarEventSearchRowBasicAccessLevelItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The accessLevel 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 accessLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $accessLevel
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setAccessLevel(array $accessLevel = array())
    {
        // validation for constraint: array
        if ('' !== ($accessLevelArrayErrorMessage = self::validateAccessLevelForArrayConstraintsFromSetAccessLevel($accessLevel))) {
            throw new \InvalidArgumentException($accessLevelArrayErrorMessage, __LINE__);
        }
        $this->accessLevel = $accessLevel;
        return $this;
    }
    /**
     * Add item to accessLevel value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToAccessLevel(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The accessLevel 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->accessLevel[] = $item;
        return $this;
    }
    /**
     * Get attendee value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAttendee()
    {
        return $this->attendee;
    }
    /**
     * This method is responsible for validating the values passed to the setAttendee method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAttendee method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAttendeeForArrayConstraintsFromSetAttendee(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicAttendeeItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicAttendeeItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicAttendeeItem) ? get_class($calendarEventSearchRowBasicAttendeeItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicAttendeeItem), var_export($calendarEventSearchRowBasicAttendeeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The attendee 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 attendee value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $attendee
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setAttendee(array $attendee = array())
    {
        // validation for constraint: array
        if ('' !== ($attendeeArrayErrorMessage = self::validateAttendeeForArrayConstraintsFromSetAttendee($attendee))) {
            throw new \InvalidArgumentException($attendeeArrayErrorMessage, __LINE__);
        }
        $this->attendee = $attendee;
        return $this;
    }
    /**
     * Add item to attendee value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToAttendee(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The attendee 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->attendee[] = $item;
        return $this;
    }
    /**
     * Get company value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getCompany()
    {
        return $this->company;
    }
    /**
     * This method is responsible for validating the values passed to the setCompany method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCompany method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCompanyForArrayConstraintsFromSetCompany(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicCompanyItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicCompanyItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicCompanyItem) ? get_class($calendarEventSearchRowBasicCompanyItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicCompanyItem), var_export($calendarEventSearchRowBasicCompanyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The company 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 company value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $company
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setCompany(array $company = array())
    {
        // validation for constraint: array
        if ('' !== ($companyArrayErrorMessage = self::validateCompanyForArrayConstraintsFromSetCompany($company))) {
            throw new \InvalidArgumentException($companyArrayErrorMessage, __LINE__);
        }
        $this->company = $company;
        return $this;
    }
    /**
     * Add item to company value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToCompany(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The company 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->company[] = $item;
        return $this;
    }
    /**
     * Get completedDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getCompletedDate()
    {
        return $this->completedDate;
    }
    /**
     * This method is responsible for validating the values passed to the setCompletedDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCompletedDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCompletedDateForArrayConstraintsFromSetCompletedDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicCompletedDateItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicCompletedDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicCompletedDateItem) ? get_class($calendarEventSearchRowBasicCompletedDateItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicCompletedDateItem), var_export($calendarEventSearchRowBasicCompletedDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The completedDate 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 completedDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $completedDate
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setCompletedDate(array $completedDate = array())
    {
        // validation for constraint: array
        if ('' !== ($completedDateArrayErrorMessage = self::validateCompletedDateForArrayConstraintsFromSetCompletedDate($completedDate))) {
            throw new \InvalidArgumentException($completedDateArrayErrorMessage, __LINE__);
        }
        $this->completedDate = $completedDate;
        return $this;
    }
    /**
     * Add item to completedDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToCompletedDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The completedDate 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->completedDate[] = $item;
        return $this;
    }
    /**
     * Get contact value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getContact()
    {
        return $this->contact;
    }
    /**
     * This method is responsible for validating the values passed to the setContact method
     * This method is willingly generated in order to preserve the one-line inline validation within the setContact method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateContactForArrayConstraintsFromSetContact(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicContactItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicContactItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicContactItem) ? get_class($calendarEventSearchRowBasicContactItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicContactItem), var_export($calendarEventSearchRowBasicContactItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The contact 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 contact value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $contact
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setContact(array $contact = array())
    {
        // validation for constraint: array
        if ('' !== ($contactArrayErrorMessage = self::validateContactForArrayConstraintsFromSetContact($contact))) {
            throw new \InvalidArgumentException($contactArrayErrorMessage, __LINE__);
        }
        $this->contact = $contact;
        return $this;
    }
    /**
     * Add item to contact value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToContact(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The contact 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->contact[] = $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 $calendarEventSearchRowBasicCreatedDateItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicCreatedDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicCreatedDateItem) ? get_class($calendarEventSearchRowBasicCreatedDateItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicCreatedDateItem), var_export($calendarEventSearchRowBasicCreatedDateItem, 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\CalendarEventSearchRowBasic
     */
    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\CalendarEventSearchRowBasic
     */
    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 endTime value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getEndTime()
    {
        return $this->endTime;
    }
    /**
     * This method is responsible for validating the values passed to the setEndTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setEndTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateEndTimeForArrayConstraintsFromSetEndTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicEndTimeItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicEndTimeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicEndTimeItem) ? get_class($calendarEventSearchRowBasicEndTimeItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicEndTimeItem), var_export($calendarEventSearchRowBasicEndTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The endTime 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 endTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $endTime
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setEndTime(array $endTime = array())
    {
        // validation for constraint: array
        if ('' !== ($endTimeArrayErrorMessage = self::validateEndTimeForArrayConstraintsFromSetEndTime($endTime))) {
            throw new \InvalidArgumentException($endTimeArrayErrorMessage, __LINE__);
        }
        $this->endTime = $endTime;
        return $this;
    }
    /**
     * Add item to endTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToEndTime(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The endTime 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->endTime[] = $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 $calendarEventSearchRowBasicExternalIdItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicExternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicExternalIdItem) ? get_class($calendarEventSearchRowBasicExternalIdItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicExternalIdItem), var_export($calendarEventSearchRowBasicExternalIdItem, 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\CalendarEventSearchRowBasic
     */
    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\CalendarEventSearchRowBasic
     */
    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 instanceEnd value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getInstanceEnd()
    {
        return $this->instanceEnd;
    }
    /**
     * This method is responsible for validating the values passed to the setInstanceEnd method
     * This method is willingly generated in order to preserve the one-line inline validation within the setInstanceEnd method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateInstanceEndForArrayConstraintsFromSetInstanceEnd(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicInstanceEndItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicInstanceEndItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicInstanceEndItem) ? get_class($calendarEventSearchRowBasicInstanceEndItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicInstanceEndItem), var_export($calendarEventSearchRowBasicInstanceEndItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The instanceEnd 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 instanceEnd value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $instanceEnd
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setInstanceEnd(array $instanceEnd = array())
    {
        // validation for constraint: array
        if ('' !== ($instanceEndArrayErrorMessage = self::validateInstanceEndForArrayConstraintsFromSetInstanceEnd($instanceEnd))) {
            throw new \InvalidArgumentException($instanceEndArrayErrorMessage, __LINE__);
        }
        $this->instanceEnd = $instanceEnd;
        return $this;
    }
    /**
     * Add item to instanceEnd value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToInstanceEnd(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The instanceEnd 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->instanceEnd[] = $item;
        return $this;
    }
    /**
     * Get instanceStart value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getInstanceStart()
    {
        return $this->instanceStart;
    }
    /**
     * This method is responsible for validating the values passed to the setInstanceStart method
     * This method is willingly generated in order to preserve the one-line inline validation within the setInstanceStart method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateInstanceStartForArrayConstraintsFromSetInstanceStart(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicInstanceStartItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicInstanceStartItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicInstanceStartItem) ? get_class($calendarEventSearchRowBasicInstanceStartItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicInstanceStartItem), var_export($calendarEventSearchRowBasicInstanceStartItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The instanceStart 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 instanceStart value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $instanceStart
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setInstanceStart(array $instanceStart = array())
    {
        // validation for constraint: array
        if ('' !== ($instanceStartArrayErrorMessage = self::validateInstanceStartForArrayConstraintsFromSetInstanceStart($instanceStart))) {
            throw new \InvalidArgumentException($instanceStartArrayErrorMessage, __LINE__);
        }
        $this->instanceStart = $instanceStart;
        return $this;
    }
    /**
     * Add item to instanceStart value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToInstanceStart(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The instanceStart 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->instanceStart[] = $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 $calendarEventSearchRowBasicInternalIdItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicInternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicInternalIdItem) ? get_class($calendarEventSearchRowBasicInternalIdItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicInternalIdItem), var_export($calendarEventSearchRowBasicInternalIdItem, 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\CalendarEventSearchRowBasic
     */
    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\CalendarEventSearchRowBasic
     */
    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 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 $calendarEventSearchRowBasicLastModifiedDateItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicLastModifiedDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicLastModifiedDateItem) ? get_class($calendarEventSearchRowBasicLastModifiedDateItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicLastModifiedDateItem), var_export($calendarEventSearchRowBasicLastModifiedDateItem, 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\CalendarEventSearchRowBasic
     */
    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\CalendarEventSearchRowBasic
     */
    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 location value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getLocation()
    {
        return $this->location;
    }
    /**
     * This method is responsible for validating the values passed to the setLocation method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLocation method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLocationForArrayConstraintsFromSetLocation(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicLocationItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicLocationItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicLocationItem) ? get_class($calendarEventSearchRowBasicLocationItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicLocationItem), var_export($calendarEventSearchRowBasicLocationItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The location 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 location value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $location
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setLocation(array $location = array())
    {
        // validation for constraint: array
        if ('' !== ($locationArrayErrorMessage = self::validateLocationForArrayConstraintsFromSetLocation($location))) {
            throw new \InvalidArgumentException($locationArrayErrorMessage, __LINE__);
        }
        $this->location = $location;
        return $this;
    }
    /**
     * Add item to location value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToLocation(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The location 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->location[] = $item;
        return $this;
    }
    /**
     * Get markdone value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getMarkdone()
    {
        return $this->markdone;
    }
    /**
     * This method is responsible for validating the values passed to the setMarkdone method
     * This method is willingly generated in order to preserve the one-line inline validation within the setMarkdone method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateMarkdoneForArrayConstraintsFromSetMarkdone(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicMarkdoneItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicMarkdoneItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicMarkdoneItem) ? get_class($calendarEventSearchRowBasicMarkdoneItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicMarkdoneItem), var_export($calendarEventSearchRowBasicMarkdoneItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The markdone 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 markdone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $markdone
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setMarkdone(array $markdone = array())
    {
        // validation for constraint: array
        if ('' !== ($markdoneArrayErrorMessage = self::validateMarkdoneForArrayConstraintsFromSetMarkdone($markdone))) {
            throw new \InvalidArgumentException($markdoneArrayErrorMessage, __LINE__);
        }
        $this->markdone = $markdone;
        return $this;
    }
    /**
     * Add item to markdone value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToMarkdone(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The markdone 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->markdone[] = $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 $calendarEventSearchRowBasicMessageItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicMessageItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicMessageItem) ? get_class($calendarEventSearchRowBasicMessageItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicMessageItem), var_export($calendarEventSearchRowBasicMessageItem, 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\CalendarEventSearchRowBasic
     */
    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\CalendarEventSearchRowBasic
     */
    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 organizer value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getOrganizer()
    {
        return $this->organizer;
    }
    /**
     * This method is responsible for validating the values passed to the setOrganizer method
     * This method is willingly generated in order to preserve the one-line inline validation within the setOrganizer method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateOrganizerForArrayConstraintsFromSetOrganizer(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicOrganizerItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicOrganizerItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicOrganizerItem) ? get_class($calendarEventSearchRowBasicOrganizerItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicOrganizerItem), var_export($calendarEventSearchRowBasicOrganizerItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The organizer 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 organizer value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $organizer
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setOrganizer(array $organizer = array())
    {
        // validation for constraint: array
        if ('' !== ($organizerArrayErrorMessage = self::validateOrganizerForArrayConstraintsFromSetOrganizer($organizer))) {
            throw new \InvalidArgumentException($organizerArrayErrorMessage, __LINE__);
        }
        $this->organizer = $organizer;
        return $this;
    }
    /**
     * Add item to organizer value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToOrganizer(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The organizer 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->organizer[] = $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 $calendarEventSearchRowBasicOwnerItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicOwnerItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicOwnerItem) ? get_class($calendarEventSearchRowBasicOwnerItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicOwnerItem), var_export($calendarEventSearchRowBasicOwnerItem, 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\CalendarEventSearchRowBasic
     */
    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\CalendarEventSearchRowBasic
     */
    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 recurrence value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getRecurrence()
    {
        return $this->recurrence;
    }
    /**
     * This method is responsible for validating the values passed to the setRecurrence method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRecurrence method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRecurrenceForArrayConstraintsFromSetRecurrence(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicRecurrenceItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicRecurrenceItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicRecurrenceItem) ? get_class($calendarEventSearchRowBasicRecurrenceItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicRecurrenceItem), var_export($calendarEventSearchRowBasicRecurrenceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The recurrence 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 recurrence value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $recurrence
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setRecurrence(array $recurrence = array())
    {
        // validation for constraint: array
        if ('' !== ($recurrenceArrayErrorMessage = self::validateRecurrenceForArrayConstraintsFromSetRecurrence($recurrence))) {
            throw new \InvalidArgumentException($recurrenceArrayErrorMessage, __LINE__);
        }
        $this->recurrence = $recurrence;
        return $this;
    }
    /**
     * Add item to recurrence value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToRecurrence(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The recurrence 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->recurrence[] = $item;
        return $this;
    }
    /**
     * Get resource value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getResource()
    {
        return $this->resource;
    }
    /**
     * This method is responsible for validating the values passed to the setResource method
     * This method is willingly generated in order to preserve the one-line inline validation within the setResource method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateResourceForArrayConstraintsFromSetResource(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicResourceItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicResourceItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicResourceItem) ? get_class($calendarEventSearchRowBasicResourceItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicResourceItem), var_export($calendarEventSearchRowBasicResourceItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The resource 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 resource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $resource
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setResource(array $resource = array())
    {
        // validation for constraint: array
        if ('' !== ($resourceArrayErrorMessage = self::validateResourceForArrayConstraintsFromSetResource($resource))) {
            throw new \InvalidArgumentException($resourceArrayErrorMessage, __LINE__);
        }
        $this->resource = $resource;
        return $this;
    }
    /**
     * Add item to resource value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToResource(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The resource 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->resource[] = $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 $calendarEventSearchRowBasicResponseItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicResponseItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicResponseItem) ? get_class($calendarEventSearchRowBasicResponseItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicResponseItem), var_export($calendarEventSearchRowBasicResponseItem, 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\CalendarEventSearchRowBasic
     */
    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\CalendarEventSearchRowBasic
     */
    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 startDate value
     * @return \StructType\SearchColumnStringField[]|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 $calendarEventSearchRowBasicStartDateItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicStartDateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicStartDateItem) ? get_class($calendarEventSearchRowBasicStartDateItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicStartDateItem), var_export($calendarEventSearchRowBasicStartDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The startDate 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 startDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $startDate
     * @return \StructType\CalendarEventSearchRowBasic
     */
    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\SearchColumnStringField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToStartDate(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The startDate 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->startDate[] = $item;
        return $this;
    }
    /**
     * Get startTime value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getStartTime()
    {
        return $this->startTime;
    }
    /**
     * This method is responsible for validating the values passed to the setStartTime method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStartTime method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStartTimeForArrayConstraintsFromSetStartTime(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicStartTimeItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicStartTimeItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicStartTimeItem) ? get_class($calendarEventSearchRowBasicStartTimeItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicStartTimeItem), var_export($calendarEventSearchRowBasicStartTimeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The startTime 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 startTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $startTime
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setStartTime(array $startTime = array())
    {
        // validation for constraint: array
        if ('' !== ($startTimeArrayErrorMessage = self::validateStartTimeForArrayConstraintsFromSetStartTime($startTime))) {
            throw new \InvalidArgumentException($startTimeArrayErrorMessage, __LINE__);
        }
        $this->startTime = $startTime;
        return $this;
    }
    /**
     * Add item to startTime value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToStartTime(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The startTime 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->startTime[] = $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 $calendarEventSearchRowBasicStatusItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicStatusItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicStatusItem) ? get_class($calendarEventSearchRowBasicStatusItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicStatusItem), var_export($calendarEventSearchRowBasicStatusItem, 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\CalendarEventSearchRowBasic
     */
    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\CalendarEventSearchRowBasic
     */
    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 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 $calendarEventSearchRowBasicTitleItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicTitleItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicTitleItem) ? get_class($calendarEventSearchRowBasicTitleItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicTitleItem), var_export($calendarEventSearchRowBasicTitleItem, 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\CalendarEventSearchRowBasic
     */
    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\CalendarEventSearchRowBasic
     */
    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 transaction value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getTransaction()
    {
        return $this->transaction;
    }
    /**
     * This method is responsible for validating the values passed to the setTransaction method
     * This method is willingly generated in order to preserve the one-line inline validation within the setTransaction method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateTransactionForArrayConstraintsFromSetTransaction(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $calendarEventSearchRowBasicTransactionItem) {
            // validation for constraint: itemType
            if (!$calendarEventSearchRowBasicTransactionItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($calendarEventSearchRowBasicTransactionItem) ? get_class($calendarEventSearchRowBasicTransactionItem) : sprintf('%s(%s)', gettype($calendarEventSearchRowBasicTransactionItem), var_export($calendarEventSearchRowBasicTransactionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The transaction 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 transaction value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $transaction
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function setTransaction(array $transaction = array())
    {
        // validation for constraint: array
        if ('' !== ($transactionArrayErrorMessage = self::validateTransactionForArrayConstraintsFromSetTransaction($transaction))) {
            throw new \InvalidArgumentException($transactionArrayErrorMessage, __LINE__);
        }
        $this->transaction = $transaction;
        return $this;
    }
    /**
     * Add item to transaction value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\CalendarEventSearchRowBasic
     */
    public function addToTransaction(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The transaction 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->transaction[] = $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\CalendarEventSearchRowBasic
     */
    public function setCustomFieldList(\StructType\SearchColumnCustomFieldList $customFieldList = null)
    {
        $this->customFieldList = $customFieldList;
        return $this;
    }
}
