docs: private void updateHead() {
          // Either head already points to an active node, or we keep
          // trying to cas it to the first node until it does.
          Node<E> h, p, q;
          restartFromHead:
          while ((h = head).item == null && (p = h.prev) != null) {
              for (;;) {
                  if ((q = p.prev) == null ||
                      (q = (p = q).prev) == null) {
                      // It is possible that p is PREV_TERMINATOR,
                      // but if so, the CAS is guaranteed to fail.
                      if (HEAD.compareAndSet(this, h, p))
                          return;
                      else
                          continue restartFromHead;
                  }
                  else if (h != head)
                      continue restartFromHead;
                  else
                      p = q;
              }
          }
      }