public boolean receiveNext()
    {
        boolean isAvailable = false;
        final AtomicBuffer buffer = this.buffer;
        final long tail = buffer.getLongVolatile(tailCounterIndex);
        long cursor = nextRecord;

        if (tail > cursor)
        {
            final int capacity = this.capacity;
            int recordOffset = (int)cursor & (capacity - 1);

            if (!validate(cursor, buffer, capacity))
            {
                lappedCount.lazySet(lappedCount.get() + 1);

                cursor = buffer.getLongVolatile(latestCounterIndex);
                recordOffset = (int)cursor & (capacity - 1);
            }

            this.cursor = cursor;
            nextRecord = cursor + align(buffer.getInt(lengthOffset(recordOffset)), RECORD_ALIGNMENT);

            if (PADDING_MSG_TYPE_ID == buffer.getInt(typeOffset(recordOffset)))
            {
                recordOffset = 0;
                this.cursor = nextRecord;
                nextRecord += align(buffer.getInt(lengthOffset(recordOffset)), RECORD_ALIGNMENT);
            }

            this.recordOffset = recordOffset;
            isAvailable = true;
        }

        return isAvailable;
    }
@Test
    void shouldNotReceiveFromEmptyBuffer()
    {
        assertFalse(broadcastReceiver.receiveNext());
    }