docs: @Override
      public IQueueMessage<ID, DATA> take() throws QueueException.EphemeralIsFull {
          Document document;
          if (isEphemeralDisabled()) {
              document = getCollection().findOneAndDelete(FILTER_TAKE,
                      TAKE_EPHEMERAL_DISABLED_OPTIONS);
          } else {
              int ephemeralMaxSize = getEphemeralMaxSize();
              if (ephemeralMaxSize > 0 && ephemeralSize() >= ephemeralMaxSize) {
                  throw new QueueException.EphemeralIsFull(ephemeralMaxSize);
              }
              String ephemeralId = QueueUtils.IDGEN.generateId128Hex();
              document = getCollection().findOneAndUpdate(FILTER_TAKE,
                      Updates.set(COLLECTION_FIELD_EPHEMERAL_KEY, ephemeralId), TAKE_OPTIONS);
          }
          return fromDocument(document);
      }