### Question:
FixedSizePreloadCache { public E pop() { E element; synchronized (stack) { element = stack.isEmpty() ? null : stack.pop(); } if (element == null) { return generator.get(); } new Thread(() -> push(generator.get())).start(); return element; } FixedSizePreloadCache(int maxSize, Supplier<E> generator); E pop(); int size();  }### Answer:
@Test public void testPopWhenOnTheFlyGenerationNeeded() { FixedSizePreloadCache<String> cache = new FixedSizePreloadCache<>(0, () -> Thread.currentThread().getName()); String actual = cache.pop(); assertEquals(Thread.currentThread().getName(), actual); }