public E poll()
    {
        E value = null;
        final Node<E> head = this.head;
        Node<E> next = head.next;

        if (null != next)
        {
            value = next.value;
            next.value = null;
            head.nextOrdered(null);

            if (null == next.next)
            {
                final Node<E> tail = this.tail;
                if (tail == next && casTail(tail, empty))
                {
                    next = empty;
                }
            }

            headOrdered(next);
        }

        return value;
    }
@Test
    void shouldFailToPoll()
    {
        assertNull(queue.poll());
    }