docs: protected Collection<? extends IQueueMessage<ID, DATA>> _getOrphanMessagesWithRetries(
              long thresholdTimestampMs, Connection conn, int numRetries, int maxRetries) {
          try {
              jdbcHelper.startTransaction(conn);
              conn.setTransactionIsolation(transactionIsolationLevel);
              Collection<? extends IQueueMessage<ID, DATA>> msgs = getOrphanFromEphemeralStorage(conn,
                      thresholdTimestampMs);
              jdbcHelper.commitTransaction(conn);
              return msgs;
          } catch (DaoException de) {
              if (de.getCause() instanceof ConcurrencyFailureException) {
                  jdbcHelper.rollbackTransaction(conn);
                  if (numRetries > maxRetries) {
                      throw new QueueException(de);
                  } else {
                      incRetryCounter("_getOrphanMessagesWithRetries");
                      return _getOrphanMessagesWithRetries(thresholdTimestampMs, conn, numRetries + 1,
                              maxRetries);
                  }
              }
              throw de;
          } catch (Exception e) {
              jdbcHelper.rollbackTransaction(conn);
              throw e instanceof QueueException ? (QueueException) e : new QueueException(e);
          }
      }