<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for RevRecScheduleSearchRowBasic StructType
 * @subpackage Structs
 */
class RevRecScheduleSearchRowBasic extends SearchRowBasic
{
    /**
     * The accountingBook
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $accountingBook;
    /**
     * The amorStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $amorStatus;
    /**
     * The amorTemplate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $amorTemplate;
    /**
     * The amortizedAmount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $amortizedAmount;
    /**
     * The amorType
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnEnumSelectField[]
     */
    public $amorType;
    /**
     * The amount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $amount;
    /**
     * The currency
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $currency;
    /**
     * The deferredAmount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $deferredAmount;
    /**
     * The destAcct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $destAcct;
    /**
     * The externalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $externalId;
    /**
     * The initialAmt
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $initialAmt;
    /**
     * The internalId
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnSelectField[]
     */
    public $internalId;
    /**
     * The isRecognized
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $isRecognized;
    /**
     * The jeDoc
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $jeDoc;
    /**
     * The lineSequenceNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $lineSequenceNumber;
    /**
     * The name
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $name;
    /**
     * The nameUrl
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $nameUrl;
    /**
     * The pctComplete
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $pctComplete;
    /**
     * The pctRecognition
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $pctRecognition;
    /**
     * The periodOffset
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $periodOffset;
    /**
     * The recurAmount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $recurAmount;
    /**
     * The recurFxAmount
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDoubleField[]
     */
    public $recurFxAmount;
    /**
     * The schedDate
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnDateField[]
     */
    public $schedDate;
    /**
     * The scheduleNumber
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $scheduleNumber;
    /**
     * The sourceAcct
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $sourceAcct;
    /**
     * The srcDocLine
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $srcDocLine;
    /**
     * The srcTran
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $srcTran;
    /**
     * The srcTranPostPeriod
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnStringField[]
     */
    public $srcTranPostPeriod;
    /**
     * The startOffset
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnLongField[]
     */
    public $startOffset;
    /**
     * The useForeignAmounts
     * Meta information extracted from the WSDL
     * - maxOccurs: unbounded
     * - minOccurs: 0
     * @var \StructType\SearchColumnBooleanField[]
     */
    public $useForeignAmounts;
    /**
     * Constructor method for RevRecScheduleSearchRowBasic
     * @uses RevRecScheduleSearchRowBasic::setAccountingBook()
     * @uses RevRecScheduleSearchRowBasic::setAmorStatus()
     * @uses RevRecScheduleSearchRowBasic::setAmorTemplate()
     * @uses RevRecScheduleSearchRowBasic::setAmortizedAmount()
     * @uses RevRecScheduleSearchRowBasic::setAmorType()
     * @uses RevRecScheduleSearchRowBasic::setAmount()
     * @uses RevRecScheduleSearchRowBasic::setCurrency()
     * @uses RevRecScheduleSearchRowBasic::setDeferredAmount()
     * @uses RevRecScheduleSearchRowBasic::setDestAcct()
     * @uses RevRecScheduleSearchRowBasic::setExternalId()
     * @uses RevRecScheduleSearchRowBasic::setInitialAmt()
     * @uses RevRecScheduleSearchRowBasic::setInternalId()
     * @uses RevRecScheduleSearchRowBasic::setIsRecognized()
     * @uses RevRecScheduleSearchRowBasic::setJeDoc()
     * @uses RevRecScheduleSearchRowBasic::setLineSequenceNumber()
     * @uses RevRecScheduleSearchRowBasic::setName()
     * @uses RevRecScheduleSearchRowBasic::setNameUrl()
     * @uses RevRecScheduleSearchRowBasic::setPctComplete()
     * @uses RevRecScheduleSearchRowBasic::setPctRecognition()
     * @uses RevRecScheduleSearchRowBasic::setPeriodOffset()
     * @uses RevRecScheduleSearchRowBasic::setRecurAmount()
     * @uses RevRecScheduleSearchRowBasic::setRecurFxAmount()
     * @uses RevRecScheduleSearchRowBasic::setSchedDate()
     * @uses RevRecScheduleSearchRowBasic::setScheduleNumber()
     * @uses RevRecScheduleSearchRowBasic::setSourceAcct()
     * @uses RevRecScheduleSearchRowBasic::setSrcDocLine()
     * @uses RevRecScheduleSearchRowBasic::setSrcTran()
     * @uses RevRecScheduleSearchRowBasic::setSrcTranPostPeriod()
     * @uses RevRecScheduleSearchRowBasic::setStartOffset()
     * @uses RevRecScheduleSearchRowBasic::setUseForeignAmounts()
     * @param \StructType\SearchColumnSelectField[] $accountingBook
     * @param \StructType\SearchColumnEnumSelectField[] $amorStatus
     * @param \StructType\SearchColumnStringField[] $amorTemplate
     * @param \StructType\SearchColumnDoubleField[] $amortizedAmount
     * @param \StructType\SearchColumnEnumSelectField[] $amorType
     * @param \StructType\SearchColumnDoubleField[] $amount
     * @param \StructType\SearchColumnStringField[] $currency
     * @param \StructType\SearchColumnDoubleField[] $deferredAmount
     * @param \StructType\SearchColumnStringField[] $destAcct
     * @param \StructType\SearchColumnSelectField[] $externalId
     * @param \StructType\SearchColumnDoubleField[] $initialAmt
     * @param \StructType\SearchColumnSelectField[] $internalId
     * @param \StructType\SearchColumnBooleanField[] $isRecognized
     * @param \StructType\SearchColumnStringField[] $jeDoc
     * @param \StructType\SearchColumnLongField[] $lineSequenceNumber
     * @param \StructType\SearchColumnStringField[] $name
     * @param \StructType\SearchColumnStringField[] $nameUrl
     * @param \StructType\SearchColumnDoubleField[] $pctComplete
     * @param \StructType\SearchColumnDoubleField[] $pctRecognition
     * @param \StructType\SearchColumnLongField[] $periodOffset
     * @param \StructType\SearchColumnDoubleField[] $recurAmount
     * @param \StructType\SearchColumnDoubleField[] $recurFxAmount
     * @param \StructType\SearchColumnDateField[] $schedDate
     * @param \StructType\SearchColumnStringField[] $scheduleNumber
     * @param \StructType\SearchColumnStringField[] $sourceAcct
     * @param \StructType\SearchColumnStringField[] $srcDocLine
     * @param \StructType\SearchColumnStringField[] $srcTran
     * @param \StructType\SearchColumnStringField[] $srcTranPostPeriod
     * @param \StructType\SearchColumnLongField[] $startOffset
     * @param \StructType\SearchColumnBooleanField[] $useForeignAmounts
     */
    public function __construct(array $accountingBook = array(), array $amorStatus = array(), array $amorTemplate = array(), array $amortizedAmount = array(), array $amorType = array(), array $amount = array(), array $currency = array(), array $deferredAmount = array(), array $destAcct = array(), array $externalId = array(), array $initialAmt = array(), array $internalId = array(), array $isRecognized = array(), array $jeDoc = array(), array $lineSequenceNumber = array(), array $name = array(), array $nameUrl = array(), array $pctComplete = array(), array $pctRecognition = array(), array $periodOffset = array(), array $recurAmount = array(), array $recurFxAmount = array(), array $schedDate = array(), array $scheduleNumber = array(), array $sourceAcct = array(), array $srcDocLine = array(), array $srcTran = array(), array $srcTranPostPeriod = array(), array $startOffset = array(), array $useForeignAmounts = array())
    {
        $this
            ->setAccountingBook($accountingBook)
            ->setAmorStatus($amorStatus)
            ->setAmorTemplate($amorTemplate)
            ->setAmortizedAmount($amortizedAmount)
            ->setAmorType($amorType)
            ->setAmount($amount)
            ->setCurrency($currency)
            ->setDeferredAmount($deferredAmount)
            ->setDestAcct($destAcct)
            ->setExternalId($externalId)
            ->setInitialAmt($initialAmt)
            ->setInternalId($internalId)
            ->setIsRecognized($isRecognized)
            ->setJeDoc($jeDoc)
            ->setLineSequenceNumber($lineSequenceNumber)
            ->setName($name)
            ->setNameUrl($nameUrl)
            ->setPctComplete($pctComplete)
            ->setPctRecognition($pctRecognition)
            ->setPeriodOffset($periodOffset)
            ->setRecurAmount($recurAmount)
            ->setRecurFxAmount($recurFxAmount)
            ->setSchedDate($schedDate)
            ->setScheduleNumber($scheduleNumber)
            ->setSourceAcct($sourceAcct)
            ->setSrcDocLine($srcDocLine)
            ->setSrcTran($srcTran)
            ->setSrcTranPostPeriod($srcTranPostPeriod)
            ->setStartOffset($startOffset)
            ->setUseForeignAmounts($useForeignAmounts);
    }
    /**
     * Get accountingBook value
     * @return \StructType\SearchColumnSelectField[]|null
     */
    public function getAccountingBook()
    {
        return $this->accountingBook;
    }
    /**
     * This method is responsible for validating the values passed to the setAccountingBook method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAccountingBook method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAccountingBookForArrayConstraintsFromSetAccountingBook(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicAccountingBookItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicAccountingBookItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicAccountingBookItem) ? get_class($revRecScheduleSearchRowBasicAccountingBookItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicAccountingBookItem), var_export($revRecScheduleSearchRowBasicAccountingBookItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The accountingBook property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($invalidValues) ? get_class($invalidValues) : (is_array($invalidValues) ? implode(', ', $invalidValues) : gettype($invalidValues)));
        }
        unset($invalidValues);
        return $message;
    }
    /**
     * Set accountingBook value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField[] $accountingBook
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setAccountingBook(array $accountingBook = array())
    {
        // validation for constraint: array
        if ('' !== ($accountingBookArrayErrorMessage = self::validateAccountingBookForArrayConstraintsFromSetAccountingBook($accountingBook))) {
            throw new \InvalidArgumentException($accountingBookArrayErrorMessage, __LINE__);
        }
        $this->accountingBook = $accountingBook;
        return $this;
    }
    /**
     * Add item to accountingBook value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnSelectField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToAccountingBook(\StructType\SearchColumnSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnSelectField) {
            throw new \InvalidArgumentException(sprintf('The accountingBook property can only contain items of type \StructType\SearchColumnSelectField, %s given', is_object($item) ? get_class($item) : (is_array($item) ? implode(', ', $item) : gettype($item))), __LINE__);
        }
        $this->accountingBook[] = $item;
        return $this;
    }
    /**
     * Get amorStatus value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getAmorStatus()
    {
        return $this->amorStatus;
    }
    /**
     * This method is responsible for validating the values passed to the setAmorStatus method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAmorStatus method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAmorStatusForArrayConstraintsFromSetAmorStatus(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicAmorStatusItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicAmorStatusItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicAmorStatusItem) ? get_class($revRecScheduleSearchRowBasicAmorStatusItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicAmorStatusItem), var_export($revRecScheduleSearchRowBasicAmorStatusItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The amorStatus 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 amorStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $amorStatus
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setAmorStatus(array $amorStatus = array())
    {
        // validation for constraint: array
        if ('' !== ($amorStatusArrayErrorMessage = self::validateAmorStatusForArrayConstraintsFromSetAmorStatus($amorStatus))) {
            throw new \InvalidArgumentException($amorStatusArrayErrorMessage, __LINE__);
        }
        $this->amorStatus = $amorStatus;
        return $this;
    }
    /**
     * Add item to amorStatus value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToAmorStatus(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The amorStatus 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->amorStatus[] = $item;
        return $this;
    }
    /**
     * Get amorTemplate value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getAmorTemplate()
    {
        return $this->amorTemplate;
    }
    /**
     * This method is responsible for validating the values passed to the setAmorTemplate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAmorTemplate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAmorTemplateForArrayConstraintsFromSetAmorTemplate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicAmorTemplateItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicAmorTemplateItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicAmorTemplateItem) ? get_class($revRecScheduleSearchRowBasicAmorTemplateItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicAmorTemplateItem), var_export($revRecScheduleSearchRowBasicAmorTemplateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The amorTemplate 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 amorTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $amorTemplate
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setAmorTemplate(array $amorTemplate = array())
    {
        // validation for constraint: array
        if ('' !== ($amorTemplateArrayErrorMessage = self::validateAmorTemplateForArrayConstraintsFromSetAmorTemplate($amorTemplate))) {
            throw new \InvalidArgumentException($amorTemplateArrayErrorMessage, __LINE__);
        }
        $this->amorTemplate = $amorTemplate;
        return $this;
    }
    /**
     * Add item to amorTemplate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToAmorTemplate(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The amorTemplate 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->amorTemplate[] = $item;
        return $this;
    }
    /**
     * Get amortizedAmount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getAmortizedAmount()
    {
        return $this->amortizedAmount;
    }
    /**
     * This method is responsible for validating the values passed to the setAmortizedAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAmortizedAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAmortizedAmountForArrayConstraintsFromSetAmortizedAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicAmortizedAmountItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicAmortizedAmountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicAmortizedAmountItem) ? get_class($revRecScheduleSearchRowBasicAmortizedAmountItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicAmortizedAmountItem), var_export($revRecScheduleSearchRowBasicAmortizedAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The amortizedAmount 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 amortizedAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $amortizedAmount
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setAmortizedAmount(array $amortizedAmount = array())
    {
        // validation for constraint: array
        if ('' !== ($amortizedAmountArrayErrorMessage = self::validateAmortizedAmountForArrayConstraintsFromSetAmortizedAmount($amortizedAmount))) {
            throw new \InvalidArgumentException($amortizedAmountArrayErrorMessage, __LINE__);
        }
        $this->amortizedAmount = $amortizedAmount;
        return $this;
    }
    /**
     * Add item to amortizedAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToAmortizedAmount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The amortizedAmount 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->amortizedAmount[] = $item;
        return $this;
    }
    /**
     * Get amorType value
     * @return \StructType\SearchColumnEnumSelectField[]|null
     */
    public function getAmorType()
    {
        return $this->amorType;
    }
    /**
     * This method is responsible for validating the values passed to the setAmorType method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAmorType method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAmorTypeForArrayConstraintsFromSetAmorType(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicAmorTypeItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicAmorTypeItem instanceof \StructType\SearchColumnEnumSelectField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicAmorTypeItem) ? get_class($revRecScheduleSearchRowBasicAmorTypeItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicAmorTypeItem), var_export($revRecScheduleSearchRowBasicAmorTypeItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The amorType 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 amorType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField[] $amorType
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setAmorType(array $amorType = array())
    {
        // validation for constraint: array
        if ('' !== ($amorTypeArrayErrorMessage = self::validateAmorTypeForArrayConstraintsFromSetAmorType($amorType))) {
            throw new \InvalidArgumentException($amorTypeArrayErrorMessage, __LINE__);
        }
        $this->amorType = $amorType;
        return $this;
    }
    /**
     * Add item to amorType value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnEnumSelectField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToAmorType(\StructType\SearchColumnEnumSelectField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnEnumSelectField) {
            throw new \InvalidArgumentException(sprintf('The amorType 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->amorType[] = $item;
        return $this;
    }
    /**
     * Get amount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getAmount()
    {
        return $this->amount;
    }
    /**
     * This method is responsible for validating the values passed to the setAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateAmountForArrayConstraintsFromSetAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicAmountItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicAmountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicAmountItem) ? get_class($revRecScheduleSearchRowBasicAmountItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicAmountItem), var_export($revRecScheduleSearchRowBasicAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The amount 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 amount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $amount
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setAmount(array $amount = array())
    {
        // validation for constraint: array
        if ('' !== ($amountArrayErrorMessage = self::validateAmountForArrayConstraintsFromSetAmount($amount))) {
            throw new \InvalidArgumentException($amountArrayErrorMessage, __LINE__);
        }
        $this->amount = $amount;
        return $this;
    }
    /**
     * Add item to amount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToAmount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The amount 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->amount[] = $item;
        return $this;
    }
    /**
     * Get currency value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getCurrency()
    {
        return $this->currency;
    }
    /**
     * This method is responsible for validating the values passed to the setCurrency method
     * This method is willingly generated in order to preserve the one-line inline validation within the setCurrency method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateCurrencyForArrayConstraintsFromSetCurrency(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicCurrencyItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicCurrencyItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicCurrencyItem) ? get_class($revRecScheduleSearchRowBasicCurrencyItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicCurrencyItem), var_export($revRecScheduleSearchRowBasicCurrencyItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The currency 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 currency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $currency
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setCurrency(array $currency = array())
    {
        // validation for constraint: array
        if ('' !== ($currencyArrayErrorMessage = self::validateCurrencyForArrayConstraintsFromSetCurrency($currency))) {
            throw new \InvalidArgumentException($currencyArrayErrorMessage, __LINE__);
        }
        $this->currency = $currency;
        return $this;
    }
    /**
     * Add item to currency value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToCurrency(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The currency 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->currency[] = $item;
        return $this;
    }
    /**
     * Get deferredAmount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getDeferredAmount()
    {
        return $this->deferredAmount;
    }
    /**
     * This method is responsible for validating the values passed to the setDeferredAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDeferredAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDeferredAmountForArrayConstraintsFromSetDeferredAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicDeferredAmountItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicDeferredAmountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicDeferredAmountItem) ? get_class($revRecScheduleSearchRowBasicDeferredAmountItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicDeferredAmountItem), var_export($revRecScheduleSearchRowBasicDeferredAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The deferredAmount 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 deferredAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $deferredAmount
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setDeferredAmount(array $deferredAmount = array())
    {
        // validation for constraint: array
        if ('' !== ($deferredAmountArrayErrorMessage = self::validateDeferredAmountForArrayConstraintsFromSetDeferredAmount($deferredAmount))) {
            throw new \InvalidArgumentException($deferredAmountArrayErrorMessage, __LINE__);
        }
        $this->deferredAmount = $deferredAmount;
        return $this;
    }
    /**
     * Add item to deferredAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToDeferredAmount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The deferredAmount 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->deferredAmount[] = $item;
        return $this;
    }
    /**
     * Get destAcct value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getDestAcct()
    {
        return $this->destAcct;
    }
    /**
     * This method is responsible for validating the values passed to the setDestAcct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setDestAcct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateDestAcctForArrayConstraintsFromSetDestAcct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicDestAcctItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicDestAcctItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicDestAcctItem) ? get_class($revRecScheduleSearchRowBasicDestAcctItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicDestAcctItem), var_export($revRecScheduleSearchRowBasicDestAcctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The destAcct 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 destAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $destAcct
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setDestAcct(array $destAcct = array())
    {
        // validation for constraint: array
        if ('' !== ($destAcctArrayErrorMessage = self::validateDestAcctForArrayConstraintsFromSetDestAcct($destAcct))) {
            throw new \InvalidArgumentException($destAcctArrayErrorMessage, __LINE__);
        }
        $this->destAcct = $destAcct;
        return $this;
    }
    /**
     * Add item to destAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToDestAcct(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The destAcct 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->destAcct[] = $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 $revRecScheduleSearchRowBasicExternalIdItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicExternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicExternalIdItem) ? get_class($revRecScheduleSearchRowBasicExternalIdItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicExternalIdItem), var_export($revRecScheduleSearchRowBasicExternalIdItem, 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\RevRecScheduleSearchRowBasic
     */
    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\RevRecScheduleSearchRowBasic
     */
    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 initialAmt value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getInitialAmt()
    {
        return $this->initialAmt;
    }
    /**
     * This method is responsible for validating the values passed to the setInitialAmt method
     * This method is willingly generated in order to preserve the one-line inline validation within the setInitialAmt method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateInitialAmtForArrayConstraintsFromSetInitialAmt(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicInitialAmtItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicInitialAmtItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicInitialAmtItem) ? get_class($revRecScheduleSearchRowBasicInitialAmtItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicInitialAmtItem), var_export($revRecScheduleSearchRowBasicInitialAmtItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The initialAmt 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 initialAmt value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $initialAmt
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setInitialAmt(array $initialAmt = array())
    {
        // validation for constraint: array
        if ('' !== ($initialAmtArrayErrorMessage = self::validateInitialAmtForArrayConstraintsFromSetInitialAmt($initialAmt))) {
            throw new \InvalidArgumentException($initialAmtArrayErrorMessage, __LINE__);
        }
        $this->initialAmt = $initialAmt;
        return $this;
    }
    /**
     * Add item to initialAmt value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToInitialAmt(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The initialAmt 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->initialAmt[] = $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 $revRecScheduleSearchRowBasicInternalIdItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicInternalIdItem instanceof \StructType\SearchColumnSelectField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicInternalIdItem) ? get_class($revRecScheduleSearchRowBasicInternalIdItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicInternalIdItem), var_export($revRecScheduleSearchRowBasicInternalIdItem, 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\RevRecScheduleSearchRowBasic
     */
    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\RevRecScheduleSearchRowBasic
     */
    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 isRecognized value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getIsRecognized()
    {
        return $this->isRecognized;
    }
    /**
     * This method is responsible for validating the values passed to the setIsRecognized method
     * This method is willingly generated in order to preserve the one-line inline validation within the setIsRecognized method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateIsRecognizedForArrayConstraintsFromSetIsRecognized(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicIsRecognizedItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicIsRecognizedItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicIsRecognizedItem) ? get_class($revRecScheduleSearchRowBasicIsRecognizedItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicIsRecognizedItem), var_export($revRecScheduleSearchRowBasicIsRecognizedItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The isRecognized 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 isRecognized value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $isRecognized
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setIsRecognized(array $isRecognized = array())
    {
        // validation for constraint: array
        if ('' !== ($isRecognizedArrayErrorMessage = self::validateIsRecognizedForArrayConstraintsFromSetIsRecognized($isRecognized))) {
            throw new \InvalidArgumentException($isRecognizedArrayErrorMessage, __LINE__);
        }
        $this->isRecognized = $isRecognized;
        return $this;
    }
    /**
     * Add item to isRecognized value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToIsRecognized(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The isRecognized 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->isRecognized[] = $item;
        return $this;
    }
    /**
     * Get jeDoc value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getJeDoc()
    {
        return $this->jeDoc;
    }
    /**
     * This method is responsible for validating the values passed to the setJeDoc method
     * This method is willingly generated in order to preserve the one-line inline validation within the setJeDoc method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateJeDocForArrayConstraintsFromSetJeDoc(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicJeDocItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicJeDocItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicJeDocItem) ? get_class($revRecScheduleSearchRowBasicJeDocItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicJeDocItem), var_export($revRecScheduleSearchRowBasicJeDocItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The jeDoc 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 jeDoc value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $jeDoc
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setJeDoc(array $jeDoc = array())
    {
        // validation for constraint: array
        if ('' !== ($jeDocArrayErrorMessage = self::validateJeDocForArrayConstraintsFromSetJeDoc($jeDoc))) {
            throw new \InvalidArgumentException($jeDocArrayErrorMessage, __LINE__);
        }
        $this->jeDoc = $jeDoc;
        return $this;
    }
    /**
     * Add item to jeDoc value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToJeDoc(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The jeDoc 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->jeDoc[] = $item;
        return $this;
    }
    /**
     * Get lineSequenceNumber value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getLineSequenceNumber()
    {
        return $this->lineSequenceNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setLineSequenceNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setLineSequenceNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateLineSequenceNumberForArrayConstraintsFromSetLineSequenceNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicLineSequenceNumberItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicLineSequenceNumberItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicLineSequenceNumberItem) ? get_class($revRecScheduleSearchRowBasicLineSequenceNumberItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicLineSequenceNumberItem), var_export($revRecScheduleSearchRowBasicLineSequenceNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The lineSequenceNumber 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 lineSequenceNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $lineSequenceNumber
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setLineSequenceNumber(array $lineSequenceNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($lineSequenceNumberArrayErrorMessage = self::validateLineSequenceNumberForArrayConstraintsFromSetLineSequenceNumber($lineSequenceNumber))) {
            throw new \InvalidArgumentException($lineSequenceNumberArrayErrorMessage, __LINE__);
        }
        $this->lineSequenceNumber = $lineSequenceNumber;
        return $this;
    }
    /**
     * Add item to lineSequenceNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToLineSequenceNumber(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The lineSequenceNumber 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->lineSequenceNumber[] = $item;
        return $this;
    }
    /**
     * Get name value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getName()
    {
        return $this->name;
    }
    /**
     * This method is responsible for validating the values passed to the setName method
     * This method is willingly generated in order to preserve the one-line inline validation within the setName method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNameForArrayConstraintsFromSetName(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicNameItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicNameItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicNameItem) ? get_class($revRecScheduleSearchRowBasicNameItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicNameItem), var_export($revRecScheduleSearchRowBasicNameItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The name 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 name value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $name
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setName(array $name = array())
    {
        // validation for constraint: array
        if ('' !== ($nameArrayErrorMessage = self::validateNameForArrayConstraintsFromSetName($name))) {
            throw new \InvalidArgumentException($nameArrayErrorMessage, __LINE__);
        }
        $this->name = $name;
        return $this;
    }
    /**
     * Add item to name value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToName(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The name 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->name[] = $item;
        return $this;
    }
    /**
     * Get nameUrl value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getNameUrl()
    {
        return $this->nameUrl;
    }
    /**
     * This method is responsible for validating the values passed to the setNameUrl method
     * This method is willingly generated in order to preserve the one-line inline validation within the setNameUrl method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateNameUrlForArrayConstraintsFromSetNameUrl(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicNameUrlItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicNameUrlItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicNameUrlItem) ? get_class($revRecScheduleSearchRowBasicNameUrlItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicNameUrlItem), var_export($revRecScheduleSearchRowBasicNameUrlItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The nameUrl 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 nameUrl value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $nameUrl
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setNameUrl(array $nameUrl = array())
    {
        // validation for constraint: array
        if ('' !== ($nameUrlArrayErrorMessage = self::validateNameUrlForArrayConstraintsFromSetNameUrl($nameUrl))) {
            throw new \InvalidArgumentException($nameUrlArrayErrorMessage, __LINE__);
        }
        $this->nameUrl = $nameUrl;
        return $this;
    }
    /**
     * Add item to nameUrl value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToNameUrl(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The nameUrl 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->nameUrl[] = $item;
        return $this;
    }
    /**
     * Get pctComplete value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPctComplete()
    {
        return $this->pctComplete;
    }
    /**
     * This method is responsible for validating the values passed to the setPctComplete method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPctComplete method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePctCompleteForArrayConstraintsFromSetPctComplete(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicPctCompleteItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicPctCompleteItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicPctCompleteItem) ? get_class($revRecScheduleSearchRowBasicPctCompleteItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicPctCompleteItem), var_export($revRecScheduleSearchRowBasicPctCompleteItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The pctComplete 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 pctComplete value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $pctComplete
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setPctComplete(array $pctComplete = array())
    {
        // validation for constraint: array
        if ('' !== ($pctCompleteArrayErrorMessage = self::validatePctCompleteForArrayConstraintsFromSetPctComplete($pctComplete))) {
            throw new \InvalidArgumentException($pctCompleteArrayErrorMessage, __LINE__);
        }
        $this->pctComplete = $pctComplete;
        return $this;
    }
    /**
     * Add item to pctComplete value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToPctComplete(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The pctComplete 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->pctComplete[] = $item;
        return $this;
    }
    /**
     * Get pctRecognition value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getPctRecognition()
    {
        return $this->pctRecognition;
    }
    /**
     * This method is responsible for validating the values passed to the setPctRecognition method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPctRecognition method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePctRecognitionForArrayConstraintsFromSetPctRecognition(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicPctRecognitionItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicPctRecognitionItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicPctRecognitionItem) ? get_class($revRecScheduleSearchRowBasicPctRecognitionItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicPctRecognitionItem), var_export($revRecScheduleSearchRowBasicPctRecognitionItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The pctRecognition 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 pctRecognition value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $pctRecognition
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setPctRecognition(array $pctRecognition = array())
    {
        // validation for constraint: array
        if ('' !== ($pctRecognitionArrayErrorMessage = self::validatePctRecognitionForArrayConstraintsFromSetPctRecognition($pctRecognition))) {
            throw new \InvalidArgumentException($pctRecognitionArrayErrorMessage, __LINE__);
        }
        $this->pctRecognition = $pctRecognition;
        return $this;
    }
    /**
     * Add item to pctRecognition value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToPctRecognition(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The pctRecognition 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->pctRecognition[] = $item;
        return $this;
    }
    /**
     * Get periodOffset value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getPeriodOffset()
    {
        return $this->periodOffset;
    }
    /**
     * This method is responsible for validating the values passed to the setPeriodOffset method
     * This method is willingly generated in order to preserve the one-line inline validation within the setPeriodOffset method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validatePeriodOffsetForArrayConstraintsFromSetPeriodOffset(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicPeriodOffsetItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicPeriodOffsetItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicPeriodOffsetItem) ? get_class($revRecScheduleSearchRowBasicPeriodOffsetItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicPeriodOffsetItem), var_export($revRecScheduleSearchRowBasicPeriodOffsetItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The periodOffset 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 periodOffset value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $periodOffset
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setPeriodOffset(array $periodOffset = array())
    {
        // validation for constraint: array
        if ('' !== ($periodOffsetArrayErrorMessage = self::validatePeriodOffsetForArrayConstraintsFromSetPeriodOffset($periodOffset))) {
            throw new \InvalidArgumentException($periodOffsetArrayErrorMessage, __LINE__);
        }
        $this->periodOffset = $periodOffset;
        return $this;
    }
    /**
     * Add item to periodOffset value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToPeriodOffset(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The periodOffset 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->periodOffset[] = $item;
        return $this;
    }
    /**
     * Get recurAmount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getRecurAmount()
    {
        return $this->recurAmount;
    }
    /**
     * This method is responsible for validating the values passed to the setRecurAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRecurAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRecurAmountForArrayConstraintsFromSetRecurAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicRecurAmountItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicRecurAmountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicRecurAmountItem) ? get_class($revRecScheduleSearchRowBasicRecurAmountItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicRecurAmountItem), var_export($revRecScheduleSearchRowBasicRecurAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The recurAmount 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 recurAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $recurAmount
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setRecurAmount(array $recurAmount = array())
    {
        // validation for constraint: array
        if ('' !== ($recurAmountArrayErrorMessage = self::validateRecurAmountForArrayConstraintsFromSetRecurAmount($recurAmount))) {
            throw new \InvalidArgumentException($recurAmountArrayErrorMessage, __LINE__);
        }
        $this->recurAmount = $recurAmount;
        return $this;
    }
    /**
     * Add item to recurAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToRecurAmount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The recurAmount 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->recurAmount[] = $item;
        return $this;
    }
    /**
     * Get recurFxAmount value
     * @return \StructType\SearchColumnDoubleField[]|null
     */
    public function getRecurFxAmount()
    {
        return $this->recurFxAmount;
    }
    /**
     * This method is responsible for validating the values passed to the setRecurFxAmount method
     * This method is willingly generated in order to preserve the one-line inline validation within the setRecurFxAmount method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateRecurFxAmountForArrayConstraintsFromSetRecurFxAmount(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicRecurFxAmountItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicRecurFxAmountItem instanceof \StructType\SearchColumnDoubleField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicRecurFxAmountItem) ? get_class($revRecScheduleSearchRowBasicRecurFxAmountItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicRecurFxAmountItem), var_export($revRecScheduleSearchRowBasicRecurFxAmountItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The recurFxAmount 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 recurFxAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField[] $recurFxAmount
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setRecurFxAmount(array $recurFxAmount = array())
    {
        // validation for constraint: array
        if ('' !== ($recurFxAmountArrayErrorMessage = self::validateRecurFxAmountForArrayConstraintsFromSetRecurFxAmount($recurFxAmount))) {
            throw new \InvalidArgumentException($recurFxAmountArrayErrorMessage, __LINE__);
        }
        $this->recurFxAmount = $recurFxAmount;
        return $this;
    }
    /**
     * Add item to recurFxAmount value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDoubleField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToRecurFxAmount(\StructType\SearchColumnDoubleField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDoubleField) {
            throw new \InvalidArgumentException(sprintf('The recurFxAmount 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->recurFxAmount[] = $item;
        return $this;
    }
    /**
     * Get schedDate value
     * @return \StructType\SearchColumnDateField[]|null
     */
    public function getSchedDate()
    {
        return $this->schedDate;
    }
    /**
     * This method is responsible for validating the values passed to the setSchedDate method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSchedDate method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSchedDateForArrayConstraintsFromSetSchedDate(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicSchedDateItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicSchedDateItem instanceof \StructType\SearchColumnDateField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicSchedDateItem) ? get_class($revRecScheduleSearchRowBasicSchedDateItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicSchedDateItem), var_export($revRecScheduleSearchRowBasicSchedDateItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The schedDate 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 schedDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField[] $schedDate
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setSchedDate(array $schedDate = array())
    {
        // validation for constraint: array
        if ('' !== ($schedDateArrayErrorMessage = self::validateSchedDateForArrayConstraintsFromSetSchedDate($schedDate))) {
            throw new \InvalidArgumentException($schedDateArrayErrorMessage, __LINE__);
        }
        $this->schedDate = $schedDate;
        return $this;
    }
    /**
     * Add item to schedDate value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnDateField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToSchedDate(\StructType\SearchColumnDateField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnDateField) {
            throw new \InvalidArgumentException(sprintf('The schedDate 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->schedDate[] = $item;
        return $this;
    }
    /**
     * Get scheduleNumber value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getScheduleNumber()
    {
        return $this->scheduleNumber;
    }
    /**
     * This method is responsible for validating the values passed to the setScheduleNumber method
     * This method is willingly generated in order to preserve the one-line inline validation within the setScheduleNumber method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateScheduleNumberForArrayConstraintsFromSetScheduleNumber(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicScheduleNumberItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicScheduleNumberItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicScheduleNumberItem) ? get_class($revRecScheduleSearchRowBasicScheduleNumberItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicScheduleNumberItem), var_export($revRecScheduleSearchRowBasicScheduleNumberItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The scheduleNumber 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 scheduleNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $scheduleNumber
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setScheduleNumber(array $scheduleNumber = array())
    {
        // validation for constraint: array
        if ('' !== ($scheduleNumberArrayErrorMessage = self::validateScheduleNumberForArrayConstraintsFromSetScheduleNumber($scheduleNumber))) {
            throw new \InvalidArgumentException($scheduleNumberArrayErrorMessage, __LINE__);
        }
        $this->scheduleNumber = $scheduleNumber;
        return $this;
    }
    /**
     * Add item to scheduleNumber value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToScheduleNumber(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The scheduleNumber 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->scheduleNumber[] = $item;
        return $this;
    }
    /**
     * Get sourceAcct value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSourceAcct()
    {
        return $this->sourceAcct;
    }
    /**
     * This method is responsible for validating the values passed to the setSourceAcct method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSourceAcct method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSourceAcctForArrayConstraintsFromSetSourceAcct(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicSourceAcctItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicSourceAcctItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicSourceAcctItem) ? get_class($revRecScheduleSearchRowBasicSourceAcctItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicSourceAcctItem), var_export($revRecScheduleSearchRowBasicSourceAcctItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The sourceAcct 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 sourceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $sourceAcct
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setSourceAcct(array $sourceAcct = array())
    {
        // validation for constraint: array
        if ('' !== ($sourceAcctArrayErrorMessage = self::validateSourceAcctForArrayConstraintsFromSetSourceAcct($sourceAcct))) {
            throw new \InvalidArgumentException($sourceAcctArrayErrorMessage, __LINE__);
        }
        $this->sourceAcct = $sourceAcct;
        return $this;
    }
    /**
     * Add item to sourceAcct value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToSourceAcct(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The sourceAcct 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->sourceAcct[] = $item;
        return $this;
    }
    /**
     * Get srcDocLine value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSrcDocLine()
    {
        return $this->srcDocLine;
    }
    /**
     * This method is responsible for validating the values passed to the setSrcDocLine method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSrcDocLine method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSrcDocLineForArrayConstraintsFromSetSrcDocLine(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicSrcDocLineItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicSrcDocLineItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicSrcDocLineItem) ? get_class($revRecScheduleSearchRowBasicSrcDocLineItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicSrcDocLineItem), var_export($revRecScheduleSearchRowBasicSrcDocLineItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The srcDocLine 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 srcDocLine value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $srcDocLine
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setSrcDocLine(array $srcDocLine = array())
    {
        // validation for constraint: array
        if ('' !== ($srcDocLineArrayErrorMessage = self::validateSrcDocLineForArrayConstraintsFromSetSrcDocLine($srcDocLine))) {
            throw new \InvalidArgumentException($srcDocLineArrayErrorMessage, __LINE__);
        }
        $this->srcDocLine = $srcDocLine;
        return $this;
    }
    /**
     * Add item to srcDocLine value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToSrcDocLine(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The srcDocLine 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->srcDocLine[] = $item;
        return $this;
    }
    /**
     * Get srcTran value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSrcTran()
    {
        return $this->srcTran;
    }
    /**
     * This method is responsible for validating the values passed to the setSrcTran method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSrcTran method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSrcTranForArrayConstraintsFromSetSrcTran(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicSrcTranItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicSrcTranItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicSrcTranItem) ? get_class($revRecScheduleSearchRowBasicSrcTranItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicSrcTranItem), var_export($revRecScheduleSearchRowBasicSrcTranItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The srcTran 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 srcTran value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $srcTran
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setSrcTran(array $srcTran = array())
    {
        // validation for constraint: array
        if ('' !== ($srcTranArrayErrorMessage = self::validateSrcTranForArrayConstraintsFromSetSrcTran($srcTran))) {
            throw new \InvalidArgumentException($srcTranArrayErrorMessage, __LINE__);
        }
        $this->srcTran = $srcTran;
        return $this;
    }
    /**
     * Add item to srcTran value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToSrcTran(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The srcTran 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->srcTran[] = $item;
        return $this;
    }
    /**
     * Get srcTranPostPeriod value
     * @return \StructType\SearchColumnStringField[]|null
     */
    public function getSrcTranPostPeriod()
    {
        return $this->srcTranPostPeriod;
    }
    /**
     * This method is responsible for validating the values passed to the setSrcTranPostPeriod method
     * This method is willingly generated in order to preserve the one-line inline validation within the setSrcTranPostPeriod method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateSrcTranPostPeriodForArrayConstraintsFromSetSrcTranPostPeriod(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicSrcTranPostPeriodItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicSrcTranPostPeriodItem instanceof \StructType\SearchColumnStringField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicSrcTranPostPeriodItem) ? get_class($revRecScheduleSearchRowBasicSrcTranPostPeriodItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicSrcTranPostPeriodItem), var_export($revRecScheduleSearchRowBasicSrcTranPostPeriodItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The srcTranPostPeriod 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 srcTranPostPeriod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField[] $srcTranPostPeriod
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setSrcTranPostPeriod(array $srcTranPostPeriod = array())
    {
        // validation for constraint: array
        if ('' !== ($srcTranPostPeriodArrayErrorMessage = self::validateSrcTranPostPeriodForArrayConstraintsFromSetSrcTranPostPeriod($srcTranPostPeriod))) {
            throw new \InvalidArgumentException($srcTranPostPeriodArrayErrorMessage, __LINE__);
        }
        $this->srcTranPostPeriod = $srcTranPostPeriod;
        return $this;
    }
    /**
     * Add item to srcTranPostPeriod value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnStringField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToSrcTranPostPeriod(\StructType\SearchColumnStringField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnStringField) {
            throw new \InvalidArgumentException(sprintf('The srcTranPostPeriod 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->srcTranPostPeriod[] = $item;
        return $this;
    }
    /**
     * Get startOffset value
     * @return \StructType\SearchColumnLongField[]|null
     */
    public function getStartOffset()
    {
        return $this->startOffset;
    }
    /**
     * This method is responsible for validating the values passed to the setStartOffset method
     * This method is willingly generated in order to preserve the one-line inline validation within the setStartOffset method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateStartOffsetForArrayConstraintsFromSetStartOffset(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicStartOffsetItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicStartOffsetItem instanceof \StructType\SearchColumnLongField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicStartOffsetItem) ? get_class($revRecScheduleSearchRowBasicStartOffsetItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicStartOffsetItem), var_export($revRecScheduleSearchRowBasicStartOffsetItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The startOffset 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 startOffset value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField[] $startOffset
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setStartOffset(array $startOffset = array())
    {
        // validation for constraint: array
        if ('' !== ($startOffsetArrayErrorMessage = self::validateStartOffsetForArrayConstraintsFromSetStartOffset($startOffset))) {
            throw new \InvalidArgumentException($startOffsetArrayErrorMessage, __LINE__);
        }
        $this->startOffset = $startOffset;
        return $this;
    }
    /**
     * Add item to startOffset value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnLongField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToStartOffset(\StructType\SearchColumnLongField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnLongField) {
            throw new \InvalidArgumentException(sprintf('The startOffset 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->startOffset[] = $item;
        return $this;
    }
    /**
     * Get useForeignAmounts value
     * @return \StructType\SearchColumnBooleanField[]|null
     */
    public function getUseForeignAmounts()
    {
        return $this->useForeignAmounts;
    }
    /**
     * This method is responsible for validating the values passed to the setUseForeignAmounts method
     * This method is willingly generated in order to preserve the one-line inline validation within the setUseForeignAmounts method
     * @param array $values
     * @return string A non-empty message if the values does not match the validation rules
     */
    public static function validateUseForeignAmountsForArrayConstraintsFromSetUseForeignAmounts(array $values = array())
    {
        $message = '';
        $invalidValues = [];
        foreach ($values as $revRecScheduleSearchRowBasicUseForeignAmountsItem) {
            // validation for constraint: itemType
            if (!$revRecScheduleSearchRowBasicUseForeignAmountsItem instanceof \StructType\SearchColumnBooleanField) {
                $invalidValues[] = is_object($revRecScheduleSearchRowBasicUseForeignAmountsItem) ? get_class($revRecScheduleSearchRowBasicUseForeignAmountsItem) : sprintf('%s(%s)', gettype($revRecScheduleSearchRowBasicUseForeignAmountsItem), var_export($revRecScheduleSearchRowBasicUseForeignAmountsItem, true));
            }
        }
        if (!empty($invalidValues)) {
            $message = sprintf('The useForeignAmounts 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 useForeignAmounts value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField[] $useForeignAmounts
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function setUseForeignAmounts(array $useForeignAmounts = array())
    {
        // validation for constraint: array
        if ('' !== ($useForeignAmountsArrayErrorMessage = self::validateUseForeignAmountsForArrayConstraintsFromSetUseForeignAmounts($useForeignAmounts))) {
            throw new \InvalidArgumentException($useForeignAmountsArrayErrorMessage, __LINE__);
        }
        $this->useForeignAmounts = $useForeignAmounts;
        return $this;
    }
    /**
     * Add item to useForeignAmounts value
     * @throws \InvalidArgumentException
     * @param \StructType\SearchColumnBooleanField $item
     * @return \StructType\RevRecScheduleSearchRowBasic
     */
    public function addToUseForeignAmounts(\StructType\SearchColumnBooleanField $item)
    {
        // validation for constraint: itemType
        if (!$item instanceof \StructType\SearchColumnBooleanField) {
            throw new \InvalidArgumentException(sprintf('The useForeignAmounts 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->useForeignAmounts[] = $item;
        return $this;
    }
}
