docs: public void setPwm(Pin pin, int onPosition, int offPosition) {
          validatePin(pin, onPosition, offPosition);
          final int channel = pin.getAddress();
          validatePwmValueInRange(onPosition);
          validatePwmValueInRange(offPosition);
          if (onPosition == offPosition) {
              throw new ValidationException("ON [" + onPosition + "] and OFF [" + offPosition + "] values must be different.");
          }
          try {
              device.write(PCA9685A_LED0_ON_L + 4 * channel, (byte) (onPosition & 0xFF));
              device.write(PCA9685A_LED0_ON_H + 4 * channel, (byte) (onPosition >> 8));
              device.write(PCA9685A_LED0_OFF_L + 4 * channel, (byte) (offPosition & 0xFF));
              device.write(PCA9685A_LED0_OFF_H + 4 * channel, (byte) (offPosition >> 8));
          } catch (IOException e) {
              throw new RuntimeException("Unable to write to PWM channel [" + channel + "] values for ON [" + onPosition + "] and OFF [" + offPosition + "] position.", e);
          }
          cachePinValues(pin, onPosition, offPosition);
      }