/**
  * Sets the scaled size of the marker image
  *
  * Available prototypes:
  *  - function setScaledSize(Ivory\GoogleMap\Base\Size $scaledSize = null)
  *  - function setScaledSize(double $width, double $height, string $widthUnit = null, string $heightUnit = null)
  *
  * @throws \Ivory\GoogleMap\Exception\OverlayException If the scaled size is not valid.
  */
 public function setScaledSize()
 {
     $args = func_get_args();
     if (isset($args[0]) && $args[0] instanceof Size) {
         $this->scaledSize = $args[0];
     } elseif (isset($args[0]) && is_numeric($args[0]) && (isset($args[1]) && is_numeric($args[1]))) {
         if ($this->scaledSize === null) {
             $this->scaledSize = new Size();
         }
         $this->scaledSize->setWidth($args[0]);
         $this->scaledSize->setHeight($args[1]);
         if (isset($args[2]) && is_string($args[2])) {
             $this->scaledSize->setWidthUnit($args[2]);
         }
         if (isset($args[3]) && is_string($args[3])) {
             $this->scaledSize->setHeightUnit($args[3]);
         }
     } elseif (!isset($args[0])) {
         $this->scaledSize = null;
     } else {
         throw OverlayException::invalidMarkerImageScaledSize();
     }
 }