@Override
    public void release(final double thresholdRate) {
        val now = ZonedDateTime.now(ZoneOffset.UTC);
        LOGGER.debug("Attempting to release throttled records for now [{}]", now);
        removeIf(entry -> {
            if (entry.hasExpiredAlready()) {
                LOGGER.debug("Throttled submission [{}] has expired and will be removed", entry.getKey());
                return true;
            }
            if (entry.isStillInExpirationWindow()) {
                LOGGER.debug("Throttled submission [{}] has not expired and can only be released at [{}]",
                    entry.getKey(), entry.getExpiration());
                return false;
            }
            val submissionRate = submissionRate(now, entry.getValue());
            val result = submissionRate < thresholdRate;
            LOGGER.trace("Your threshold rate is [{}]. Submission rate between now [{}] and throttled entry [{}] @ [{}] is [{}]. "
                    + "This is [{}] than the threshold rate so the submission [{}] be released and removed from the store.",
                thresholdRate, now, entry.getId(), entry.getValue(), submissionRate,
                BooleanUtils.toString(result, "less", "greater"),
                BooleanUtils.toString(result, "may", "may not"));
            return result;
        });
    }
Computes the instantaneous rate in between two given dates corresponding to two submissions.

@param a First date.
@param b Second date.
@return Instantaneous submission rate in submissions/sec, e.g. {@code a - b}.
core/cas-server-core-authentication-throttle/src/main/java/org/apereo/cas/throttle/BaseMappableThrottledSubmissionsStore.java