code: private void enqueue(E x) {
          // assert lock.getHoldCount() == 1;
          // assert items[putIndex] == null;
          final Object[] items = this.items;
          items[putIndex] = x;
          if (++putIndex == items.length) putIndex = 0;
          count++;
          notEmpty.signal();
      }
docs: Inserts element at current put position, advances, and signals.
  Call only when holding lock.