code: @Override
    public int size() {
      int count = 0;
      QNode h = traversalHead();
      for (QNode p = h.next; p != null && p.isData; p = p.next) {
        Object x = p.get();
        if (x != null && x != p) {
          if (++count == Integer.MAX_VALUE) {
            break;
          }
        }
      }
      return count;
    }
docs: Returns the number of elements in this queue. If this queue contains more than
  <tt>Integer.MAX_VALUE</tt> elements, returns <tt>Integer.MAX_VALUE</tt>.
  
  <p>
  Beware that, unlike in most collections, this method is <em>NOT</em> a constant-time operation.
  Because of the asynchronous nature of these queues, determining the current number of elements
  requires an O(n) traversal.
  
  @return the number of elements in this queue