class ExponentialRandomBackOffContext extends ExponentialBackOffPolicy.ExponentialBackOffContext {

		private final Random r = new Random();

		public ExponentialRandomBackOffContext(long expSeed, double multiplier, long maxInterval,
				Supplier<Long> expSeedSupplier, Supplier<Double> multiplierSupplier,
				Supplier<Long> maxIntervalSupplier) {

			super(expSeed, multiplier, maxInterval, expSeedSupplier, multiplierSupplier, maxIntervalSupplier);
		}

		@Override
		public synchronized long getSleepAndIncrement() {<FILL_FUNCTION_BODY>}

	}

			long next = super.getSleepAndIncrement();
			next = (long) (next * (1 + r.nextFloat() * (getMultiplier() - 1)));
			if (next > super.getMaxInterval()) {
				next = super.getMaxInterval();
			}
			return next;
		
<methods>public non-sealed void <init>() ,public void backOff(org.springframework.retry.backoff.BackOffContext) throws org.springframework.retry.backoff.BackOffInterruptedException,public long getInitialInterval() ,public long getMaxInterval() ,public double getMultiplier() ,public void initialIntervalSupplier(Supplier<java.lang.Long>) ,public void maxIntervalSupplier(Supplier<java.lang.Long>) ,public void multiplierSupplier(Supplier<java.lang.Double>) ,public void setInitialInterval(long) ,public void setMaxInterval(long) ,public void setMultiplier(double) ,public void setSleeper(org.springframework.retry.backoff.Sleeper) ,public org.springframework.retry.backoff.BackOffContext start(org.springframework.retry.RetryContext) ,public java.lang.String toString() ,public org.springframework.retry.backoff.ExponentialBackOffPolicy withSleeper(org.springframework.retry.backoff.Sleeper) <variables>public static final long DEFAULT_INITIAL_INTERVAL,public static final long DEFAULT_MAX_INTERVAL,public static final double DEFAULT_MULTIPLIER,private long initialInterval,private Supplier<java.lang.Long> initialIntervalSupplier,protected final org.apache.commons.logging.Log logger,private long maxInterval,private Supplier<java.lang.Long> maxIntervalSupplier,private double multiplier,private Supplier<java.lang.Double> multiplierSupplier,private org.springframework.retry.backoff.Sleeper sleeper