# File lib/selenium/webdriver/support/color.rb, line 37
        def self.from_hsl(h, s, l, a)
          h = Float(h) / 360
          s = Float(s) / 100
          l = Float(l) / 100
          a = Float(a || 1)

          if s == 0
            r = l
            g = r
            b = r
          else
            luminocity2 = (l < 0.5) ? l * (1 + s) : l + s - l * s
            luminocity1 = 2 * l - luminocity2

            hue_to_rgb = lambda do |lum1, lum2, hue|
              hue += 1 if hue < 0.0
              hue -= 1 if hue > 1.0

              if hue < 1.0 / 6.0
                 (lum1 + (lum2 - lum1) * 6.0 * hue)
              elsif  hue < 1.0 / 2.0
                 lum2
              elsif hue < 2.0 / 3.0
                lum1 + (lum2 - lum1) * ((2.0 / 3.0) - hue) * 6.0
              else
                lum1
              end
            end

            r = hue_to_rgb.call(luminocity1, luminocity2, h + 1.0 / 3.0)
            g = hue_to_rgb.call(luminocity1, luminocity2, h)
            b = hue_to_rgb.call(luminocity1, luminocity2, h - 1.0 / 3.0)
          end

          new r * 256, g * 256, b * 256, a
        end