public class org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor extends org.apache.logging.log4j.core.AbstractLifeCycle implements org.apache.logging.log4j.core.async.AsyncLoggerConfigDelegate
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor
  super_class: org.apache.logging.log4j.core.AbstractLifeCycle
{
  private static final int MAX_DRAIN_ATTEMPTS_BEFORE_SHUTDOWN;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 200

  private static final int SLEEP_MILLIS_BETWEEN_DRAIN_ATTEMPTS;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 50

  private static final com.lmax.disruptor.EventFactory<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapper> FACTORY;
    descriptor: Lcom/lmax/disruptor/EventFactory;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lcom/lmax/disruptor/EventFactory<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;>;

  private static final com.lmax.disruptor.EventFactory<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapper> MUTABLE_FACTORY;
    descriptor: Lcom/lmax/disruptor/EventFactory;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lcom/lmax/disruptor/EventFactory<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;>;

  private static final com.lmax.disruptor.EventTranslatorTwoArg<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapper, org.apache.logging.log4j.core.LogEvent, org.apache.logging.log4j.core.async.AsyncLoggerConfig> TRANSLATOR;
    descriptor: Lcom/lmax/disruptor/EventTranslatorTwoArg;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lcom/lmax/disruptor/EventTranslatorTwoArg<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;Lorg/apache/logging/log4j/core/LogEvent;Lorg/apache/logging/log4j/core/async/AsyncLoggerConfig;>;

  private static final com.lmax.disruptor.EventTranslatorTwoArg<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapper, org.apache.logging.log4j.core.LogEvent, org.apache.logging.log4j.core.async.AsyncLoggerConfig> MUTABLE_TRANSLATOR;
    descriptor: Lcom/lmax/disruptor/EventTranslatorTwoArg;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lcom/lmax/disruptor/EventTranslatorTwoArg<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;Lorg/apache/logging/log4j/core/LogEvent;Lorg/apache/logging/log4j/core/async/AsyncLoggerConfig;>;

  private int ringBufferSize;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private org.apache.logging.log4j.core.async.AsyncQueueFullPolicy asyncQueueFullPolicy;
    descriptor: Lorg/apache/logging/log4j/core/async/AsyncQueueFullPolicy;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Boolean mutable;
    descriptor: Ljava/lang/Boolean;
    flags: (0x0002) ACC_PRIVATE

  private volatile com.lmax.disruptor.dsl.Disruptor<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapper> disruptor;
    descriptor: Lcom/lmax/disruptor/dsl/Disruptor;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Lcom/lmax/disruptor/dsl/Disruptor<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;>;

  private long backgroundThreadId;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private com.lmax.disruptor.EventFactory<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapper> factory;
    descriptor: Lcom/lmax/disruptor/EventFactory;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lcom/lmax/disruptor/EventFactory<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;>;

  private com.lmax.disruptor.EventTranslatorTwoArg<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapper, org.apache.logging.log4j.core.LogEvent, org.apache.logging.log4j.core.async.AsyncLoggerConfig> translator;
    descriptor: Lcom/lmax/disruptor/EventTranslatorTwoArg;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lcom/lmax/disruptor/EventTranslatorTwoArg<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;Lorg/apache/logging/log4j/core/LogEvent;Lorg/apache/logging/log4j/core/async/AsyncLoggerConfig;>;

  private volatile boolean alreadyLoggedWarning;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private final java.lang.Object queueFullEnqueueLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 133
            new org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$1
            dup
            invokespecial org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$1.<init>:()V
            putstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.FACTORY:Lcom/lmax/disruptor/EventFactory;
         1: .line 144
            new org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$2
            dup
            invokespecial org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$2.<init>:()V
            putstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.MUTABLE_FACTORY:Lcom/lmax/disruptor/EventFactory;
         2: .line 155
            new org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$3
            dup
            invokespecial org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$3.<init>:()V
         3: .line 154
            putstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.TRANSLATOR:Lcom/lmax/disruptor/EventTranslatorTwoArg;
         4: .line 169
            new org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$4
            dup
            invokespecial org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$4.<init>:()V
         5: .line 168
            putstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.MUTABLE_TRANSLATOR:Lcom/lmax/disruptor/EventTranslatorTwoArg;
         6: .line 177
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
         0: .line 191
            aload 0 /* this */
            invokespecial org.apache.logging.log4j.core.AbstractLifeCycle.<init>:()V
         1: .line 181
            aload 0 /* this */
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
            putfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.mutable:Ljava/lang/Boolean;
         2: .line 187
            aload 0 /* this */
            iconst_0
            putfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.alreadyLoggedWarning:Z
         3: .line 189
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.queueFullEnqueueLock:Ljava/lang/Object;
         4: .line 192
            return
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;

  public void setLogEventFactory(org.apache.logging.log4j.core.impl.LogEventFactory);
    descriptor: (Lorg/apache/logging/log4j/core/impl/LogEventFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
        start local 1 // org.apache.logging.log4j.core.impl.LogEventFactory logEventFactory
         0: .line 199
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.mutable:Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifne 1
            aload 1 /* logEventFactory */
            instanceof org.apache.logging.log4j.core.impl.ReusableLogEventFactory
            ifne 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor
         1: iconst_1
      StackMap locals: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor org.apache.logging.log4j.core.impl.LogEventFactory
      StackMap stack: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor int
         2: invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            putfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.mutable:Ljava/lang/Boolean;
         3: .line 200
            return
        end local 1 // org.apache.logging.log4j.core.impl.LogEventFactory logEventFactory
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0             this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            0    4     1  logEventFactory  Lorg/apache/logging/log4j/core/impl/LogEventFactory;
    MethodParameters:
                 Name  Flags
      logEventFactory  final

  public synchronized void start();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=8, locals=5, args_size=1
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
         0: .line 210
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
            ifnull 3
         1: .line 211
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "AsyncLoggerConfigDisruptor not starting new disruptor for this configuration, using existing object."
            invokeinterface org.apache.logging.log4j.Logger.trace:(Ljava/lang/String;)V
         2: .line 213
            return
         3: .line 215
      StackMap locals:
      StackMap stack:
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "AsyncLoggerConfigDisruptor creating new disruptor for this configuration."
            invokeinterface org.apache.logging.log4j.Logger.trace:(Ljava/lang/String;)V
         4: .line 216
            aload 0 /* this */
            ldc "AsyncLoggerConfig.RingBufferSize"
            invokestatic org.apache.logging.log4j.core.async.DisruptorUtil.calculateRingBufferSize:(Ljava/lang/String;)I
            putfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.ringBufferSize:I
         5: .line 217
            ldc "AsyncLoggerConfig.WaitStrategy"
            invokestatic org.apache.logging.log4j.core.async.DisruptorUtil.createWaitStrategy:(Ljava/lang/String;)Lcom/lmax/disruptor/WaitStrategy;
            astore 1 /* waitStrategy */
        start local 1 // com.lmax.disruptor.WaitStrategy waitStrategy
         6: .line 219
            new org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$5
            dup
            aload 0 /* this */
            ldc "AsyncLoggerConfig"
            iconst_1
            iconst_5
            invokespecial org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$5.<init>:(Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;Ljava/lang/String;ZI)V
            astore 2 /* threadFactory */
        start local 2 // java.util.concurrent.ThreadFactory threadFactory
         7: .line 227
            aload 0 /* this */
            invokestatic org.apache.logging.log4j.core.async.AsyncQueueFullPolicyFactory.create:()Lorg/apache/logging/log4j/core/async/AsyncQueueFullPolicy;
            putfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.asyncQueueFullPolicy:Lorg/apache/logging/log4j/core/async/AsyncQueueFullPolicy;
         8: .line 229
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.mutable:Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 9
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.MUTABLE_TRANSLATOR:Lcom/lmax/disruptor/EventTranslatorTwoArg;
            goto 10
      StackMap locals: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor com.lmax.disruptor.WaitStrategy java.util.concurrent.ThreadFactory
      StackMap stack: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor
         9: getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.TRANSLATOR:Lcom/lmax/disruptor/EventTranslatorTwoArg;
      StackMap locals: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor com.lmax.disruptor.WaitStrategy java.util.concurrent.ThreadFactory
      StackMap stack: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor com.lmax.disruptor.EventTranslatorTwoArg
        10: putfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.translator:Lcom/lmax/disruptor/EventTranslatorTwoArg;
        11: .line 230
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.mutable:Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 12
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.MUTABLE_FACTORY:Lcom/lmax/disruptor/EventFactory;
            goto 13
      StackMap locals:
      StackMap stack: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor
        12: getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.FACTORY:Lcom/lmax/disruptor/EventFactory;
      StackMap locals: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor com.lmax.disruptor.WaitStrategy java.util.concurrent.ThreadFactory
      StackMap stack: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor com.lmax.disruptor.EventFactory
        13: putfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.factory:Lcom/lmax/disruptor/EventFactory;
        14: .line 231
            aload 0 /* this */
            new com.lmax.disruptor.dsl.Disruptor
            dup
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.factory:Lcom/lmax/disruptor/EventFactory;
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.ringBufferSize:I
            aload 2 /* threadFactory */
            getstatic com.lmax.disruptor.dsl.ProducerType.MULTI:Lcom/lmax/disruptor/dsl/ProducerType;
            aload 1 /* waitStrategy */
            invokespecial com.lmax.disruptor.dsl.Disruptor.<init>:(Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/ThreadFactory;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/WaitStrategy;)V
            putfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
        15: .line 233
            invokestatic org.apache.logging.log4j.core.async.DisruptorUtil.getAsyncLoggerConfigExceptionHandler:()Lcom/lmax/disruptor/ExceptionHandler;
            astore 3 /* errorHandler */
        start local 3 // com.lmax.disruptor.ExceptionHandler errorHandler
        16: .line 234
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
            aload 3 /* errorHandler */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.setDefaultExceptionHandler:(Lcom/lmax/disruptor/ExceptionHandler;)V
        17: .line 236
            iconst_1
            anewarray org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler
            dup
            iconst_0
            new org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler
            dup
            invokespecial org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler.<init>:()V
            aastore
            astore 4 /* handlers */
        start local 4 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler[] handlers
        18: .line 237
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
            aload 4 /* handlers */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.handleEventsWith:([Lcom/lmax/disruptor/EventHandler;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
            pop
        19: .line 239
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "Starting AsyncLoggerConfig disruptor for this configuration with ringbufferSize={}, waitStrategy={}, exceptionHandler={}..."
        20: .line 240
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
            invokevirtual com.lmax.disruptor.dsl.Disruptor.getRingBuffer:()Lcom/lmax/disruptor/RingBuffer;
            invokevirtual com.lmax.disruptor.RingBuffer.getBufferSize:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 1 /* waitStrategy */
        21: .line 241
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aload 3 /* errorHandler */
        22: .line 239
            invokeinterface org.apache.logging.log4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
        23: .line 242
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
            invokevirtual com.lmax.disruptor.dsl.Disruptor.start:()Lcom/lmax/disruptor/RingBuffer;
            pop
        24: .line 243
            aload 0 /* this */
            invokespecial org.apache.logging.log4j.core.AbstractLifeCycle.start:()V
        25: .line 244
            return
        end local 4 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler[] handlers
        end local 3 // com.lmax.disruptor.ExceptionHandler errorHandler
        end local 2 // java.util.concurrent.ThreadFactory threadFactory
        end local 1 // com.lmax.disruptor.WaitStrategy waitStrategy
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   26     0           this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            6   26     1   waitStrategy  Lcom/lmax/disruptor/WaitStrategy;
            7   26     2  threadFactory  Ljava/util/concurrent/ThreadFactory;
           16   26     3   errorHandler  Lcom/lmax/disruptor/ExceptionHandler<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;>;
           18   26     4       handlers  [Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler;

  public boolean stop(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
        start local 1 // long timeout
        start local 3 // java.util.concurrent.TimeUnit timeUnit
         0: .line 252
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
            astore 4 /* temp */
        start local 4 // com.lmax.disruptor.dsl.Disruptor temp
         1: .line 253
            aload 4 /* temp */
            ifnonnull 4
         2: .line 254
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "AsyncLoggerConfigDisruptor: disruptor for this configuration already shut down."
            invokeinterface org.apache.logging.log4j.Logger.trace:(Ljava/lang/String;)V
         3: .line 255
            iconst_1
            ireturn
         4: .line 257
      StackMap locals: com.lmax.disruptor.dsl.Disruptor
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.setStopping:()V
         5: .line 258
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "AsyncLoggerConfigDisruptor: shutting down disruptor for this configuration."
            invokeinterface org.apache.logging.log4j.Logger.trace:(Ljava/lang/String;)V
         6: .line 261
            aload 0 /* this */
            aconst_null
            putfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
         7: .line 266
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         8: goto 13
         9: .line 268
      StackMap locals: int
      StackMap stack:
            ldc 50
            invokestatic java.lang.Thread.sleep:(J)V
        10: .line 269
            goto 12
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        11: pop
        12: .line 266
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: aload 4 /* temp */
            invokestatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.hasBacklog:(Lcom/lmax/disruptor/dsl/Disruptor;)Z
            ifeq 14
            iload 5 /* i */
            sipush 200
            if_icmplt 9
        end local 5 // int i
        14: .line 274
      StackMap locals:
      StackMap stack:
            aload 4 /* temp */
            lload 1 /* timeout */
            aload 3 /* timeUnit */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.shutdown:(JLjava/util/concurrent/TimeUnit;)V
        15: .line 275
            goto 19
      StackMap locals:
      StackMap stack: com.lmax.disruptor.TimeoutException
        16: pop
        17: .line 276
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "AsyncLoggerConfigDisruptor: shutdown timed out after {} {}"
            lload 1 /* timeout */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aload 3 /* timeUnit */
            invokeinterface org.apache.logging.log4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        18: .line 277
            aload 4 /* temp */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.halt:()V
        19: .line 279
      StackMap locals:
      StackMap stack:
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "AsyncLoggerConfigDisruptor: disruptor has been shut down."
            invokeinterface org.apache.logging.log4j.Logger.trace:(Ljava/lang/String;)V
        20: .line 281
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.asyncQueueFullPolicy:Lorg/apache/logging/log4j/core/async/AsyncQueueFullPolicy;
            invokestatic org.apache.logging.log4j.core.async.DiscardingAsyncQueueFullPolicy.getDiscardCount:(Lorg/apache/logging/log4j/core/async/AsyncQueueFullPolicy;)J
            lconst_0
            lcmp
            ifle 24
        21: .line 282
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "AsyncLoggerConfigDisruptor: {} discarded {} events."
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.asyncQueueFullPolicy:Lorg/apache/logging/log4j/core/async/AsyncQueueFullPolicy;
        22: .line 283
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.asyncQueueFullPolicy:Lorg/apache/logging/log4j/core/async/AsyncQueueFullPolicy;
            invokestatic org.apache.logging.log4j.core.async.DiscardingAsyncQueueFullPolicy.getDiscardCount:(Lorg/apache/logging/log4j/core/async/AsyncQueueFullPolicy;)J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
        23: .line 282
            invokeinterface org.apache.logging.log4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        24: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.setStopped:()V
        25: .line 286
            iconst_1
            ireturn
        end local 4 // com.lmax.disruptor.dsl.Disruptor temp
        end local 3 // java.util.concurrent.TimeUnit timeUnit
        end local 1 // long timeout
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   26     0      this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            0   26     1   timeout  J
            0   26     3  timeUnit  Ljava/util/concurrent/TimeUnit;
            1   26     4      temp  Lcom/lmax/disruptor/dsl/Disruptor<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;>;
            8   14     5         i  I
      Exception table:
        from    to  target  type
           9    10      11  Class java.lang.InterruptedException
          14    15      16  Class com.lmax.disruptor.TimeoutException
    MethodParameters:
          Name  Flags
      timeout   final
      timeUnit  final

  private static boolean hasBacklog(com.lmax.disruptor.dsl.Disruptor<?>);
    descriptor: (Lcom/lmax/disruptor/dsl/Disruptor;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.lmax.disruptor.dsl.Disruptor theDisruptor
         0: .line 293
            aload 0 /* theDisruptor */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.getRingBuffer:()Lcom/lmax/disruptor/RingBuffer;
            astore 1 /* ringBuffer */
        start local 1 // com.lmax.disruptor.RingBuffer ringBuffer
         1: .line 294
            aload 1 /* ringBuffer */
            aload 1 /* ringBuffer */
            invokevirtual com.lmax.disruptor.RingBuffer.getBufferSize:()I
            invokevirtual com.lmax.disruptor.RingBuffer.hasAvailableCapacity:(I)Z
            ifeq 2
            iconst_0
            goto 3
      StackMap locals: com.lmax.disruptor.RingBuffer
      StackMap stack:
         2: iconst_1
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 1 // com.lmax.disruptor.RingBuffer ringBuffer
        end local 0 // com.lmax.disruptor.dsl.Disruptor theDisruptor
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0  theDisruptor  Lcom/lmax/disruptor/dsl/Disruptor<*>;
            1    4     1    ringBuffer  Lcom/lmax/disruptor/RingBuffer<*>;
    Signature: (Lcom/lmax/disruptor/dsl/Disruptor<*>;)Z
    MethodParameters:
              Name  Flags
      theDisruptor  final

  public org.apache.logging.log4j.core.async.EventRoute getEventRoute(org.apache.logging.log4j.Level);
    descriptor: (Lorg/apache/logging/log4j/Level;)Lorg/apache/logging/log4j/core/async/EventRoute;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
        start local 1 // org.apache.logging.log4j.Level logLevel
         0: .line 299
            aload 0 /* this */
            invokevirtual org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.remainingDisruptorCapacity:()I
            istore 2 /* remainingCapacity */
        start local 2 // int remainingCapacity
         1: .line 300
            iload 2 /* remainingCapacity */
            ifge 3
         2: .line 301
            getstatic org.apache.logging.log4j.core.async.EventRoute.DISCARD:Lorg/apache/logging/log4j/core/async/EventRoute;
            areturn
         3: .line 303
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.asyncQueueFullPolicy:Lorg/apache/logging/log4j/core/async/AsyncQueueFullPolicy;
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.backgroundThreadId:J
            aload 1 /* logLevel */
            invokeinterface org.apache.logging.log4j.core.async.AsyncQueueFullPolicy.getRoute:(JLorg/apache/logging/log4j/Level;)Lorg/apache/logging/log4j/core/async/EventRoute;
            areturn
        end local 2 // int remainingCapacity
        end local 1 // org.apache.logging.log4j.Level logLevel
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    4     0               this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            0    4     1           logLevel  Lorg/apache/logging/log4j/Level;
            1    4     2  remainingCapacity  I
    MethodParameters:
          Name  Flags
      logLevel  final

  private int remainingDisruptorCapacity();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
         0: .line 307
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
            astore 1 /* temp */
        start local 1 // com.lmax.disruptor.dsl.Disruptor temp
         1: .line 308
            aload 0 /* this */
            aload 1 /* temp */
            invokevirtual org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.hasLog4jBeenShutDown:(Lcom/lmax/disruptor/dsl/Disruptor;)Z
            ifeq 3
         2: .line 309
            iconst_m1
            ireturn
         3: .line 311
      StackMap locals: com.lmax.disruptor.dsl.Disruptor
      StackMap stack:
            aload 1 /* temp */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.getRingBuffer:()Lcom/lmax/disruptor/RingBuffer;
            invokevirtual com.lmax.disruptor.RingBuffer.remainingCapacity:()J
            l2i
            ireturn
        end local 1 // com.lmax.disruptor.dsl.Disruptor temp
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            1    4     1  temp  Lcom/lmax/disruptor/dsl/Disruptor<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;>;

  private boolean hasLog4jBeenShutDown(com.lmax.disruptor.dsl.Disruptor<org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapper>);
    descriptor: (Lcom/lmax/disruptor/dsl/Disruptor;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
        start local 1 // com.lmax.disruptor.dsl.Disruptor aDisruptor
         0: .line 318
            aload 1 /* aDisruptor */
            ifnonnull 3
         1: .line 319
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "Ignoring log event after log4j was shut down"
            invokeinterface org.apache.logging.log4j.Logger.warn:(Ljava/lang/String;)V
         2: .line 320
            iconst_1
            ireturn
         3: .line 322
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // com.lmax.disruptor.dsl.Disruptor aDisruptor
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            0    4     1  aDisruptor  Lcom/lmax/disruptor/dsl/Disruptor<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;>;
    Signature: (Lcom/lmax/disruptor/dsl/Disruptor<Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor$Log4jEventWrapper;>;)Z
    MethodParameters:
            Name  Flags
      aDisruptor  final

  public void enqueueEvent(org.apache.logging.log4j.core.LogEvent, org.apache.logging.log4j.core.async.AsyncLoggerConfig);
    descriptor: (Lorg/apache/logging/log4j/core/LogEvent;Lorg/apache/logging/log4j/core/async/AsyncLoggerConfig;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=3
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
        start local 1 // org.apache.logging.log4j.core.LogEvent event
        start local 2 // org.apache.logging.log4j.core.async.AsyncLoggerConfig asyncLoggerConfig
         0: .line 329
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.prepareEvent:(Lorg/apache/logging/log4j/core/LogEvent;)Lorg/apache/logging/log4j/core/LogEvent;
            astore 3 /* logEvent */
        start local 3 // org.apache.logging.log4j.core.LogEvent logEvent
         1: .line 330
            aload 0 /* this */
            aload 3 /* logEvent */
            aload 2 /* asyncLoggerConfig */
            invokevirtual org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.enqueue:(Lorg/apache/logging/log4j/core/LogEvent;Lorg/apache/logging/log4j/core/async/AsyncLoggerConfig;)V
        end local 3 // org.apache.logging.log4j.core.LogEvent logEvent
         2: .line 331
            goto 10
      StackMap locals:
      StackMap stack: java.lang.NullPointerException
         3: pop
         4: .line 334
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "Ignoring log event after log4j was shut down: {} [{}] {}"
            aload 1 /* event */
            invokeinterface org.apache.logging.log4j.core.LogEvent.getLevel:()Lorg/apache/logging/log4j/Level;
         5: .line 335
            aload 1 /* event */
            invokeinterface org.apache.logging.log4j.core.LogEvent.getLoggerName:()Ljava/lang/String;
            new java.lang.StringBuilder
            dup
            aload 1 /* event */
            invokeinterface org.apache.logging.log4j.core.LogEvent.getMessage:()Lorg/apache/logging/log4j/message/Message;
            invokeinterface org.apache.logging.log4j.message.Message.getFormattedMessage:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 336
            aload 1 /* event */
            invokeinterface org.apache.logging.log4j.core.LogEvent.getThrown:()Ljava/lang/Throwable;
            ifnonnull 7
            ldc ""
            goto 8
      StackMap locals: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor org.apache.logging.log4j.core.LogEvent org.apache.logging.log4j.core.async.AsyncLoggerConfig
      StackMap stack: org.apache.logging.log4j.Logger java.lang.String org.apache.logging.log4j.Level java.lang.String java.lang.StringBuilder
         7: aload 1 /* event */
            invokeinterface org.apache.logging.log4j.core.LogEvent.getThrown:()Ljava/lang/Throwable;
            invokestatic org.apache.logging.log4j.core.util.Throwables.toStringList:(Ljava/lang/Throwable;)Ljava/util/List;
      StackMap locals: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor org.apache.logging.log4j.core.LogEvent org.apache.logging.log4j.core.async.AsyncLoggerConfig
      StackMap stack: org.apache.logging.log4j.Logger java.lang.String org.apache.logging.log4j.Level java.lang.String java.lang.StringBuilder java.lang.Object
         8: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 334
            invokeinterface org.apache.logging.log4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 338
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.apache.logging.log4j.core.async.AsyncLoggerConfig asyncLoggerConfig
        end local 1 // org.apache.logging.log4j.core.LogEvent event
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   11     0               this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            0   11     1              event  Lorg/apache/logging/log4j/core/LogEvent;
            0   11     2  asyncLoggerConfig  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfig;
            1    2     3           logEvent  Lorg/apache/logging/log4j/core/LogEvent;
      Exception table:
        from    to  target  type
           0     2       3  Class java.lang.NullPointerException
    MethodParameters:
                   Name  Flags
      event              final
      asyncLoggerConfig  final

  private org.apache.logging.log4j.core.LogEvent prepareEvent(org.apache.logging.log4j.core.LogEvent);
    descriptor: (Lorg/apache/logging/log4j/core/LogEvent;)Lorg/apache/logging/log4j/core/LogEvent;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
        start local 1 // org.apache.logging.log4j.core.LogEvent event
         0: .line 341
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.ensureImmutable:(Lorg/apache/logging/log4j/core/LogEvent;)Lorg/apache/logging/log4j/core/LogEvent;
            astore 2 /* logEvent */
        start local 2 // org.apache.logging.log4j.core.LogEvent logEvent
         1: .line 342
            aload 2 /* logEvent */
            invokeinterface org.apache.logging.log4j.core.LogEvent.getMessage:()Lorg/apache/logging/log4j/message/Message;
            instanceof org.apache.logging.log4j.message.ReusableMessage
            ifeq 11
         2: .line 343
            aload 2 /* logEvent */
            instanceof org.apache.logging.log4j.core.impl.Log4jLogEvent
            ifeq 5
         3: .line 344
            aload 2 /* logEvent */
            checkcast org.apache.logging.log4j.core.impl.Log4jLogEvent
            invokevirtual org.apache.logging.log4j.core.impl.Log4jLogEvent.makeMessageImmutable:()V
         4: .line 345
            goto 12
      StackMap locals: org.apache.logging.log4j.core.LogEvent
      StackMap stack:
         5: aload 2 /* logEvent */
            instanceof org.apache.logging.log4j.core.impl.MutableLogEvent
            ifeq 9
         6: .line 348
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.translator:Lcom/lmax/disruptor/EventTranslatorTwoArg;
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.MUTABLE_TRANSLATOR:Lcom/lmax/disruptor/EventTranslatorTwoArg;
            if_acmpeq 12
         7: .line 350
            aload 2 /* logEvent */
            checkcast org.apache.logging.log4j.core.impl.MutableLogEvent
            invokevirtual org.apache.logging.log4j.core.impl.MutableLogEvent.createMemento:()Lorg/apache/logging/log4j/core/impl/Log4jLogEvent;
            astore 2 /* logEvent */
         8: .line 352
            goto 12
         9: .line 353
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* logEvent */
            invokevirtual org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.showWarningAboutCustomLogEventWithReusableMessage:(Lorg/apache/logging/log4j/core/LogEvent;)V
        10: .line 355
            goto 12
        11: .line 356
      StackMap locals:
      StackMap stack:
            aload 2 /* logEvent */
            invokeinterface org.apache.logging.log4j.core.LogEvent.getMessage:()Lorg/apache/logging/log4j/message/Message;
            invokestatic org.apache.logging.log4j.core.async.InternalAsyncUtil.makeMessageImmutable:(Lorg/apache/logging/log4j/message/Message;)Lorg/apache/logging/log4j/message/Message;
            pop
        12: .line 358
      StackMap locals:
      StackMap stack:
            aload 2 /* logEvent */
            areturn
        end local 2 // org.apache.logging.log4j.core.LogEvent logEvent
        end local 1 // org.apache.logging.log4j.core.LogEvent event
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   13     0      this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            0   13     1     event  Lorg/apache/logging/log4j/core/LogEvent;
            1   13     2  logEvent  Lorg/apache/logging/log4j/core/LogEvent;
    MethodParameters:
       Name  Flags
      event  final

  private void showWarningAboutCustomLogEventWithReusableMessage(org.apache.logging.log4j.core.LogEvent);
    descriptor: (Lorg/apache/logging/log4j/core/LogEvent;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
        start local 1 // org.apache.logging.log4j.core.LogEvent logEvent
         0: .line 362
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.alreadyLoggedWarning:Z
            ifne 5
         1: .line 363
            getstatic org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "Custom log event of type {} contains a mutable message of type {}. AsyncLoggerConfig does not know how to make an immutable copy of this message. This may result in ConcurrentModificationExceptions or incorrect log messages if the application modifies objects in the message while the background thread is writing it to the appenders."
         2: .line 368
            aload 1 /* logEvent */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aload 1 /* logEvent */
            invokeinterface org.apache.logging.log4j.core.LogEvent.getMessage:()Lorg/apache/logging/log4j/message/Message;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
         3: .line 363
            invokeinterface org.apache.logging.log4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 369
            aload 0 /* this */
            iconst_1
            putfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.alreadyLoggedWarning:Z
         5: .line 371
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.apache.logging.log4j.core.LogEvent logEvent
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            0    6     1  logEvent  Lorg/apache/logging/log4j/core/LogEvent;
    MethodParameters:
          Name  Flags
      logEvent  final

  private void enqueue(org.apache.logging.log4j.core.LogEvent, org.apache.logging.log4j.core.async.AsyncLoggerConfig);
    descriptor: (Lorg/apache/logging/log4j/core/LogEvent;Lorg/apache/logging/log4j/core/async/AsyncLoggerConfig;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
        start local 1 // org.apache.logging.log4j.core.LogEvent logEvent
        start local 2 // org.apache.logging.log4j.core.async.AsyncLoggerConfig asyncLoggerConfig
         0: .line 374
            aload 0 /* this */
            invokevirtual org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.synchronizeEnqueueWhenQueueFull:()Z
            ifeq 7
         1: .line 375
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.queueFullEnqueueLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         2: .line 376
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
            invokevirtual com.lmax.disruptor.dsl.Disruptor.getRingBuffer:()Lcom/lmax/disruptor/RingBuffer;
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.translator:Lcom/lmax/disruptor/EventTranslatorTwoArg;
            aload 1 /* logEvent */
            aload 2 /* asyncLoggerConfig */
            invokevirtual com.lmax.disruptor.RingBuffer.publishEvent:(Lcom/lmax/disruptor/EventTranslatorTwoArg;Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 375
            aload 3
            monitorexit
         4: goto 8
      StackMap locals: org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor org.apache.logging.log4j.core.LogEvent org.apache.logging.log4j.core.async.AsyncLoggerConfig java.lang.Object
      StackMap stack: java.lang.Throwable
         5: aload 3
            monitorexit
         6: athrow
         7: .line 379
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
            invokevirtual com.lmax.disruptor.dsl.Disruptor.getRingBuffer:()Lcom/lmax/disruptor/RingBuffer;
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.translator:Lcom/lmax/disruptor/EventTranslatorTwoArg;
            aload 1 /* logEvent */
            aload 2 /* asyncLoggerConfig */
            invokevirtual com.lmax.disruptor.RingBuffer.publishEvent:(Lcom/lmax/disruptor/EventTranslatorTwoArg;Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 381
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.apache.logging.log4j.core.async.AsyncLoggerConfig asyncLoggerConfig
        end local 1 // org.apache.logging.log4j.core.LogEvent logEvent
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    9     0               this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            0    9     1           logEvent  Lorg/apache/logging/log4j/core/LogEvent;
            0    9     2  asyncLoggerConfig  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfig;
      Exception table:
        from    to  target  type
           2     4       5  any
           5     6       5  any
    MethodParameters:
                   Name  Flags
      logEvent           final
      asyncLoggerConfig  final

  private boolean synchronizeEnqueueWhenQueueFull();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
         0: .line 384
            getstatic org.apache.logging.log4j.core.async.DisruptorUtil.ASYNC_CONFIG_SYNCHRONIZE_ENQUEUE_WHEN_QUEUE_FULL:Z
            ifeq 3
         1: .line 386
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.backgroundThreadId:J
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getId:()J
            lcmp
            ifeq 3
         2: .line 384
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;

  public boolean tryEnqueue(org.apache.logging.log4j.core.LogEvent, org.apache.logging.log4j.core.async.AsyncLoggerConfig);
    descriptor: (Lorg/apache/logging/log4j/core/LogEvent;Lorg/apache/logging/log4j/core/async/AsyncLoggerConfig;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
        start local 1 // org.apache.logging.log4j.core.LogEvent event
        start local 2 // org.apache.logging.log4j.core.async.AsyncLoggerConfig asyncLoggerConfig
         0: .line 391
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.prepareEvent:(Lorg/apache/logging/log4j/core/LogEvent;)Lorg/apache/logging/log4j/core/LogEvent;
            astore 3 /* logEvent */
        start local 3 // org.apache.logging.log4j.core.LogEvent logEvent
         1: .line 392
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
            invokevirtual com.lmax.disruptor.dsl.Disruptor.getRingBuffer:()Lcom/lmax/disruptor/RingBuffer;
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.translator:Lcom/lmax/disruptor/EventTranslatorTwoArg;
            aload 3 /* logEvent */
            aload 2 /* asyncLoggerConfig */
            invokevirtual com.lmax.disruptor.RingBuffer.tryPublishEvent:(Lcom/lmax/disruptor/EventTranslatorTwoArg;Ljava/lang/Object;Ljava/lang/Object;)Z
            ireturn
        end local 3 // org.apache.logging.log4j.core.LogEvent logEvent
        end local 2 // org.apache.logging.log4j.core.async.AsyncLoggerConfig asyncLoggerConfig
        end local 1 // org.apache.logging.log4j.core.LogEvent event
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            0    2     1              event  Lorg/apache/logging/log4j/core/LogEvent;
            0    2     2  asyncLoggerConfig  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfig;
            1    2     3           logEvent  Lorg/apache/logging/log4j/core/LogEvent;
    MethodParameters:
                   Name  Flags
      event              final
      asyncLoggerConfig  final

  private org.apache.logging.log4j.core.LogEvent ensureImmutable(org.apache.logging.log4j.core.LogEvent);
    descriptor: (Lorg/apache/logging/log4j/core/LogEvent;)Lorg/apache/logging/log4j/core/LogEvent;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=3, args_size=2
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
        start local 1 // org.apache.logging.log4j.core.LogEvent event
         0: .line 396
            aload 1 /* event */
            astore 2 /* result */
        start local 2 // org.apache.logging.log4j.core.LogEvent result
         1: .line 397
            aload 1 /* event */
            instanceof org.apache.logging.log4j.core.async.RingBufferLogEvent
            ifeq 3
         2: .line 404
            aload 1 /* event */
            checkcast org.apache.logging.log4j.core.async.RingBufferLogEvent
            invokevirtual org.apache.logging.log4j.core.async.RingBufferLogEvent.createMemento:()Lorg/apache/logging/log4j/core/LogEvent;
            astore 2 /* result */
         3: .line 406
      StackMap locals: org.apache.logging.log4j.core.LogEvent
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // org.apache.logging.log4j.core.LogEvent result
        end local 1 // org.apache.logging.log4j.core.LogEvent event
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            0    4     1   event  Lorg/apache/logging/log4j/core/LogEvent;
            1    4     2  result  Lorg/apache/logging/log4j/core/LogEvent;
    MethodParameters:
       Name  Flags
      event  final

  public org.apache.logging.log4j.core.jmx.RingBufferAdmin createRingBufferAdmin(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Lorg/apache/logging/log4j/core/jmx/RingBufferAdmin;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
        start local 1 // java.lang.String contextName
        start local 2 // java.lang.String loggerConfigName
         0: .line 417
            aload 0 /* this */
            getfield org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.disruptor:Lcom/lmax/disruptor/dsl/Disruptor;
            invokevirtual com.lmax.disruptor.dsl.Disruptor.getRingBuffer:()Lcom/lmax/disruptor/RingBuffer;
            aload 1 /* contextName */
            aload 2 /* loggerConfigName */
            invokestatic org.apache.logging.log4j.core.jmx.RingBufferAdmin.forAsyncLoggerConfig:(Lcom/lmax/disruptor/RingBuffer;Ljava/lang/String;Ljava/lang/String;)Lorg/apache/logging/log4j/core/jmx/RingBufferAdmin;
            areturn
        end local 2 // java.lang.String loggerConfigName
        end local 1 // java.lang.String contextName
        end local 0 // org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lorg/apache/logging/log4j/core/async/AsyncLoggerConfigDisruptor;
            0    1     1       contextName  Ljava/lang/String;
            0    1     2  loggerConfigName  Ljava/lang/String;
    MethodParameters:
                  Name  Flags
      contextName       final
      loggerConfigName  final
}
SourceFile: "AsyncLoggerConfigDisruptor.java"
NestMembers:
  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$1  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$2  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$3  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$4  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$5  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapper  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler
InnerClasses:
  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$1
  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$2
  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$3
  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$4
  org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$5
  public Log4jEventWrapper = org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapper of org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor
  private Log4jEventWrapperHandler = org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor$Log4jEventWrapperHandler of org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor