code: public T allocate()
    {
      while (true) {
        SoftReference<T> ref;
        
        ref = _ringQueue.poll();
        
        if (ref == null) {
          return null;
        }
        
        T value = ref.get();
        
        if (value != null) {
          return value;
        }
      }
    }
docs: Try to get an object from the free list.  Returns null if the free list
  is empty.
  
  @return the new object or null.