base/common/src/main/com/thesett/common/util/concurrent/BatchSynchQueueBase.java
protected SynchRecordImpl<E> extract(boolean unblock, boolean signal)
    {
        SynchRecordImpl<E> result = buffer.remove();
        count--;

        if (signal)
        {
            notFull.signal();
        }

        if (unblock)
        {
            result.releaseImmediately();
        }

        return result;
    }
protected SynchRecordImpl<E> extract(boolean unblock, boolean signal)
    {
        SynchRecordImpl<E> result = buffer.remove();
        count--;

        if (signal)
        {
            notFull.signal();
        }

        if (unblock)
        {
            result.releaseImmediately();
        }

        return result;
    }
protected SynchRecordImpl < E > extract ( boolean unblock , boolean signal ) { SynchRecordImpl < E > result = buffer . remove ( ) ; count -- ; if ( signal ) { notFull . signal ( ) ; } if ( unblock ) { result . releaseImmediately ( ) ; } return result ; }
Removes an element from the buffer, and optionally unblocks the producer of the element, if it is waiting, and
optionally signals that the {@link #notFull} condition may now be true.

<p/>Warning: This method must only be called when holding the main {@link #lock}.

@param  unblock <tt>true</tt> if the elements producer should be released.
@param  signal  <tt>trye</tt> if the {@link #notFull} condition should be signalled.

@return The synch record for the extracted item.
Removes an element from the buffer and optionally unblocks the producer of the element if it is waiting and optionally signals that the { @link #notFull } condition may now be true .