code: @Override
      public T peek() {
          synchronized (this) {
              if (numberOfUsedExpeditedSlots.get() > 0) {
                  return expeditedBuffer[expeditedTakeIndex];
              } else if (numberOfUsedSlots.get() > 0) {
                  return buffer[takeIndex];
              } else {
                  return null;
              }
          }
      }
docs: Peeks at the head of the buffer and returns the first
  object (or null if empty). The object remains in the
  buffer.