public synchronized void drainTo(long currentTimeMillis, Queue<Object> out) {
        if (slots[NUM_SLOTS] == null && currentTimeMillis < nextTick) {
            return;
        }
        drainTo(NUM_SLOTS, 0, out);
        while (currentTimeMillis >= nextTick) {
            if (++currSlot >= NUM_SLOTS) {
                currSlot = 0;
                currIter++;
            }
            drainTo(currSlot, currIter, out);
            nextTick += MILLIS_PER_SLOT;
        }

    }
@author <a href="mailto:havardpe@yahoo-inc.com">Haavard Pettersen</a>
@author Simon Thoresen Hult
jdisc_core/src/main/java/com/yahoo/jdisc/core/ScheduledQueue.java