// TODO start with size hint
final ConcurrentLinkedQueue<Object> queue = new ConcurrentLinkedQueue<Object>();
final AtomicLong wip = new AtomicLong();
final AtomicLong requested = new AtomicLong();
child.setProducer(new Producer() {
@Override
public void request(long n) {
if (requested.getAndAdd(n) == 0) {
pollQueue(wip, requested, queue, child);