docs: private T pollInternal(boolean peek) {
          this.writeLock.lock();
          try {
              // Re-check size within the write lock
              if (this.size == 0) {
                  return null;
              }
  
              final K key;
              if (this.peekedKey != null) {
                  // If there is a peeked key use it
                  key = this.peekedKey;
                  if (!peek) {
                      // If not a peek consume the peekedKey
                      this.peekedKey = null;
                  }
              } else {
                  // Get the next element key
                  key = this.getNextElementKey();
                  if (peek) {
                      // If a peek store the key
                      this.peekedKey = key;
                  }
              }
  
              // Get the associated Queue and sanitity check the value from getNextElementKey()
              final Queue<T> queue = this.keyedQueues.get(key);
              if (queue == null || queue.isEmpty()) {
                  throw new IllegalStateException(
                          "getNextElementKey returned key='"
                                  + key
                                  + "' but there are no elements available for the key. This violates the contract specified for getNextElementKey");
              }
  
              if (peek) {
                  // If a peek just return a peek from the queue
                  return queue.peek();
              }
  
              // Not a peek, decrement the size and poll the queue
              this.size--;
              this.notFull.signal();
              return queue.poll();
          } finally {
              this.writeLock.unlock();
          }
      }