code: public T allocate()
      {
          int top = _top.get();
  
          if (top > 0 && _top.compareAndSet(top, top - 1))
              return _freeStack.getAndSet(top - 1, null);
          else
              return null;
      }
docs: Try to get an object from the free list.  Returns null if the free list
  is empty.
  
  @return the new object or null.