long parkTime(long n) {
        final long proposedShift = n - parkThreshold;
        final long allowedShift = min(maxShift, proposedShift);
        return proposedShift > maxShift ? maxParkPeriodNs
                : proposedShift < maxShift ? minParkPeriodNs << allowedShift
                : min(minParkPeriodNs << allowedShift, maxParkPeriodNs);
    }
@Test
    public void when_maxShiftedLessThanMaxParkTime_thenParkMaxShifted() {
        final BackoffIdleStrategy strat = new BackoffIdleStrategy(0, 0, 2, 3);

        assertEquals(2, strat.parkTime(0));
        assertEquals(3, strat.parkTime(1));
        assertEquals(3, strat.parkTime(2));
    }