public static function fromHSL($hue, $saturation, $lightness)
    {
        if ($hue < 0 || $hue > 360 ||
            $saturation < 0 || $saturation > 100 ||
            $lightness < 0 || $lightness > 100) {
            throw new InvalidArgumentException('Value $hue can only be 0 to 360, $saturation and $lightness can only be 0 to 100');
        }

        return new self($hue, $saturation, $lightness);
    }