nit picking with the Queue poll contract:
- poll() == null iff queue is empty
- peek() == null iff queue is empty
This is expected from Queue interface.
Also size() is Integer.MAX if there are more than Integer.MAX elements
in queue.