docs: private void updateTail() {
          // Either tail already points to an active node, or we keep
          // trying to cas it to the last node until it does.
          Node<E> t, p, q;
          restartFromTail:
          while ((t = tail).item == null && (p = t.next) != null) {
              for (;;) {
                  if ((q = p.next) == null ||
                      (q = (p = q).next) == null) {
                      // It is possible that p is NEXT_TERMINATOR,
                      // but if so, the CAS is guaranteed to fail.
                      if (casTail(t, p))
                          return;
                      else
                          continue restartFromTail;
                  }
                  else if (t != tail)
                      continue restartFromTail;
                  else
                      p = q;
              }
          }
      }