<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for VersionAreaMapDesign StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:VersionAreaMapDesign
 * @subpackage Structs
 */
class VersionAreaMapDesign extends AbstractStructBase
{
    /**
     * The Area
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\AreaDesign
     */
    public $Area;
    /**
     * The AreaMap
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\AreaMapDesign
     */
    public $AreaMap;
    /**
     * The Connector
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\VersionAreaDesign
     */
    public $Connector;
    /**
     * The DependencyTags
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfstring
     */
    public $DependencyTags;
    /**
     * The ImageUris
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfKeyValueOfintstring
     */
    public $ImageUris;
    /**
     * Constructor method for VersionAreaMapDesign
     * @uses VersionAreaMapDesign::setArea()
     * @uses VersionAreaMapDesign::setAreaMap()
     * @uses VersionAreaMapDesign::setConnector()
     * @uses VersionAreaMapDesign::setDependencyTags()
     * @uses VersionAreaMapDesign::setImageUris()
     * @param \patest\StructType\AreaDesign $area
     * @param \patest\StructType\AreaMapDesign $areaMap
     * @param \patest\StructType\VersionAreaDesign $connector
     * @param \patest\ArrayType\ArrayOfstring $dependencyTags
     * @param \patest\ArrayType\ArrayOfKeyValueOfintstring $imageUris
     */
    public function __construct(\patest\StructType\AreaDesign $area = null, \patest\StructType\AreaMapDesign $areaMap = null, \patest\StructType\VersionAreaDesign $connector = null, \patest\ArrayType\ArrayOfstring $dependencyTags = null, \patest\ArrayType\ArrayOfKeyValueOfintstring $imageUris = null)
    {
        $this
            ->setArea($area)
            ->setAreaMap($areaMap)
            ->setConnector($connector)
            ->setDependencyTags($dependencyTags)
            ->setImageUris($imageUris);
    }
    /**
     * Get Area 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\AreaDesign|null
     */
    public function getArea()
    {
        return isset($this->Area) ? $this->Area : null;
    }
    /**
     * Set Area 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\AreaDesign $area
     * @return \patest\StructType\VersionAreaMapDesign
     */
    public function setArea(\patest\StructType\AreaDesign $area = null)
    {
        if (is_null($area) || (is_array($area) && empty($area))) {
            unset($this->Area);
        } else {
            $this->Area = $area;
        }
        return $this;
    }
    /**
     * Get AreaMap 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\AreaMapDesign|null
     */
    public function getAreaMap()
    {
        return isset($this->AreaMap) ? $this->AreaMap : null;
    }
    /**
     * Set AreaMap 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\AreaMapDesign $areaMap
     * @return \patest\StructType\VersionAreaMapDesign
     */
    public function setAreaMap(\patest\StructType\AreaMapDesign $areaMap = null)
    {
        if (is_null($areaMap) || (is_array($areaMap) && empty($areaMap))) {
            unset($this->AreaMap);
        } else {
            $this->AreaMap = $areaMap;
        }
        return $this;
    }
    /**
     * Get Connector 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\VersionAreaDesign|null
     */
    public function getConnector()
    {
        return isset($this->Connector) ? $this->Connector : null;
    }
    /**
     * Set Connector 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\VersionAreaDesign $connector
     * @return \patest\StructType\VersionAreaMapDesign
     */
    public function setConnector(\patest\StructType\VersionAreaDesign $connector = null)
    {
        if (is_null($connector) || (is_array($connector) && empty($connector))) {
            unset($this->Connector);
        } else {
            $this->Connector = $connector;
        }
        return $this;
    }
    /**
     * Get DependencyTags 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\ArrayType\ArrayOfstring|null
     */
    public function getDependencyTags()
    {
        return isset($this->DependencyTags) ? $this->DependencyTags : null;
    }
    /**
     * Set DependencyTags 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\ArrayType\ArrayOfstring $dependencyTags
     * @return \patest\StructType\VersionAreaMapDesign
     */
    public function setDependencyTags(\patest\ArrayType\ArrayOfstring $dependencyTags = null)
    {
        if (is_null($dependencyTags) || (is_array($dependencyTags) && empty($dependencyTags))) {
            unset($this->DependencyTags);
        } else {
            $this->DependencyTags = $dependencyTags;
        }
        return $this;
    }
    /**
     * Get ImageUris 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\ArrayType\ArrayOfKeyValueOfintstring|null
     */
    public function getImageUris()
    {
        return isset($this->ImageUris) ? $this->ImageUris : null;
    }
    /**
     * Set ImageUris 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\ArrayType\ArrayOfKeyValueOfintstring $imageUris
     * @return \patest\StructType\VersionAreaMapDesign
     */
    public function setImageUris(\patest\ArrayType\ArrayOfKeyValueOfintstring $imageUris = null)
    {
        if (is_null($imageUris) || (is_array($imageUris) && empty($imageUris))) {
            unset($this->ImageUris);
        } else {
            $this->ImageUris = $imageUris;
        }
        return $this;
    }
}
