docs: public boolean pushWithLimit(E d, int maxSize) {
          StackNode<E> oldTop, newTop;
  
          newTop = new StackNode<E>(d);
  
          while (true) {
              oldTop = top.get();
  
              newTop.next = oldTop;
              if (oldTop != null) {
                  newTop.index = oldTop.index + 1;
                  if (newTop.index >= maxSize)
                      return false;
              } else {
                  if (maxSize == 0)
                      return false;
                  newTop.index = 0;
              }
  
              if (top.compareAndSet(oldTop, newTop))
                  return true;
          }
      }