code: private RgbaColor adjustSL(int index, float first, float second) {
          float[] HSL = convertToHsl();
  
          float firstvalue = HSL[index] + first;
  
          // check if it's in bounds
          if (slCheck(firstvalue) == firstvalue) {
              // it is, keep this transform
              HSL[index] = firstvalue;
          }
          else if (second == 0) {
              // just take the first one because there is no second, but
              // bounds check it.
              HSL[index] = slCheck(firstvalue);
          }
          else {
              // always take the second if the first exceeds bounds
              HSL[index] = slCheck(HSL[index] + second);
          }
          return RgbaColor.fromHsl(HSL);
      }
docs: Takes two adjustments and applies the one that conforms to the
  range. If the first modification moves the value out of range
  [0-100], the second modification will be applied <b>and clipped
  if necessary</b>.
  
  @param index
  The index in HSL
  @param first
  The first modification that will be applied and
  bounds checked
  @param second
  If 0, the first is always applied