<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Printing.Item.ComplexProperty.Media StructType
 * @subpackage Structs
 */
class Printing_Item_ComplexProperty_Media extends Printing_Item_ComplexProperty_Base
{
    /**
     * The BriefOverview
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $BriefOverview;
    /**
     * The DetailOverview
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $DetailOverview;
    /**
     * The EffectiveLargeImageUrl
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EffectiveLargeImageUrl;
    /**
     * The EffectiveMediumImageUrl
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EffectiveMediumImageUrl;
    /**
     * The EffectivePassbookImageUrl
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EffectivePassbookImageUrl;
    /**
     * The EffectiveSmallImageUrl
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EffectiveSmallImageUrl;
    /**
     * The EffectiveThumbnailImageUrl
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EffectiveThumbnailImageUrl;
    /**
     * The LargeImageId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $LargeImageId;
    /**
     * The MediumImageId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $MediumImageId;
    /**
     * The PassbookDescription
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $PassbookDescription;
    /**
     * The PassbookImageId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $PassbookImageId;
    /**
     * The ReviewUrl
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $ReviewUrl;
    /**
     * The SmallImageId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $SmallImageId;
    /**
     * The ThumbnailImageId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $ThumbnailImageId;
    /**
     * The TrailerUrl
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $TrailerUrl;
    /**
     * Constructor method for Printing.Item.ComplexProperty.Media
     * @uses Printing_Item_ComplexProperty_Media::setBriefOverview()
     * @uses Printing_Item_ComplexProperty_Media::setDetailOverview()
     * @uses Printing_Item_ComplexProperty_Media::setEffectiveLargeImageUrl()
     * @uses Printing_Item_ComplexProperty_Media::setEffectiveMediumImageUrl()
     * @uses Printing_Item_ComplexProperty_Media::setEffectivePassbookImageUrl()
     * @uses Printing_Item_ComplexProperty_Media::setEffectiveSmallImageUrl()
     * @uses Printing_Item_ComplexProperty_Media::setEffectiveThumbnailImageUrl()
     * @uses Printing_Item_ComplexProperty_Media::setLargeImageId()
     * @uses Printing_Item_ComplexProperty_Media::setMediumImageId()
     * @uses Printing_Item_ComplexProperty_Media::setPassbookDescription()
     * @uses Printing_Item_ComplexProperty_Media::setPassbookImageId()
     * @uses Printing_Item_ComplexProperty_Media::setReviewUrl()
     * @uses Printing_Item_ComplexProperty_Media::setSmallImageId()
     * @uses Printing_Item_ComplexProperty_Media::setThumbnailImageId()
     * @uses Printing_Item_ComplexProperty_Media::setTrailerUrl()
     * @param \patest\StructType\GlobalString $briefOverview
     * @param \patest\StructType\GlobalString $detailOverview
     * @param string $effectiveLargeImageUrl
     * @param string $effectiveMediumImageUrl
     * @param string $effectivePassbookImageUrl
     * @param string $effectiveSmallImageUrl
     * @param string $effectiveThumbnailImageUrl
     * @param int $largeImageId
     * @param int $mediumImageId
     * @param \patest\StructType\GlobalString $passbookDescription
     * @param int $passbookImageId
     * @param \patest\StructType\GlobalString $reviewUrl
     * @param int $smallImageId
     * @param int $thumbnailImageId
     * @param \patest\StructType\GlobalString $trailerUrl
     */
    public function __construct(\patest\StructType\GlobalString $briefOverview = null, \patest\StructType\GlobalString $detailOverview = null, $effectiveLargeImageUrl = null, $effectiveMediumImageUrl = null, $effectivePassbookImageUrl = null, $effectiveSmallImageUrl = null, $effectiveThumbnailImageUrl = null, $largeImageId = null, $mediumImageId = null, \patest\StructType\GlobalString $passbookDescription = null, $passbookImageId = null, \patest\StructType\GlobalString $reviewUrl = null, $smallImageId = null, $thumbnailImageId = null, \patest\StructType\GlobalString $trailerUrl = null)
    {
        $this
            ->setBriefOverview($briefOverview)
            ->setDetailOverview($detailOverview)
            ->setEffectiveLargeImageUrl($effectiveLargeImageUrl)
            ->setEffectiveMediumImageUrl($effectiveMediumImageUrl)
            ->setEffectivePassbookImageUrl($effectivePassbookImageUrl)
            ->setEffectiveSmallImageUrl($effectiveSmallImageUrl)
            ->setEffectiveThumbnailImageUrl($effectiveThumbnailImageUrl)
            ->setLargeImageId($largeImageId)
            ->setMediumImageId($mediumImageId)
            ->setPassbookDescription($passbookDescription)
            ->setPassbookImageId($passbookImageId)
            ->setReviewUrl($reviewUrl)
            ->setSmallImageId($smallImageId)
            ->setThumbnailImageId($thumbnailImageId)
            ->setTrailerUrl($trailerUrl);
    }
    /**
     * Get BriefOverview 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 getBriefOverview()
    {
        return isset($this->BriefOverview) ? $this->BriefOverview : null;
    }
    /**
     * Set BriefOverview 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 $briefOverview
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setBriefOverview(\patest\StructType\GlobalString $briefOverview = null)
    {
        if (is_null($briefOverview) || (is_array($briefOverview) && empty($briefOverview))) {
            unset($this->BriefOverview);
        } else {
            $this->BriefOverview = $briefOverview;
        }
        return $this;
    }
    /**
     * Get DetailOverview 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 getDetailOverview()
    {
        return isset($this->DetailOverview) ? $this->DetailOverview : null;
    }
    /**
     * Set DetailOverview 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 $detailOverview
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setDetailOverview(\patest\StructType\GlobalString $detailOverview = null)
    {
        if (is_null($detailOverview) || (is_array($detailOverview) && empty($detailOverview))) {
            unset($this->DetailOverview);
        } else {
            $this->DetailOverview = $detailOverview;
        }
        return $this;
    }
    /**
     * Get EffectiveLargeImageUrl 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 getEffectiveLargeImageUrl()
    {
        return isset($this->EffectiveLargeImageUrl) ? $this->EffectiveLargeImageUrl : null;
    }
    /**
     * Set EffectiveLargeImageUrl 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 $effectiveLargeImageUrl
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setEffectiveLargeImageUrl($effectiveLargeImageUrl = null)
    {
        // validation for constraint: string
        if (!is_null($effectiveLargeImageUrl) && !is_string($effectiveLargeImageUrl)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($effectiveLargeImageUrl, true), gettype($effectiveLargeImageUrl)), __LINE__);
        }
        if (is_null($effectiveLargeImageUrl) || (is_array($effectiveLargeImageUrl) && empty($effectiveLargeImageUrl))) {
            unset($this->EffectiveLargeImageUrl);
        } else {
            $this->EffectiveLargeImageUrl = $effectiveLargeImageUrl;
        }
        return $this;
    }
    /**
     * Get EffectiveMediumImageUrl 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 getEffectiveMediumImageUrl()
    {
        return isset($this->EffectiveMediumImageUrl) ? $this->EffectiveMediumImageUrl : null;
    }
    /**
     * Set EffectiveMediumImageUrl 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 $effectiveMediumImageUrl
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setEffectiveMediumImageUrl($effectiveMediumImageUrl = null)
    {
        // validation for constraint: string
        if (!is_null($effectiveMediumImageUrl) && !is_string($effectiveMediumImageUrl)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($effectiveMediumImageUrl, true), gettype($effectiveMediumImageUrl)), __LINE__);
        }
        if (is_null($effectiveMediumImageUrl) || (is_array($effectiveMediumImageUrl) && empty($effectiveMediumImageUrl))) {
            unset($this->EffectiveMediumImageUrl);
        } else {
            $this->EffectiveMediumImageUrl = $effectiveMediumImageUrl;
        }
        return $this;
    }
    /**
     * Get EffectivePassbookImageUrl 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 getEffectivePassbookImageUrl()
    {
        return isset($this->EffectivePassbookImageUrl) ? $this->EffectivePassbookImageUrl : null;
    }
    /**
     * Set EffectivePassbookImageUrl 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 $effectivePassbookImageUrl
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setEffectivePassbookImageUrl($effectivePassbookImageUrl = null)
    {
        // validation for constraint: string
        if (!is_null($effectivePassbookImageUrl) && !is_string($effectivePassbookImageUrl)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($effectivePassbookImageUrl, true), gettype($effectivePassbookImageUrl)), __LINE__);
        }
        if (is_null($effectivePassbookImageUrl) || (is_array($effectivePassbookImageUrl) && empty($effectivePassbookImageUrl))) {
            unset($this->EffectivePassbookImageUrl);
        } else {
            $this->EffectivePassbookImageUrl = $effectivePassbookImageUrl;
        }
        return $this;
    }
    /**
     * Get EffectiveSmallImageUrl 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 getEffectiveSmallImageUrl()
    {
        return isset($this->EffectiveSmallImageUrl) ? $this->EffectiveSmallImageUrl : null;
    }
    /**
     * Set EffectiveSmallImageUrl 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 $effectiveSmallImageUrl
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setEffectiveSmallImageUrl($effectiveSmallImageUrl = null)
    {
        // validation for constraint: string
        if (!is_null($effectiveSmallImageUrl) && !is_string($effectiveSmallImageUrl)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($effectiveSmallImageUrl, true), gettype($effectiveSmallImageUrl)), __LINE__);
        }
        if (is_null($effectiveSmallImageUrl) || (is_array($effectiveSmallImageUrl) && empty($effectiveSmallImageUrl))) {
            unset($this->EffectiveSmallImageUrl);
        } else {
            $this->EffectiveSmallImageUrl = $effectiveSmallImageUrl;
        }
        return $this;
    }
    /**
     * Get EffectiveThumbnailImageUrl 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 getEffectiveThumbnailImageUrl()
    {
        return isset($this->EffectiveThumbnailImageUrl) ? $this->EffectiveThumbnailImageUrl : null;
    }
    /**
     * Set EffectiveThumbnailImageUrl 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 $effectiveThumbnailImageUrl
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setEffectiveThumbnailImageUrl($effectiveThumbnailImageUrl = null)
    {
        // validation for constraint: string
        if (!is_null($effectiveThumbnailImageUrl) && !is_string($effectiveThumbnailImageUrl)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($effectiveThumbnailImageUrl, true), gettype($effectiveThumbnailImageUrl)), __LINE__);
        }
        if (is_null($effectiveThumbnailImageUrl) || (is_array($effectiveThumbnailImageUrl) && empty($effectiveThumbnailImageUrl))) {
            unset($this->EffectiveThumbnailImageUrl);
        } else {
            $this->EffectiveThumbnailImageUrl = $effectiveThumbnailImageUrl;
        }
        return $this;
    }
    /**
     * Get LargeImageId 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 int|null
     */
    public function getLargeImageId()
    {
        return isset($this->LargeImageId) ? $this->LargeImageId : null;
    }
    /**
     * Set LargeImageId 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 int $largeImageId
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setLargeImageId($largeImageId = null)
    {
        // validation for constraint: int
        if (!is_null($largeImageId) && !(is_int($largeImageId) || ctype_digit($largeImageId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($largeImageId, true), gettype($largeImageId)), __LINE__);
        }
        if (is_null($largeImageId) || (is_array($largeImageId) && empty($largeImageId))) {
            unset($this->LargeImageId);
        } else {
            $this->LargeImageId = $largeImageId;
        }
        return $this;
    }
    /**
     * Get MediumImageId 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 int|null
     */
    public function getMediumImageId()
    {
        return isset($this->MediumImageId) ? $this->MediumImageId : null;
    }
    /**
     * Set MediumImageId 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 int $mediumImageId
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setMediumImageId($mediumImageId = null)
    {
        // validation for constraint: int
        if (!is_null($mediumImageId) && !(is_int($mediumImageId) || ctype_digit($mediumImageId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($mediumImageId, true), gettype($mediumImageId)), __LINE__);
        }
        if (is_null($mediumImageId) || (is_array($mediumImageId) && empty($mediumImageId))) {
            unset($this->MediumImageId);
        } else {
            $this->MediumImageId = $mediumImageId;
        }
        return $this;
    }
    /**
     * Get PassbookDescription 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 getPassbookDescription()
    {
        return isset($this->PassbookDescription) ? $this->PassbookDescription : null;
    }
    /**
     * Set PassbookDescription 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 $passbookDescription
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setPassbookDescription(\patest\StructType\GlobalString $passbookDescription = null)
    {
        if (is_null($passbookDescription) || (is_array($passbookDescription) && empty($passbookDescription))) {
            unset($this->PassbookDescription);
        } else {
            $this->PassbookDescription = $passbookDescription;
        }
        return $this;
    }
    /**
     * Get PassbookImageId 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 int|null
     */
    public function getPassbookImageId()
    {
        return isset($this->PassbookImageId) ? $this->PassbookImageId : null;
    }
    /**
     * Set PassbookImageId 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 int $passbookImageId
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setPassbookImageId($passbookImageId = null)
    {
        // validation for constraint: int
        if (!is_null($passbookImageId) && !(is_int($passbookImageId) || ctype_digit($passbookImageId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($passbookImageId, true), gettype($passbookImageId)), __LINE__);
        }
        if (is_null($passbookImageId) || (is_array($passbookImageId) && empty($passbookImageId))) {
            unset($this->PassbookImageId);
        } else {
            $this->PassbookImageId = $passbookImageId;
        }
        return $this;
    }
    /**
     * Get ReviewUrl 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 getReviewUrl()
    {
        return isset($this->ReviewUrl) ? $this->ReviewUrl : null;
    }
    /**
     * Set ReviewUrl 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 $reviewUrl
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setReviewUrl(\patest\StructType\GlobalString $reviewUrl = null)
    {
        if (is_null($reviewUrl) || (is_array($reviewUrl) && empty($reviewUrl))) {
            unset($this->ReviewUrl);
        } else {
            $this->ReviewUrl = $reviewUrl;
        }
        return $this;
    }
    /**
     * Get SmallImageId 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 int|null
     */
    public function getSmallImageId()
    {
        return isset($this->SmallImageId) ? $this->SmallImageId : null;
    }
    /**
     * Set SmallImageId 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 int $smallImageId
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setSmallImageId($smallImageId = null)
    {
        // validation for constraint: int
        if (!is_null($smallImageId) && !(is_int($smallImageId) || ctype_digit($smallImageId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($smallImageId, true), gettype($smallImageId)), __LINE__);
        }
        if (is_null($smallImageId) || (is_array($smallImageId) && empty($smallImageId))) {
            unset($this->SmallImageId);
        } else {
            $this->SmallImageId = $smallImageId;
        }
        return $this;
    }
    /**
     * Get ThumbnailImageId 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 int|null
     */
    public function getThumbnailImageId()
    {
        return isset($this->ThumbnailImageId) ? $this->ThumbnailImageId : null;
    }
    /**
     * Set ThumbnailImageId 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 int $thumbnailImageId
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setThumbnailImageId($thumbnailImageId = null)
    {
        // validation for constraint: int
        if (!is_null($thumbnailImageId) && !(is_int($thumbnailImageId) || ctype_digit($thumbnailImageId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($thumbnailImageId, true), gettype($thumbnailImageId)), __LINE__);
        }
        if (is_null($thumbnailImageId) || (is_array($thumbnailImageId) && empty($thumbnailImageId))) {
            unset($this->ThumbnailImageId);
        } else {
            $this->ThumbnailImageId = $thumbnailImageId;
        }
        return $this;
    }
    /**
     * Get TrailerUrl 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 getTrailerUrl()
    {
        return isset($this->TrailerUrl) ? $this->TrailerUrl : null;
    }
    /**
     * Set TrailerUrl 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 $trailerUrl
     * @return \patest\StructType\Printing_Item_ComplexProperty_Media
     */
    public function setTrailerUrl(\patest\StructType\GlobalString $trailerUrl = null)
    {
        if (is_null($trailerUrl) || (is_array($trailerUrl) && empty($trailerUrl))) {
            unset($this->TrailerUrl);
        } else {
            $this->TrailerUrl = $trailerUrl;
        }
        return $this;
    }
}
