<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Crm.ClientExtraFields StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:Crm.ClientExtraFields
 * @subpackage Structs
 */
class Crm_ClientExtraFields extends DistributableEntity
{
    /**
     * The ClientId
     * Meta information extracted from the WSDL
     * - base: xs:string
     * - minOccurs: 0
     * - nillable: true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $ClientId;
    /**
     * The CustomListField1
     * Meta information extracted from the WSDL
     * - base: xs:string
     * - minOccurs: 0
     * - nillable: true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $CustomListField1;
    /**
     * The CustomListField2
     * Meta information extracted from the WSDL
     * - base: xs:string
     * - minOccurs: 0
     * - nillable: true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $CustomListField2;
    /**
     * The CustomListField3
     * Meta information extracted from the WSDL
     * - base: xs:string
     * - minOccurs: 0
     * - nillable: true
     * - pattern: [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}
     * - type: tns:guid
     * @var string
     */
    public $CustomListField3;
    /**
     * The DateTimeField1
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DateTimeField1;
    /**
     * The DateTimeField2
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DateTimeField2;
    /**
     * The DoubleField1
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $DoubleField1;
    /**
     * The DoubleField2
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var float
     */
    public $DoubleField2;
    /**
     * The GlobalStringField
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $GlobalStringField;
    /**
     * The StringField1
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StringField1;
    /**
     * The StringField10
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StringField10;
    /**
     * The StringField2
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StringField2;
    /**
     * The StringField3
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StringField3;
    /**
     * The StringField4
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StringField4;
    /**
     * The StringField5
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StringField5;
    /**
     * The StringField6
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StringField6;
    /**
     * The StringField7
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StringField7;
    /**
     * The StringField8
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StringField8;
    /**
     * The StringField9
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StringField9;
    /**
     * Constructor method for Crm.ClientExtraFields
     * @uses Crm_ClientExtraFields::setClientId()
     * @uses Crm_ClientExtraFields::setCustomListField1()
     * @uses Crm_ClientExtraFields::setCustomListField2()
     * @uses Crm_ClientExtraFields::setCustomListField3()
     * @uses Crm_ClientExtraFields::setDateTimeField1()
     * @uses Crm_ClientExtraFields::setDateTimeField2()
     * @uses Crm_ClientExtraFields::setDoubleField1()
     * @uses Crm_ClientExtraFields::setDoubleField2()
     * @uses Crm_ClientExtraFields::setGlobalStringField()
     * @uses Crm_ClientExtraFields::setStringField1()
     * @uses Crm_ClientExtraFields::setStringField10()
     * @uses Crm_ClientExtraFields::setStringField2()
     * @uses Crm_ClientExtraFields::setStringField3()
     * @uses Crm_ClientExtraFields::setStringField4()
     * @uses Crm_ClientExtraFields::setStringField5()
     * @uses Crm_ClientExtraFields::setStringField6()
     * @uses Crm_ClientExtraFields::setStringField7()
     * @uses Crm_ClientExtraFields::setStringField8()
     * @uses Crm_ClientExtraFields::setStringField9()
     * @param string $clientId
     * @param string $customListField1
     * @param string $customListField2
     * @param string $customListField3
     * @param string $dateTimeField1
     * @param string $dateTimeField2
     * @param float $doubleField1
     * @param float $doubleField2
     * @param \patest\StructType\GlobalString $globalStringField
     * @param string $stringField1
     * @param string $stringField10
     * @param string $stringField2
     * @param string $stringField3
     * @param string $stringField4
     * @param string $stringField5
     * @param string $stringField6
     * @param string $stringField7
     * @param string $stringField8
     * @param string $stringField9
     */
    public function __construct($clientId = null, $customListField1 = null, $customListField2 = null, $customListField3 = null, $dateTimeField1 = null, $dateTimeField2 = null, $doubleField1 = null, $doubleField2 = null, \patest\StructType\GlobalString $globalStringField = null, $stringField1 = null, $stringField10 = null, $stringField2 = null, $stringField3 = null, $stringField4 = null, $stringField5 = null, $stringField6 = null, $stringField7 = null, $stringField8 = null, $stringField9 = null)
    {
        $this
            ->setClientId($clientId)
            ->setCustomListField1($customListField1)
            ->setCustomListField2($customListField2)
            ->setCustomListField3($customListField3)
            ->setDateTimeField1($dateTimeField1)
            ->setDateTimeField2($dateTimeField2)
            ->setDoubleField1($doubleField1)
            ->setDoubleField2($doubleField2)
            ->setGlobalStringField($globalStringField)
            ->setStringField1($stringField1)
            ->setStringField10($stringField10)
            ->setStringField2($stringField2)
            ->setStringField3($stringField3)
            ->setStringField4($stringField4)
            ->setStringField5($stringField5)
            ->setStringField6($stringField6)
            ->setStringField7($stringField7)
            ->setStringField8($stringField8)
            ->setStringField9($stringField9);
    }
    /**
     * Get ClientId value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getClientId()
    {
        return isset($this->ClientId) ? $this->ClientId : null;
    }
    /**
     * Set ClientId value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $clientId
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setClientId($clientId = null)
    {
        // validation for constraint: string
        if (!is_null($clientId) && !is_string($clientId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($clientId, true), gettype($clientId)), __LINE__);
        }
        // validation for constraint: pattern([\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12})
        if (!is_null($clientId) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $clientId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a literal that is among the set of character sequences denoted by the regular expression [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}', var_export($clientId, true)), __LINE__);
        }
        if (is_null($clientId) || (is_array($clientId) && empty($clientId))) {
            unset($this->ClientId);
        } else {
            $this->ClientId = $clientId;
        }
        return $this;
    }
    /**
     * Get CustomListField1 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getCustomListField1()
    {
        return isset($this->CustomListField1) ? $this->CustomListField1 : null;
    }
    /**
     * Set CustomListField1 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $customListField1
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setCustomListField1($customListField1 = null)
    {
        // validation for constraint: string
        if (!is_null($customListField1) && !is_string($customListField1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($customListField1, true), gettype($customListField1)), __LINE__);
        }
        // validation for constraint: pattern([\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12})
        if (!is_null($customListField1) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $customListField1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a literal that is among the set of character sequences denoted by the regular expression [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}', var_export($customListField1, true)), __LINE__);
        }
        if (is_null($customListField1) || (is_array($customListField1) && empty($customListField1))) {
            unset($this->CustomListField1);
        } else {
            $this->CustomListField1 = $customListField1;
        }
        return $this;
    }
    /**
     * Get CustomListField2 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getCustomListField2()
    {
        return isset($this->CustomListField2) ? $this->CustomListField2 : null;
    }
    /**
     * Set CustomListField2 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $customListField2
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setCustomListField2($customListField2 = null)
    {
        // validation for constraint: string
        if (!is_null($customListField2) && !is_string($customListField2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($customListField2, true), gettype($customListField2)), __LINE__);
        }
        // validation for constraint: pattern([\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12})
        if (!is_null($customListField2) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $customListField2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a literal that is among the set of character sequences denoted by the regular expression [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}', var_export($customListField2, true)), __LINE__);
        }
        if (is_null($customListField2) || (is_array($customListField2) && empty($customListField2))) {
            unset($this->CustomListField2);
        } else {
            $this->CustomListField2 = $customListField2;
        }
        return $this;
    }
    /**
     * Get CustomListField3 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getCustomListField3()
    {
        return isset($this->CustomListField3) ? $this->CustomListField3 : null;
    }
    /**
     * Set CustomListField3 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $customListField3
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setCustomListField3($customListField3 = null)
    {
        // validation for constraint: string
        if (!is_null($customListField3) && !is_string($customListField3)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($customListField3, true), gettype($customListField3)), __LINE__);
        }
        // validation for constraint: pattern([\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12})
        if (!is_null($customListField3) && !preg_match('/[\\da-fA-F]{8}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{4}-[\\da-fA-F]{12}/', $customListField3)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a literal that is among the set of character sequences denoted by the regular expression [\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}', var_export($customListField3, true)), __LINE__);
        }
        if (is_null($customListField3) || (is_array($customListField3) && empty($customListField3))) {
            unset($this->CustomListField3);
        } else {
            $this->CustomListField3 = $customListField3;
        }
        return $this;
    }
    /**
     * Get DateTimeField1 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getDateTimeField1()
    {
        return isset($this->DateTimeField1) ? $this->DateTimeField1 : null;
    }
    /**
     * Set DateTimeField1 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $dateTimeField1
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setDateTimeField1($dateTimeField1 = null)
    {
        // validation for constraint: string
        if (!is_null($dateTimeField1) && !is_string($dateTimeField1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($dateTimeField1, true), gettype($dateTimeField1)), __LINE__);
        }
        if (is_null($dateTimeField1) || (is_array($dateTimeField1) && empty($dateTimeField1))) {
            unset($this->DateTimeField1);
        } else {
            $this->DateTimeField1 = $dateTimeField1;
        }
        return $this;
    }
    /**
     * Get DateTimeField2 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getDateTimeField2()
    {
        return isset($this->DateTimeField2) ? $this->DateTimeField2 : null;
    }
    /**
     * Set DateTimeField2 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $dateTimeField2
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setDateTimeField2($dateTimeField2 = null)
    {
        // validation for constraint: string
        if (!is_null($dateTimeField2) && !is_string($dateTimeField2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($dateTimeField2, true), gettype($dateTimeField2)), __LINE__);
        }
        if (is_null($dateTimeField2) || (is_array($dateTimeField2) && empty($dateTimeField2))) {
            unset($this->DateTimeField2);
        } else {
            $this->DateTimeField2 = $dateTimeField2;
        }
        return $this;
    }
    /**
     * Get DoubleField1 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return float|null
     */
    public function getDoubleField1()
    {
        return isset($this->DoubleField1) ? $this->DoubleField1 : null;
    }
    /**
     * Set DoubleField1 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param float $doubleField1
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setDoubleField1($doubleField1 = null)
    {
        // validation for constraint: float
        if (!is_null($doubleField1) && !(is_float($doubleField1) || is_numeric($doubleField1))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($doubleField1, true), gettype($doubleField1)), __LINE__);
        }
        if (is_null($doubleField1) || (is_array($doubleField1) && empty($doubleField1))) {
            unset($this->DoubleField1);
        } else {
            $this->DoubleField1 = $doubleField1;
        }
        return $this;
    }
    /**
     * Get DoubleField2 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return float|null
     */
    public function getDoubleField2()
    {
        return isset($this->DoubleField2) ? $this->DoubleField2 : null;
    }
    /**
     * Set DoubleField2 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param float $doubleField2
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setDoubleField2($doubleField2 = null)
    {
        // validation for constraint: float
        if (!is_null($doubleField2) && !(is_float($doubleField2) || is_numeric($doubleField2))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($doubleField2, true), gettype($doubleField2)), __LINE__);
        }
        if (is_null($doubleField2) || (is_array($doubleField2) && empty($doubleField2))) {
            unset($this->DoubleField2);
        } else {
            $this->DoubleField2 = $doubleField2;
        }
        return $this;
    }
    /**
     * Get GlobalStringField value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\GlobalString|null
     */
    public function getGlobalStringField()
    {
        return isset($this->GlobalStringField) ? $this->GlobalStringField : null;
    }
    /**
     * Set GlobalStringField value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\GlobalString $globalStringField
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setGlobalStringField(\patest\StructType\GlobalString $globalStringField = null)
    {
        if (is_null($globalStringField) || (is_array($globalStringField) && empty($globalStringField))) {
            unset($this->GlobalStringField);
        } else {
            $this->GlobalStringField = $globalStringField;
        }
        return $this;
    }
    /**
     * Get StringField1 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getStringField1()
    {
        return isset($this->StringField1) ? $this->StringField1 : null;
    }
    /**
     * Set StringField1 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $stringField1
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setStringField1($stringField1 = null)
    {
        // validation for constraint: string
        if (!is_null($stringField1) && !is_string($stringField1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($stringField1, true), gettype($stringField1)), __LINE__);
        }
        if (is_null($stringField1) || (is_array($stringField1) && empty($stringField1))) {
            unset($this->StringField1);
        } else {
            $this->StringField1 = $stringField1;
        }
        return $this;
    }
    /**
     * Get StringField10 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getStringField10()
    {
        return isset($this->StringField10) ? $this->StringField10 : null;
    }
    /**
     * Set StringField10 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $stringField10
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setStringField10($stringField10 = null)
    {
        // validation for constraint: string
        if (!is_null($stringField10) && !is_string($stringField10)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($stringField10, true), gettype($stringField10)), __LINE__);
        }
        if (is_null($stringField10) || (is_array($stringField10) && empty($stringField10))) {
            unset($this->StringField10);
        } else {
            $this->StringField10 = $stringField10;
        }
        return $this;
    }
    /**
     * Get StringField2 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getStringField2()
    {
        return isset($this->StringField2) ? $this->StringField2 : null;
    }
    /**
     * Set StringField2 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $stringField2
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setStringField2($stringField2 = null)
    {
        // validation for constraint: string
        if (!is_null($stringField2) && !is_string($stringField2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($stringField2, true), gettype($stringField2)), __LINE__);
        }
        if (is_null($stringField2) || (is_array($stringField2) && empty($stringField2))) {
            unset($this->StringField2);
        } else {
            $this->StringField2 = $stringField2;
        }
        return $this;
    }
    /**
     * Get StringField3 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getStringField3()
    {
        return isset($this->StringField3) ? $this->StringField3 : null;
    }
    /**
     * Set StringField3 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $stringField3
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setStringField3($stringField3 = null)
    {
        // validation for constraint: string
        if (!is_null($stringField3) && !is_string($stringField3)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($stringField3, true), gettype($stringField3)), __LINE__);
        }
        if (is_null($stringField3) || (is_array($stringField3) && empty($stringField3))) {
            unset($this->StringField3);
        } else {
            $this->StringField3 = $stringField3;
        }
        return $this;
    }
    /**
     * Get StringField4 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getStringField4()
    {
        return isset($this->StringField4) ? $this->StringField4 : null;
    }
    /**
     * Set StringField4 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $stringField4
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setStringField4($stringField4 = null)
    {
        // validation for constraint: string
        if (!is_null($stringField4) && !is_string($stringField4)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($stringField4, true), gettype($stringField4)), __LINE__);
        }
        if (is_null($stringField4) || (is_array($stringField4) && empty($stringField4))) {
            unset($this->StringField4);
        } else {
            $this->StringField4 = $stringField4;
        }
        return $this;
    }
    /**
     * Get StringField5 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getStringField5()
    {
        return isset($this->StringField5) ? $this->StringField5 : null;
    }
    /**
     * Set StringField5 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $stringField5
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setStringField5($stringField5 = null)
    {
        // validation for constraint: string
        if (!is_null($stringField5) && !is_string($stringField5)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($stringField5, true), gettype($stringField5)), __LINE__);
        }
        if (is_null($stringField5) || (is_array($stringField5) && empty($stringField5))) {
            unset($this->StringField5);
        } else {
            $this->StringField5 = $stringField5;
        }
        return $this;
    }
    /**
     * Get StringField6 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getStringField6()
    {
        return isset($this->StringField6) ? $this->StringField6 : null;
    }
    /**
     * Set StringField6 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $stringField6
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setStringField6($stringField6 = null)
    {
        // validation for constraint: string
        if (!is_null($stringField6) && !is_string($stringField6)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($stringField6, true), gettype($stringField6)), __LINE__);
        }
        if (is_null($stringField6) || (is_array($stringField6) && empty($stringField6))) {
            unset($this->StringField6);
        } else {
            $this->StringField6 = $stringField6;
        }
        return $this;
    }
    /**
     * Get StringField7 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getStringField7()
    {
        return isset($this->StringField7) ? $this->StringField7 : null;
    }
    /**
     * Set StringField7 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $stringField7
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setStringField7($stringField7 = null)
    {
        // validation for constraint: string
        if (!is_null($stringField7) && !is_string($stringField7)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($stringField7, true), gettype($stringField7)), __LINE__);
        }
        if (is_null($stringField7) || (is_array($stringField7) && empty($stringField7))) {
            unset($this->StringField7);
        } else {
            $this->StringField7 = $stringField7;
        }
        return $this;
    }
    /**
     * Get StringField8 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getStringField8()
    {
        return isset($this->StringField8) ? $this->StringField8 : null;
    }
    /**
     * Set StringField8 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $stringField8
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setStringField8($stringField8 = null)
    {
        // validation for constraint: string
        if (!is_null($stringField8) && !is_string($stringField8)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($stringField8, true), gettype($stringField8)), __LINE__);
        }
        if (is_null($stringField8) || (is_array($stringField8) && empty($stringField8))) {
            unset($this->StringField8);
        } else {
            $this->StringField8 = $stringField8;
        }
        return $this;
    }
    /**
     * Get StringField9 value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return string|null
     */
    public function getStringField9()
    {
        return isset($this->StringField9) ? $this->StringField9 : null;
    }
    /**
     * Set StringField9 value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param string $stringField9
     * @return \patest\StructType\Crm_ClientExtraFields
     */
    public function setStringField9($stringField9 = null)
    {
        // validation for constraint: string
        if (!is_null($stringField9) && !is_string($stringField9)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($stringField9, true), gettype($stringField9)), __LINE__);
        }
        if (is_null($stringField9) || (is_array($stringField9) && empty($stringField9))) {
            unset($this->StringField9);
        } else {
            $this->StringField9 = $stringField9;
        }
        return $this;
    }
}
