docs: public void append(final LoggingEvent event) {
          boolean isBufferSpaceAvailable = (batcher.isSpaceAvailable() && (logSummaryMap
                  .size() == 0));
          boolean isBufferPutSuccessful = false;
          LocationInfo locationInfo = null;
          // Reject it when we have a fast property as these can be expensive
          Stopwatch s = locationInfoTimer.start();
          if (CONFIGURATION.shouldSummarizeOverflow(this.originalAppenderName)) {
              if (CONFIGURATION.shouldGenerateBlitz4jLocationInfo()) {
                  locationInfo = LoggingContext.getInstance()
                          .generateLocationInfo(event);
              } else if (CONFIGURATION.shouldGenerateLog4jLocationInfo()) {
                  locationInfo = event.getLocationInformation();
              }
          }
          s.stop();
  
          if (isBufferSpaceAvailable) {
              // Save the thread local info in the event so that the
              // processing threads can have access to the thread local of the arriving event
              Stopwatch sThreadLocal = saveThreadLocalTimer.start();
              saveThreadLocalInfo(event);
              sThreadLocal.stop();
              isBufferPutSuccessful = putInBuffer(event);
          }
          // If the buffer is full, then summarize the information
          if (CONFIGURATION.shouldSummarizeOverflow(this.originalAppenderName) && (!isBufferPutSuccessful)) {
              summarizeEventCounter.increment();
              Stopwatch t = putDiscardMapTimeTracer.start();
              String loggerKey = event.getLoggerName();
              if (locationInfo != null) {
                  loggerKey = locationInfo.getClassName() + "_"
                          + locationInfo.getLineNumber();
              }
  
              LogSummary summary = (LogSummary) logSummaryMap.get(loggerKey);
              if (summary == null) {
                  // Saving the thread local info is needed only for the first
                  // time
                  // creation of the summary
                  saveThreadLocalInfo(event);
                  summary = new LogSummary(event);
                  logSummaryMap.put(loggerKey, summary);
              } else {
                  // The event summary is already there, just increment the
                  // count
                  summary.add(event);
              }
              t.stop();
          } else if (!CONFIGURATION.shouldSummarizeOverflow(this.originalAppenderName) && (!isBufferPutSuccessful)) {
              // Record the event that are not summarized and which are just
              // discarded
              discardEventCounter.increment();
          }
  
      }