docs: public void push(E d) {
          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;
              else
                  newTop.index = 0;
              if (top.compareAndSet(oldTop, newTop))
                  return;
          }
      }