code: final void updateHead(Node<E> h, Node<E> p) {
          // assert h != null && p != null && (h == p || h.item == null);
          if (h != p && casHead(h, p))
              lazySetNext(h, sentinel());
      }
docs: Tries to CAS head to p. If successful, repoint old head to itself
  as sentinel for succ(), below.