public Object dequeue() throws QueueEmptyException {
    Object obj;
    if (size == 0)
      throw new QueueEmptyException("Queue is empty.");
    obj = head.getElement();
    head = head.getNext();
    size--;
    if (size == 0)
    tail = null; // the queue is now empty
    return obj;
  }