private void enqueue(final Object o) {
        final Object[] items = this.items;
        items[putIndex] = o;
        if (++putIndex == items.length) {
            putIndex = 0;
        }
        count++;
        notEmpty.signal();
    }
Inserts element at current put position, advances, and signals.
Call only when holding lock.
stroom-util/src/main/java/stroom/util/concurrent/CompletableQueue.java