docs: private E unlinkLast() {
          // assert lock.isHeldByCurrentThread();
          Node<E> l = last;
          if (l == null)
              return null;
          Node<E> p = l.prev;
          E item = l.item;
          l.item = null;
          l.prev = l; // help GC
          last = p;
          if (p == null)
              first = null;
          else
              p.next = null;
          --count;
          notFull.signal();
          return item;
      }