code: protected Deque<SentryException> extractExceptionQueue(ILoggingEvent iLoggingEvent) {
          IThrowableProxy throwableProxy = iLoggingEvent.getThrowableProxy();
          Deque<SentryException> exceptions = new ArrayDeque<>();
          Set<IThrowableProxy> circularityDetector = new HashSet<>();
          StackTraceElement[] enclosingStackTrace = new StackTraceElement[0];
  
          //Stack the exceptions to send them in the reverse order
          while (throwableProxy != null) {
              if (!circularityDetector.add(throwableProxy)) {
                  addWarn("Exiting a circular exception!");
                  break;
              }
  
              StackTraceElement[] stackTraceElements = toStackTraceElements(throwableProxy);
              StackTraceInterface stackTrace = new StackTraceInterface(stackTraceElements, enclosingStackTrace);
              exceptions.push(createSentryExceptionFrom(throwableProxy, stackTrace));
              enclosingStackTrace = stackTraceElements;
              throwableProxy = throwableProxy.getCause();
          }
  
          return exceptions;
      }
docs: Creates a sequence of {@link SentryException}s given a particular {@link ILoggingEvent}.
  
  @param iLoggingEvent Information detailing a particular logging event
  
  @return A {@link Deque} of {@link SentryException}s detailing the exception chain