private static long checkedAdd(long a, long b) {
        long result = a + b;
        if (!((a ^ b) < 0 | (a ^ result) >= 0)) {
            throw new ArithmeticException("overflow");
        }
        return result;
    }
The time when the next request (no matter its size) will be granted. After granting a
request, this is pushed further in the future. Large requests push this further than small
requests.
lts-core/src/main/java/com/github/ltsopensource/core/commons/concurrent/limiter/SmoothRateLimiter.java