docs: Node<E> first() {
          restartFromHead:
          for (;;)
              for (Node<E> h = head, p = h, q;;) {
                  if ((q = p.prev) != null &&
                      (q = (p = q).prev) != null)
                      // Check for head updates every other hop.
                      // If p == q, we are sure to follow head instead.
                      p = (h != (h = head)) ? h : q;
                  else if (p == h
                           // It is possible that p is PREV_TERMINATOR,
                           // but if so, the CAS is guaranteed to fail.
                           || HEAD.compareAndSet(this, h, p))
                      return p;
                  else
                      continue restartFromHead;
              }
      }