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();
        }
    }