The jitter ratio calculation could throw an ArithmeticException if spec.delay().toMillis() returns 0. Additionally, converting to milliseconds may lose precision for sub-millisecond delays.

Retry retry = Retry.backoff(spec.maxAttempts(), spec.delay())
    .jitter((double) spec.jitter().toMillis() / spec.delay().toMillis())
    .multiplier(spec.multiplier())
    .maxBackoff(spec.maxDelay())