public class com.lmax.disruptor.dsl.Disruptor<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.lmax.disruptor.dsl.Disruptor
  super_class: java.lang.Object
{
  private final com.lmax.disruptor.RingBuffer<T> ringBuffer;
    descriptor: Lcom/lmax/disruptor/RingBuffer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/lmax/disruptor/RingBuffer<TT;>;

  private final java.util.concurrent.Executor executor;
    descriptor: Ljava/util/concurrent/Executor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.lmax.disruptor.dsl.ConsumerRepository<T> consumerRepository;
    descriptor: Lcom/lmax/disruptor/dsl/ConsumerRepository;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/lmax/disruptor/dsl/ConsumerRepository<TT;>;

  private final java.util.concurrent.atomic.AtomicBoolean started;
    descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private com.lmax.disruptor.ExceptionHandler<? super T> exceptionHandler;
    descriptor: Lcom/lmax/disruptor/ExceptionHandler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lcom/lmax/disruptor/ExceptionHandler<-TT;>;

  public void <init>(com.lmax.disruptor.EventFactory<T>, int, java.util.concurrent.Executor);
    descriptor: (Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/Executor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventFactory eventFactory
        start local 2 // int ringBufferSize
        start local 3 // java.util.concurrent.Executor executor
         0: .line 81
            aload 0 /* this */
            aload 1 /* eventFactory */
            iload 2 /* ringBufferSize */
            invokestatic com.lmax.disruptor.RingBuffer.createMultiProducer:(Lcom/lmax/disruptor/EventFactory;I)Lcom/lmax/disruptor/RingBuffer;
            aload 3 /* executor */
            invokespecial com.lmax.disruptor.dsl.Disruptor.<init>:(Lcom/lmax/disruptor/RingBuffer;Ljava/util/concurrent/Executor;)V
         1: .line 82
            return
        end local 3 // java.util.concurrent.Executor executor
        end local 2 // int ringBufferSize
        end local 1 // com.lmax.disruptor.EventFactory eventFactory
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    2     1    eventFactory  Lcom/lmax/disruptor/EventFactory<TT;>;
            0    2     2  ringBufferSize  I
            0    2     3        executor  Ljava/util/concurrent/Executor;
    Signature: (Lcom/lmax/disruptor/EventFactory<TT;>;ILjava/util/concurrent/Executor;)V
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                Name  Flags
      eventFactory    final
      ringBufferSize  final
      executor        final

  public void <init>(com.lmax.disruptor.EventFactory<T>, int, java.util.concurrent.Executor, com.lmax.disruptor.dsl.ProducerType, com.lmax.disruptor.WaitStrategy);
    descriptor: (Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/Executor;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/WaitStrategy;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventFactory eventFactory
        start local 2 // int ringBufferSize
        start local 3 // java.util.concurrent.Executor executor
        start local 4 // com.lmax.disruptor.dsl.ProducerType producerType
        start local 5 // com.lmax.disruptor.WaitStrategy waitStrategy
         0: .line 104
            aload 0 /* this */
            aload 4 /* producerType */
            aload 1 /* eventFactory */
            iload 2 /* ringBufferSize */
            aload 5 /* waitStrategy */
            invokestatic com.lmax.disruptor.RingBuffer.create:(Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/EventFactory;ILcom/lmax/disruptor/WaitStrategy;)Lcom/lmax/disruptor/RingBuffer;
            aload 3 /* executor */
            invokespecial com.lmax.disruptor.dsl.Disruptor.<init>:(Lcom/lmax/disruptor/RingBuffer;Ljava/util/concurrent/Executor;)V
         1: .line 105
            return
        end local 5 // com.lmax.disruptor.WaitStrategy waitStrategy
        end local 4 // com.lmax.disruptor.dsl.ProducerType producerType
        end local 3 // java.util.concurrent.Executor executor
        end local 2 // int ringBufferSize
        end local 1 // com.lmax.disruptor.EventFactory eventFactory
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    2     1    eventFactory  Lcom/lmax/disruptor/EventFactory<TT;>;
            0    2     2  ringBufferSize  I
            0    2     3        executor  Ljava/util/concurrent/Executor;
            0    2     4    producerType  Lcom/lmax/disruptor/dsl/ProducerType;
            0    2     5    waitStrategy  Lcom/lmax/disruptor/WaitStrategy;
    Signature: (Lcom/lmax/disruptor/EventFactory<TT;>;ILjava/util/concurrent/Executor;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/WaitStrategy;)V
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                Name  Flags
      eventFactory    final
      ringBufferSize  final
      executor        final
      producerType    final
      waitStrategy    final

  public void <init>(com.lmax.disruptor.EventFactory<T>, int, java.util.concurrent.ThreadFactory);
    descriptor: (Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/ThreadFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventFactory eventFactory
        start local 2 // int ringBufferSize
        start local 3 // java.util.concurrent.ThreadFactory threadFactory
         0: .line 117
            aload 0 /* this */
            aload 1 /* eventFactory */
            iload 2 /* ringBufferSize */
            invokestatic com.lmax.disruptor.RingBuffer.createMultiProducer:(Lcom/lmax/disruptor/EventFactory;I)Lcom/lmax/disruptor/RingBuffer;
            new com.lmax.disruptor.dsl.BasicExecutor
            dup
            aload 3 /* threadFactory */
            invokespecial com.lmax.disruptor.dsl.BasicExecutor.<init>:(Ljava/util/concurrent/ThreadFactory;)V
            invokespecial com.lmax.disruptor.dsl.Disruptor.<init>:(Lcom/lmax/disruptor/RingBuffer;Ljava/util/concurrent/Executor;)V
         1: .line 118
            return
        end local 3 // java.util.concurrent.ThreadFactory threadFactory
        end local 2 // int ringBufferSize
        end local 1 // com.lmax.disruptor.EventFactory eventFactory
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    2     1    eventFactory  Lcom/lmax/disruptor/EventFactory<TT;>;
            0    2     2  ringBufferSize  I
            0    2     3   threadFactory  Ljava/util/concurrent/ThreadFactory;
    Signature: (Lcom/lmax/disruptor/EventFactory<TT;>;ILjava/util/concurrent/ThreadFactory;)V
    MethodParameters:
                Name  Flags
      eventFactory    final
      ringBufferSize  final
      threadFactory   final

  public void <init>(com.lmax.disruptor.EventFactory<T>, int, java.util.concurrent.ThreadFactory, com.lmax.disruptor.dsl.ProducerType, com.lmax.disruptor.WaitStrategy);
    descriptor: (Lcom/lmax/disruptor/EventFactory;ILjava/util/concurrent/ThreadFactory;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/WaitStrategy;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventFactory eventFactory
        start local 2 // int ringBufferSize
        start local 3 // java.util.concurrent.ThreadFactory threadFactory
        start local 4 // com.lmax.disruptor.dsl.ProducerType producerType
        start local 5 // com.lmax.disruptor.WaitStrategy waitStrategy
         0: .line 136
            aload 0 /* this */
         1: .line 137
            aload 4 /* producerType */
            aload 1 /* eventFactory */
            iload 2 /* ringBufferSize */
            aload 5 /* waitStrategy */
            invokestatic com.lmax.disruptor.RingBuffer.create:(Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/EventFactory;ILcom/lmax/disruptor/WaitStrategy;)Lcom/lmax/disruptor/RingBuffer;
         2: .line 138
            new com.lmax.disruptor.dsl.BasicExecutor
            dup
            aload 3 /* threadFactory */
            invokespecial com.lmax.disruptor.dsl.BasicExecutor.<init>:(Ljava/util/concurrent/ThreadFactory;)V
            invokespecial com.lmax.disruptor.dsl.Disruptor.<init>:(Lcom/lmax/disruptor/RingBuffer;Ljava/util/concurrent/Executor;)V
         3: .line 139
            return
        end local 5 // com.lmax.disruptor.WaitStrategy waitStrategy
        end local 4 // com.lmax.disruptor.dsl.ProducerType producerType
        end local 3 // java.util.concurrent.ThreadFactory threadFactory
        end local 2 // int ringBufferSize
        end local 1 // com.lmax.disruptor.EventFactory eventFactory
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    4     1    eventFactory  Lcom/lmax/disruptor/EventFactory<TT;>;
            0    4     2  ringBufferSize  I
            0    4     3   threadFactory  Ljava/util/concurrent/ThreadFactory;
            0    4     4    producerType  Lcom/lmax/disruptor/dsl/ProducerType;
            0    4     5    waitStrategy  Lcom/lmax/disruptor/WaitStrategy;
    Signature: (Lcom/lmax/disruptor/EventFactory<TT;>;ILjava/util/concurrent/ThreadFactory;Lcom/lmax/disruptor/dsl/ProducerType;Lcom/lmax/disruptor/WaitStrategy;)V
    MethodParameters:
                Name  Flags
      eventFactory    final
      ringBufferSize  final
      threadFactory   final
      producerType    final
      waitStrategy    final

  private void <init>(com.lmax.disruptor.RingBuffer<T>, java.util.concurrent.Executor);
    descriptor: (Lcom/lmax/disruptor/RingBuffer;Ljava/util/concurrent/Executor;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.RingBuffer ringBuffer
        start local 2 // java.util.concurrent.Executor executor
         0: .line 144
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 63
            aload 0 /* this */
            new com.lmax.disruptor.dsl.ConsumerRepository
            dup
            invokespecial com.lmax.disruptor.dsl.ConsumerRepository.<init>:()V
            putfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
         2: .line 64
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
            putfield com.lmax.disruptor.dsl.Disruptor.started:Ljava/util/concurrent/atomic/AtomicBoolean;
         3: .line 65
            aload 0 /* this */
            new com.lmax.disruptor.dsl.ExceptionHandlerWrapper
            dup
            invokespecial com.lmax.disruptor.dsl.ExceptionHandlerWrapper.<init>:()V
            putfield com.lmax.disruptor.dsl.Disruptor.exceptionHandler:Lcom/lmax/disruptor/ExceptionHandler;
         4: .line 146
            aload 0 /* this */
            aload 1 /* ringBuffer */
            putfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
         5: .line 147
            aload 0 /* this */
            aload 2 /* executor */
            putfield com.lmax.disruptor.dsl.Disruptor.executor:Ljava/util/concurrent/Executor;
         6: .line 148
            return
        end local 2 // java.util.concurrent.Executor executor
        end local 1 // com.lmax.disruptor.RingBuffer ringBuffer
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    7     1  ringBuffer  Lcom/lmax/disruptor/RingBuffer<TT;>;
            0    7     2    executor  Ljava/util/concurrent/Executor;
    Signature: (Lcom/lmax/disruptor/RingBuffer<TT;>;Ljava/util/concurrent/Executor;)V
    MethodParameters:
            Name  Flags
      ringBuffer  final
      executor    final

  public final com.lmax.disruptor.dsl.EventHandlerGroup<T> handleEventsWith(com.lmax.disruptor.EventHandler<? super T>[]);
    descriptor: ([Lcom/lmax/disruptor/EventHandler;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
    flags: (0x0091) ACC_PUBLIC, ACC_FINAL, ACC_VARARGS
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventHandler[] handlers
         0: .line 167
            aload 0 /* this */
            iconst_0
            anewarray com.lmax.disruptor.Sequence
            aload 1 /* handlers */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.createEventProcessors:([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/EventHandler;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
            areturn
        end local 1 // com.lmax.disruptor.EventHandler[] handlers
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    1     1  handlers  [Lcom/lmax/disruptor/EventHandler;
    Signature: ([Lcom/lmax/disruptor/EventHandler<-TT;>;)Lcom/lmax/disruptor/dsl/EventHandlerGroup<TT;>;
    RuntimeVisibleAnnotations: 
      java.lang.SafeVarargs()
    MethodParameters:
          Name  Flags
      handlers  final

  public final com.lmax.disruptor.dsl.EventHandlerGroup<T> handleEventsWith(com.lmax.disruptor.dsl.EventProcessorFactory<T>[]);
    descriptor: ([Lcom/lmax/disruptor/dsl/EventProcessorFactory;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
    flags: (0x0091) ACC_PUBLIC, ACC_FINAL, ACC_VARARGS
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.dsl.EventProcessorFactory[] eventProcessorFactories
         0: .line 191
            iconst_0
            anewarray com.lmax.disruptor.Sequence
            astore 2 /* barrierSequences */
        start local 2 // com.lmax.disruptor.Sequence[] barrierSequences
         1: .line 192
            aload 0 /* this */
            aload 2 /* barrierSequences */
            aload 1 /* eventProcessorFactories */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.createEventProcessors:([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/dsl/EventProcessorFactory;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
            areturn
        end local 2 // com.lmax.disruptor.Sequence[] barrierSequences
        end local 1 // com.lmax.disruptor.dsl.EventProcessorFactory[] eventProcessorFactories
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    2     0                     this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    2     1  eventProcessorFactories  [Lcom/lmax/disruptor/dsl/EventProcessorFactory;
            1    2     2         barrierSequences  [Lcom/lmax/disruptor/Sequence;
    Signature: ([Lcom/lmax/disruptor/dsl/EventProcessorFactory<TT;>;)Lcom/lmax/disruptor/dsl/EventHandlerGroup<TT;>;
    RuntimeVisibleAnnotations: 
      java.lang.SafeVarargs()
    MethodParameters:
                         Name  Flags
      eventProcessorFactories  final

  public com.lmax.disruptor.dsl.EventHandlerGroup<T> handleEventsWith(com.lmax.disruptor.EventProcessor[]);
    descriptor: ([Lcom/lmax/disruptor/EventProcessor;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventProcessor[] processors
         0: .line 208
            aload 1 /* processors */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 4
      StackMap locals: com.lmax.disruptor.dsl.Disruptor com.lmax.disruptor.EventProcessor[] top int int com.lmax.disruptor.EventProcessor[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* processor */
        start local 2 // com.lmax.disruptor.EventProcessor processor
         2: .line 210
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 2 /* processor */
            invokevirtual com.lmax.disruptor.dsl.ConsumerRepository.add:(Lcom/lmax/disruptor/EventProcessor;)V
        end local 2 // com.lmax.disruptor.EventProcessor processor
         3: .line 208
            iinc 3 1
      StackMap locals:
      StackMap stack:
         4: iload 3
            iload 4
            if_icmplt 1
         5: .line 213
            aload 1 /* processors */
            arraylength
            anewarray com.lmax.disruptor.Sequence
            astore 2 /* sequences */
        start local 2 // com.lmax.disruptor.Sequence[] sequences
         6: .line 214
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         7: goto 10
         8: .line 216
      StackMap locals: com.lmax.disruptor.dsl.Disruptor com.lmax.disruptor.EventProcessor[] com.lmax.disruptor.Sequence[] int
      StackMap stack:
            aload 2 /* sequences */
            iload 3 /* i */
            aload 1 /* processors */
            iload 3 /* i */
            aaload
            invokeinterface com.lmax.disruptor.EventProcessor.getSequence:()Lcom/lmax/disruptor/Sequence;
            aastore
         9: .line 214
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            aload 1 /* processors */
            arraylength
            if_icmplt 8
        end local 3 // int i
        11: .line 219
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 2 /* sequences */
            invokevirtual com.lmax.disruptor.RingBuffer.addGatingSequences:([Lcom/lmax/disruptor/Sequence;)V
        12: .line 221
            new com.lmax.disruptor.dsl.EventHandlerGroup
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 1 /* processors */
            invokestatic com.lmax.disruptor.util.Util.getSequencesFor:([Lcom/lmax/disruptor/EventProcessor;)[Lcom/lmax/disruptor/Sequence;
            invokespecial com.lmax.disruptor.dsl.EventHandlerGroup.<init>:(Lcom/lmax/disruptor/dsl/Disruptor;Lcom/lmax/disruptor/dsl/ConsumerRepository;[Lcom/lmax/disruptor/Sequence;)V
            areturn
        end local 2 // com.lmax.disruptor.Sequence[] sequences
        end local 1 // com.lmax.disruptor.EventProcessor[] processors
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0   13     1  processors  [Lcom/lmax/disruptor/EventProcessor;
            2    3     2   processor  Lcom/lmax/disruptor/EventProcessor;
            6   13     2   sequences  [Lcom/lmax/disruptor/Sequence;
            7   11     3           i  I
    Signature: ([Lcom/lmax/disruptor/EventProcessor;)Lcom/lmax/disruptor/dsl/EventHandlerGroup<TT;>;
    MethodParameters:
            Name  Flags
      processors  final

  public final com.lmax.disruptor.dsl.EventHandlerGroup<T> handleEventsWithWorkerPool(com.lmax.disruptor.WorkHandler<T>[]);
    descriptor: ([Lcom/lmax/disruptor/WorkHandler;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
    flags: (0x0091) ACC_PUBLIC, ACC_FINAL, ACC_VARARGS
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.WorkHandler[] workHandlers
         0: .line 237
            aload 0 /* this */
            iconst_0
            anewarray com.lmax.disruptor.Sequence
            aload 1 /* workHandlers */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.createWorkerPool:([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/WorkHandler;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
            areturn
        end local 1 // com.lmax.disruptor.WorkHandler[] workHandlers
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    1     1  workHandlers  [Lcom/lmax/disruptor/WorkHandler;
    Signature: ([Lcom/lmax/disruptor/WorkHandler<TT;>;)Lcom/lmax/disruptor/dsl/EventHandlerGroup<TT;>;
    RuntimeVisibleAnnotations: 
      java.lang.SafeVarargs()
    MethodParameters:
              Name  Flags
      workHandlers  final

  public void handleExceptionsWith(com.lmax.disruptor.ExceptionHandler<? super T>);
    descriptor: (Lcom/lmax/disruptor/ExceptionHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.ExceptionHandler exceptionHandler
         0: .line 250
            aload 0 /* this */
            aload 1 /* exceptionHandler */
            putfield com.lmax.disruptor.dsl.Disruptor.exceptionHandler:Lcom/lmax/disruptor/ExceptionHandler;
         1: .line 251
            return
        end local 1 // com.lmax.disruptor.ExceptionHandler exceptionHandler
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    2     1  exceptionHandler  Lcom/lmax/disruptor/ExceptionHandler<-TT;>;
    Signature: (Lcom/lmax/disruptor/ExceptionHandler<-TT;>;)V
    MethodParameters:
                  Name  Flags
      exceptionHandler  final

  public void setDefaultExceptionHandler(com.lmax.disruptor.ExceptionHandler<? super T>);
    descriptor: (Lcom/lmax/disruptor/ExceptionHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.ExceptionHandler exceptionHandler
         0: .line 263
            aload 0 /* this */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.checkNotStarted:()V
         1: .line 264
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.exceptionHandler:Lcom/lmax/disruptor/ExceptionHandler;
            instanceof com.lmax.disruptor.dsl.ExceptionHandlerWrapper
            ifne 3
         2: .line 266
            new java.lang.IllegalStateException
            dup
            ldc "setDefaultExceptionHandler can not be used after handleExceptionsWith"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 268
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.exceptionHandler:Lcom/lmax/disruptor/ExceptionHandler;
            checkcast com.lmax.disruptor.dsl.ExceptionHandlerWrapper
            aload 1 /* exceptionHandler */
            invokevirtual com.lmax.disruptor.dsl.ExceptionHandlerWrapper.switchTo:(Lcom/lmax/disruptor/ExceptionHandler;)V
         4: .line 269
            return
        end local 1 // com.lmax.disruptor.ExceptionHandler exceptionHandler
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0              this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    5     1  exceptionHandler  Lcom/lmax/disruptor/ExceptionHandler<-TT;>;
    Signature: (Lcom/lmax/disruptor/ExceptionHandler<-TT;>;)V
    MethodParameters:
                  Name  Flags
      exceptionHandler  final

  public com.lmax.disruptor.dsl.ExceptionHandlerSetting<T> handleExceptionsFor(com.lmax.disruptor.EventHandler<T>);
    descriptor: (Lcom/lmax/disruptor/EventHandler;)Lcom/lmax/disruptor/dsl/ExceptionHandlerSetting;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventHandler eventHandler
         0: .line 280
            new com.lmax.disruptor.dsl.ExceptionHandlerSetting
            dup
            aload 1 /* eventHandler */
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            invokespecial com.lmax.disruptor.dsl.ExceptionHandlerSetting.<init>:(Lcom/lmax/disruptor/EventHandler;Lcom/lmax/disruptor/dsl/ConsumerRepository;)V
            areturn
        end local 1 // com.lmax.disruptor.EventHandler eventHandler
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    1     1  eventHandler  Lcom/lmax/disruptor/EventHandler<TT;>;
    Signature: (Lcom/lmax/disruptor/EventHandler<TT;>;)Lcom/lmax/disruptor/dsl/ExceptionHandlerSetting<TT;>;
    MethodParameters:
              Name  Flags
      eventHandler  final

  public final com.lmax.disruptor.dsl.EventHandlerGroup<T> after(com.lmax.disruptor.EventHandler<T>[]);
    descriptor: ([Lcom/lmax/disruptor/EventHandler;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
    flags: (0x0091) ACC_PUBLIC, ACC_FINAL, ACC_VARARGS
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventHandler[] handlers
         0: .line 297
            aload 1 /* handlers */
            arraylength
            anewarray com.lmax.disruptor.Sequence
            astore 2 /* sequences */
        start local 2 // com.lmax.disruptor.Sequence[] sequences
         1: .line 298
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: aload 1 /* handlers */
            arraylength
            istore 4 /* handlersLength */
        start local 4 // int handlersLength
         3: goto 6
         4: .line 300
      StackMap locals: com.lmax.disruptor.Sequence[] int int
      StackMap stack:
            aload 2 /* sequences */
            iload 3 /* i */
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 1 /* handlers */
            iload 3 /* i */
            aaload
            invokevirtual com.lmax.disruptor.dsl.ConsumerRepository.getSequenceFor:(Lcom/lmax/disruptor/EventHandler;)Lcom/lmax/disruptor/Sequence;
            aastore
         5: .line 298
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 3 /* i */
            iload 4 /* handlersLength */
            if_icmplt 4
        end local 4 // int handlersLength
        end local 3 // int i
         7: .line 303
            new com.lmax.disruptor.dsl.EventHandlerGroup
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 2 /* sequences */
            invokespecial com.lmax.disruptor.dsl.EventHandlerGroup.<init>:(Lcom/lmax/disruptor/dsl/Disruptor;Lcom/lmax/disruptor/dsl/ConsumerRepository;[Lcom/lmax/disruptor/Sequence;)V
            areturn
        end local 2 // com.lmax.disruptor.Sequence[] sequences
        end local 1 // com.lmax.disruptor.EventHandler[] handlers
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    8     1        handlers  [Lcom/lmax/disruptor/EventHandler;
            1    8     2       sequences  [Lcom/lmax/disruptor/Sequence;
            2    7     3               i  I
            3    7     4  handlersLength  I
    Signature: ([Lcom/lmax/disruptor/EventHandler<TT;>;)Lcom/lmax/disruptor/dsl/EventHandlerGroup<TT;>;
    RuntimeVisibleAnnotations: 
      java.lang.SafeVarargs()
    MethodParameters:
          Name  Flags
      handlers  final

  public com.lmax.disruptor.dsl.EventHandlerGroup<T> after(com.lmax.disruptor.EventProcessor[]);
    descriptor: ([Lcom/lmax/disruptor/EventProcessor;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventProcessor[] processors
         0: .line 316
            aload 1 /* processors */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 4
      StackMap locals: com.lmax.disruptor.dsl.Disruptor com.lmax.disruptor.EventProcessor[] top int int com.lmax.disruptor.EventProcessor[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* processor */
        start local 2 // com.lmax.disruptor.EventProcessor processor
         2: .line 318
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 2 /* processor */
            invokevirtual com.lmax.disruptor.dsl.ConsumerRepository.add:(Lcom/lmax/disruptor/EventProcessor;)V
        end local 2 // com.lmax.disruptor.EventProcessor processor
         3: .line 316
            iinc 3 1
      StackMap locals:
      StackMap stack:
         4: iload 3
            iload 4
            if_icmplt 1
         5: .line 321
            new com.lmax.disruptor.dsl.EventHandlerGroup
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 1 /* processors */
            invokestatic com.lmax.disruptor.util.Util.getSequencesFor:([Lcom/lmax/disruptor/EventProcessor;)[Lcom/lmax/disruptor/Sequence;
            invokespecial com.lmax.disruptor.dsl.EventHandlerGroup.<init>:(Lcom/lmax/disruptor/dsl/Disruptor;Lcom/lmax/disruptor/dsl/ConsumerRepository;[Lcom/lmax/disruptor/Sequence;)V
            areturn
        end local 1 // com.lmax.disruptor.EventProcessor[] processors
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    6     1  processors  [Lcom/lmax/disruptor/EventProcessor;
            2    3     2   processor  Lcom/lmax/disruptor/EventProcessor;
    Signature: ([Lcom/lmax/disruptor/EventProcessor;)Lcom/lmax/disruptor/dsl/EventHandlerGroup<TT;>;
    MethodParameters:
            Name  Flags
      processors  final

  public void publishEvent(com.lmax.disruptor.EventTranslator<T>);
    descriptor: (Lcom/lmax/disruptor/EventTranslator;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventTranslator eventTranslator
         0: .line 331
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 1 /* eventTranslator */
            invokevirtual com.lmax.disruptor.RingBuffer.publishEvent:(Lcom/lmax/disruptor/EventTranslator;)V
         1: .line 332
            return
        end local 1 // com.lmax.disruptor.EventTranslator eventTranslator
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    2     1  eventTranslator  Lcom/lmax/disruptor/EventTranslator<TT;>;
    Signature: (Lcom/lmax/disruptor/EventTranslator<TT;>;)V
    MethodParameters:
                 Name  Flags
      eventTranslator  final

  public <A> void publishEvent(com.lmax.disruptor.EventTranslatorOneArg<T, A>, );
    descriptor: (Lcom/lmax/disruptor/EventTranslatorOneArg;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventTranslatorOneArg eventTranslator
        start local 2 // java.lang.Object arg
         0: .line 343
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 1 /* eventTranslator */
            aload 2 /* arg */
            invokevirtual com.lmax.disruptor.RingBuffer.publishEvent:(Lcom/lmax/disruptor/EventTranslatorOneArg;Ljava/lang/Object;)V
         1: .line 344
            return
        end local 2 // java.lang.Object arg
        end local 1 // com.lmax.disruptor.EventTranslatorOneArg eventTranslator
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    2     1  eventTranslator  Lcom/lmax/disruptor/EventTranslatorOneArg<TT;TA;>;
            0    2     2              arg  TA;
    Signature: <A:Ljava/lang/Object;>(Lcom/lmax/disruptor/EventTranslatorOneArg<TT;TA;>;TA;)V
    MethodParameters:
                 Name  Flags
      eventTranslator  final
      arg              final

  public <A> void publishEvents(com.lmax.disruptor.EventTranslatorOneArg<T, A>, );
    descriptor: (Lcom/lmax/disruptor/EventTranslatorOneArg;[Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventTranslatorOneArg eventTranslator
        start local 2 // java.lang.Object[] arg
         0: .line 355
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 1 /* eventTranslator */
            aload 2 /* arg */
            invokevirtual com.lmax.disruptor.RingBuffer.publishEvents:(Lcom/lmax/disruptor/EventTranslatorOneArg;[Ljava/lang/Object;)V
         1: .line 356
            return
        end local 2 // java.lang.Object[] arg
        end local 1 // com.lmax.disruptor.EventTranslatorOneArg eventTranslator
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    2     1  eventTranslator  Lcom/lmax/disruptor/EventTranslatorOneArg<TT;TA;>;
            0    2     2              arg  [Ljava/lang/Object;
    Signature: <A:Ljava/lang/Object;>(Lcom/lmax/disruptor/EventTranslatorOneArg<TT;TA;>;[TA;)V
    MethodParameters:
                 Name  Flags
      eventTranslator  final
      arg              final

  public <A, B> void publishEvent(com.lmax.disruptor.EventTranslatorTwoArg<T, A, B>, A, );
    descriptor: (Lcom/lmax/disruptor/EventTranslatorTwoArg;Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventTranslatorTwoArg eventTranslator
        start local 2 // java.lang.Object arg0
        start local 3 // java.lang.Object arg1
         0: .line 369
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 1 /* eventTranslator */
            aload 2 /* arg0 */
            aload 3 /* arg1 */
            invokevirtual com.lmax.disruptor.RingBuffer.publishEvent:(Lcom/lmax/disruptor/EventTranslatorTwoArg;Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 370
            return
        end local 3 // java.lang.Object arg1
        end local 2 // java.lang.Object arg0
        end local 1 // com.lmax.disruptor.EventTranslatorTwoArg eventTranslator
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    2     1  eventTranslator  Lcom/lmax/disruptor/EventTranslatorTwoArg<TT;TA;TB;>;
            0    2     2             arg0  TA;
            0    2     3             arg1  TB;
    Signature: <A:Ljava/lang/Object;B:Ljava/lang/Object;>(Lcom/lmax/disruptor/EventTranslatorTwoArg<TT;TA;TB;>;TA;TB;)V
    MethodParameters:
                 Name  Flags
      eventTranslator  final
      arg0             final
      arg1             final

  public <A, B, C> void publishEvent(com.lmax.disruptor.EventTranslatorThreeArg<T, A, B, C>, A, B, );
    descriptor: (Lcom/lmax/disruptor/EventTranslatorThreeArg;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventTranslatorThreeArg eventTranslator
        start local 2 // java.lang.Object arg0
        start local 3 // java.lang.Object arg1
        start local 4 // java.lang.Object arg2
         0: .line 385
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 1 /* eventTranslator */
            aload 2 /* arg0 */
            aload 3 /* arg1 */
            aload 4 /* arg2 */
            invokevirtual com.lmax.disruptor.RingBuffer.publishEvent:(Lcom/lmax/disruptor/EventTranslatorThreeArg;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 386
            return
        end local 4 // java.lang.Object arg2
        end local 3 // java.lang.Object arg1
        end local 2 // java.lang.Object arg0
        end local 1 // com.lmax.disruptor.EventTranslatorThreeArg eventTranslator
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    2     1  eventTranslator  Lcom/lmax/disruptor/EventTranslatorThreeArg<TT;TA;TB;TC;>;
            0    2     2             arg0  TA;
            0    2     3             arg1  TB;
            0    2     4             arg2  TC;
    Signature: <A:Ljava/lang/Object;B:Ljava/lang/Object;C:Ljava/lang/Object;>(Lcom/lmax/disruptor/EventTranslatorThreeArg<TT;TA;TB;TC;>;TA;TB;TC;)V
    MethodParameters:
                 Name  Flags
      eventTranslator  final
      arg0             final
      arg1             final
      arg2             final

  public com.lmax.disruptor.RingBuffer<T> start();
    descriptor: ()Lcom/lmax/disruptor/RingBuffer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
         0: .line 400
            aload 0 /* this */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.checkOnlyStartedOnce:()V
         1: .line 401
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            invokevirtual com.lmax.disruptor.dsl.ConsumerRepository.iterator:()Ljava/util/Iterator;
            astore 2
            goto 4
      StackMap locals: com.lmax.disruptor.dsl.Disruptor top java.util.Iterator
      StackMap stack:
         2: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.lmax.disruptor.dsl.ConsumerInfo
            astore 1 /* consumerInfo */
        start local 1 // com.lmax.disruptor.dsl.ConsumerInfo consumerInfo
         3: .line 403
            aload 1 /* consumerInfo */
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.executor:Ljava/util/concurrent/Executor;
            invokeinterface com.lmax.disruptor.dsl.ConsumerInfo.start:(Ljava/util/concurrent/Executor;)V
        end local 1 // com.lmax.disruptor.dsl.ConsumerInfo consumerInfo
         4: .line 401
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 406
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            areturn
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            3    4     1  consumerInfo  Lcom/lmax/disruptor/dsl/ConsumerInfo;
    Signature: ()Lcom/lmax/disruptor/RingBuffer<TT;>;

  public void halt();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
         0: .line 414
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            invokevirtual com.lmax.disruptor.dsl.ConsumerRepository.iterator:()Ljava/util/Iterator;
            astore 2
            goto 3
      StackMap locals: com.lmax.disruptor.dsl.Disruptor top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.lmax.disruptor.dsl.ConsumerInfo
            astore 1 /* consumerInfo */
        start local 1 // com.lmax.disruptor.dsl.ConsumerInfo consumerInfo
         2: .line 416
            aload 1 /* consumerInfo */
            invokeinterface com.lmax.disruptor.dsl.ConsumerInfo.halt:()V
        end local 1 // com.lmax.disruptor.dsl.ConsumerInfo consumerInfo
         3: .line 414
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 418
            return
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            2    3     1  consumerInfo  Lcom/lmax/disruptor/dsl/ConsumerInfo;

  public void shutdown();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
         0: .line 432
            aload 0 /* this */
            ldc -1
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.lmax.disruptor.dsl.Disruptor.shutdown:(JLjava/util/concurrent/TimeUnit;)V
         1: .line 433
            goto 4
         2: .line 434
      StackMap locals:
      StackMap stack: com.lmax.disruptor.TimeoutException
            astore 1 /* e */
        start local 1 // com.lmax.disruptor.TimeoutException e
         3: .line 436
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.exceptionHandler:Lcom/lmax/disruptor/ExceptionHandler;
            aload 1 /* e */
            invokeinterface com.lmax.disruptor.ExceptionHandler.handleOnShutdownException:(Ljava/lang/Throwable;)V
        end local 1 // com.lmax.disruptor.TimeoutException e
         4: .line 438
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            3    4     1     e  Lcom/lmax/disruptor/TimeoutException;
      Exception table:
        from    to  target  type
           0     1       2  Class com.lmax.disruptor.TimeoutException

  public void shutdown(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // long timeout
        start local 3 // java.util.concurrent.TimeUnit timeUnit
         0: .line 453
            invokestatic java.lang.System.currentTimeMillis:()J
            aload 3 /* timeUnit */
            lload 1 /* timeout */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            ladd
            lstore 4 /* timeOutAt */
        start local 4 // long timeOutAt
         1: .line 454
            goto 4
         2: .line 456
      StackMap locals: long
      StackMap stack:
            lload 1 /* timeout */
            lconst_0
            lcmp
            iflt 4
            invokestatic java.lang.System.currentTimeMillis:()J
            lload 4 /* timeOutAt */
            lcmp
            ifle 4
         3: .line 458
            getstatic com.lmax.disruptor.TimeoutException.INSTANCE:Lcom/lmax/disruptor/TimeoutException;
            athrow
         4: .line 454
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.hasBacklog:()Z
            ifne 2
         5: .line 462
            aload 0 /* this */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.halt:()V
         6: .line 463
            return
        end local 4 // long timeOutAt
        end local 3 // java.util.concurrent.TimeUnit timeUnit
        end local 1 // long timeout
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    7     1    timeout  J
            0    7     3   timeUnit  Ljava/util/concurrent/TimeUnit;
            1    7     4  timeOutAt  J
    Exceptions:
      throws com.lmax.disruptor.TimeoutException
    MethodParameters:
          Name  Flags
      timeout   final
      timeUnit  final

  public com.lmax.disruptor.RingBuffer<T> getRingBuffer();
    descriptor: ()Lcom/lmax/disruptor/RingBuffer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
         0: .line 473
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            areturn
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
    Signature: ()Lcom/lmax/disruptor/RingBuffer<TT;>;

  public long getCursor();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
         0: .line 483
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            invokevirtual com.lmax.disruptor.RingBuffer.getCursor:()J
            lreturn
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;

  public long getBufferSize();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
         0: .line 494
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            invokevirtual com.lmax.disruptor.RingBuffer.getBufferSize:()I
            i2l
            lreturn
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;

  public T get();
    descriptor: (J)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // long sequence
         0: .line 506
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            lload 1 /* sequence */
            invokevirtual com.lmax.disruptor.RingBuffer.get:(J)Ljava/lang/Object;
            areturn
        end local 1 // long sequence
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    1     1  sequence  J
    Signature: (J)TT;
    MethodParameters:
          Name  Flags
      sequence  final

  public com.lmax.disruptor.SequenceBarrier getBarrierFor(com.lmax.disruptor.EventHandler<T>);
    descriptor: (Lcom/lmax/disruptor/EventHandler;)Lcom/lmax/disruptor/SequenceBarrier;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventHandler handler
         0: .line 518
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 1 /* handler */
            invokevirtual com.lmax.disruptor.dsl.ConsumerRepository.getBarrierFor:(Lcom/lmax/disruptor/EventHandler;)Lcom/lmax/disruptor/SequenceBarrier;
            areturn
        end local 1 // com.lmax.disruptor.EventHandler handler
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    1     1  handler  Lcom/lmax/disruptor/EventHandler<TT;>;
    Signature: (Lcom/lmax/disruptor/EventHandler<TT;>;)Lcom/lmax/disruptor/SequenceBarrier;
    MethodParameters:
         Name  Flags
      handler  final

  public long getSequenceValueFor(com.lmax.disruptor.EventHandler<T>);
    descriptor: (Lcom/lmax/disruptor/EventHandler;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.EventHandler b1
         0: .line 529
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 1 /* b1 */
            invokevirtual com.lmax.disruptor.dsl.ConsumerRepository.getSequenceFor:(Lcom/lmax/disruptor/EventHandler;)Lcom/lmax/disruptor/Sequence;
            invokevirtual com.lmax.disruptor.Sequence.get:()J
            lreturn
        end local 1 // com.lmax.disruptor.EventHandler b1
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    1     1    b1  Lcom/lmax/disruptor/EventHandler<TT;>;
    Signature: (Lcom/lmax/disruptor/EventHandler<TT;>;)J
    MethodParameters:
      Name  Flags
      b1    final

  private boolean hasBacklog();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
         0: .line 537
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            invokevirtual com.lmax.disruptor.RingBuffer.getCursor:()J
            lstore 1 /* cursor */
        start local 1 // long cursor
         1: .line 538
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            iconst_0
            invokevirtual com.lmax.disruptor.dsl.ConsumerRepository.getLastSequenceInChain:(Z)[Lcom/lmax/disruptor/Sequence;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 6
      StackMap locals: com.lmax.disruptor.dsl.Disruptor long top int int com.lmax.disruptor.Sequence[]
      StackMap stack:
         2: aload 6
            iload 4
            aaload
            astore 3 /* consumer */
        start local 3 // com.lmax.disruptor.Sequence consumer
         3: .line 540
            lload 1 /* cursor */
            aload 3 /* consumer */
            invokevirtual com.lmax.disruptor.Sequence.get:()J
            lcmp
            ifle 5
         4: .line 542
            iconst_1
            ireturn
        end local 3 // com.lmax.disruptor.Sequence consumer
         5: .line 538
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         6: iload 4
            iload 5
            if_icmplt 2
         7: .line 545
            iconst_0
            ireturn
        end local 1 // long cursor
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            1    8     1    cursor  J
            3    5     3  consumer  Lcom/lmax/disruptor/Sequence;

  com.lmax.disruptor.dsl.EventHandlerGroup<T> createEventProcessors(com.lmax.disruptor.Sequence[], com.lmax.disruptor.EventHandler<? super T>[]);
    descriptor: ([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/EventHandler;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
    flags: (0x0000) 
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.Sequence[] barrierSequences
        start local 2 // com.lmax.disruptor.EventHandler[] eventHandlers
         0: .line 552
            aload 0 /* this */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.checkNotStarted:()V
         1: .line 554
            aload 2 /* eventHandlers */
            arraylength
            anewarray com.lmax.disruptor.Sequence
            astore 3 /* processorSequences */
        start local 3 // com.lmax.disruptor.Sequence[] processorSequences
         2: .line 555
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 1 /* barrierSequences */
            invokevirtual com.lmax.disruptor.RingBuffer.newBarrier:([Lcom/lmax/disruptor/Sequence;)Lcom/lmax/disruptor/SequenceBarrier;
            astore 4 /* barrier */
        start local 4 // com.lmax.disruptor.SequenceBarrier barrier
         3: .line 557
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         4: aload 2 /* eventHandlers */
            arraylength
            istore 6 /* eventHandlersLength */
        start local 6 // int eventHandlersLength
         5: goto 14
         6: .line 559
      StackMap locals: com.lmax.disruptor.dsl.Disruptor com.lmax.disruptor.Sequence[] com.lmax.disruptor.EventHandler[] com.lmax.disruptor.Sequence[] com.lmax.disruptor.SequenceBarrier int int
      StackMap stack:
            aload 2 /* eventHandlers */
            iload 5 /* i */
            aaload
            astore 7 /* eventHandler */
        start local 7 // com.lmax.disruptor.EventHandler eventHandler
         7: .line 562
            new com.lmax.disruptor.BatchEventProcessor
            dup
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 4 /* barrier */
            aload 7 /* eventHandler */
            invokespecial com.lmax.disruptor.BatchEventProcessor.<init>:(Lcom/lmax/disruptor/DataProvider;Lcom/lmax/disruptor/SequenceBarrier;Lcom/lmax/disruptor/EventHandler;)V
         8: .line 561
            astore 8 /* batchEventProcessor */
        start local 8 // com.lmax.disruptor.BatchEventProcessor batchEventProcessor
         9: .line 564
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.exceptionHandler:Lcom/lmax/disruptor/ExceptionHandler;
            ifnull 11
        10: .line 566
            aload 8 /* batchEventProcessor */
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.exceptionHandler:Lcom/lmax/disruptor/ExceptionHandler;
            invokevirtual com.lmax.disruptor.BatchEventProcessor.setExceptionHandler:(Lcom/lmax/disruptor/ExceptionHandler;)V
        11: .line 569
      StackMap locals: com.lmax.disruptor.EventHandler com.lmax.disruptor.BatchEventProcessor
      StackMap stack:
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 8 /* batchEventProcessor */
            aload 7 /* eventHandler */
            aload 4 /* barrier */
            invokevirtual com.lmax.disruptor.dsl.ConsumerRepository.add:(Lcom/lmax/disruptor/EventProcessor;Lcom/lmax/disruptor/EventHandler;Lcom/lmax/disruptor/SequenceBarrier;)V
        12: .line 570
            aload 3 /* processorSequences */
            iload 5 /* i */
            aload 8 /* batchEventProcessor */
            invokevirtual com.lmax.disruptor.BatchEventProcessor.getSequence:()Lcom/lmax/disruptor/Sequence;
            aastore
        end local 8 // com.lmax.disruptor.BatchEventProcessor batchEventProcessor
        end local 7 // com.lmax.disruptor.EventHandler eventHandler
        13: .line 557
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 5 /* i */
            iload 6 /* eventHandlersLength */
            if_icmplt 6
        end local 6 // int eventHandlersLength
        end local 5 // int i
        15: .line 573
            aload 0 /* this */
            aload 1 /* barrierSequences */
            aload 3 /* processorSequences */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.updateGatingSequencesForNextInChain:([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/Sequence;)V
        16: .line 575
            new com.lmax.disruptor.dsl.EventHandlerGroup
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 3 /* processorSequences */
            invokespecial com.lmax.disruptor.dsl.EventHandlerGroup.<init>:(Lcom/lmax/disruptor/dsl/Disruptor;Lcom/lmax/disruptor/dsl/ConsumerRepository;[Lcom/lmax/disruptor/Sequence;)V
            areturn
        end local 4 // com.lmax.disruptor.SequenceBarrier barrier
        end local 3 // com.lmax.disruptor.Sequence[] processorSequences
        end local 2 // com.lmax.disruptor.EventHandler[] eventHandlers
        end local 1 // com.lmax.disruptor.Sequence[] barrierSequences
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   17     0                 this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0   17     1     barrierSequences  [Lcom/lmax/disruptor/Sequence;
            0   17     2        eventHandlers  [Lcom/lmax/disruptor/EventHandler;
            2   17     3   processorSequences  [Lcom/lmax/disruptor/Sequence;
            3   17     4              barrier  Lcom/lmax/disruptor/SequenceBarrier;
            4   15     5                    i  I
            5   15     6  eventHandlersLength  I
            7   13     7         eventHandler  Lcom/lmax/disruptor/EventHandler<-TT;>;
            9   13     8  batchEventProcessor  Lcom/lmax/disruptor/BatchEventProcessor<TT;>;
    Signature: ([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/EventHandler<-TT;>;)Lcom/lmax/disruptor/dsl/EventHandlerGroup<TT;>;
    MethodParameters:
                  Name  Flags
      barrierSequences  final
      eventHandlers     final

  private void updateGatingSequencesForNextInChain(com.lmax.disruptor.Sequence[], com.lmax.disruptor.Sequence[]);
    descriptor: ([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/Sequence;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=7, args_size=3
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.Sequence[] barrierSequences
        start local 2 // com.lmax.disruptor.Sequence[] processorSequences
         0: .line 580
            aload 2 /* processorSequences */
            arraylength
            ifle 8
         1: .line 582
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 2 /* processorSequences */
            invokevirtual com.lmax.disruptor.RingBuffer.addGatingSequences:([Lcom/lmax/disruptor/Sequence;)V
         2: .line 583
            aload 1 /* barrierSequences */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 6
      StackMap locals: com.lmax.disruptor.dsl.Disruptor com.lmax.disruptor.Sequence[] com.lmax.disruptor.Sequence[] top int int com.lmax.disruptor.Sequence[]
      StackMap stack:
         3: aload 6
            iload 4
            aaload
            astore 3 /* barrierSequence */
        start local 3 // com.lmax.disruptor.Sequence barrierSequence
         4: .line 585
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 3 /* barrierSequence */
            invokevirtual com.lmax.disruptor.RingBuffer.removeGatingSequence:(Lcom/lmax/disruptor/Sequence;)Z
            pop
        end local 3 // com.lmax.disruptor.Sequence barrierSequence
         5: .line 583
            iinc 4 1
      StackMap locals:
      StackMap stack:
         6: iload 4
            iload 5
            if_icmplt 3
         7: .line 587
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 1 /* barrierSequences */
            invokevirtual com.lmax.disruptor.dsl.ConsumerRepository.unMarkEventProcessorsAsEndOfChain:([Lcom/lmax/disruptor/Sequence;)V
         8: .line 589
      StackMap locals: com.lmax.disruptor.dsl.Disruptor com.lmax.disruptor.Sequence[] com.lmax.disruptor.Sequence[]
      StackMap stack:
            return
        end local 2 // com.lmax.disruptor.Sequence[] processorSequences
        end local 1 // com.lmax.disruptor.Sequence[] barrierSequences
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    9     0                this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    9     1    barrierSequences  [Lcom/lmax/disruptor/Sequence;
            0    9     2  processorSequences  [Lcom/lmax/disruptor/Sequence;
            4    5     3     barrierSequence  Lcom/lmax/disruptor/Sequence;
    MethodParameters:
                    Name  Flags
      barrierSequences    final
      processorSequences  final

  com.lmax.disruptor.dsl.EventHandlerGroup<T> createEventProcessors(com.lmax.disruptor.Sequence[], com.lmax.disruptor.dsl.EventProcessorFactory<T>[]);
    descriptor: ([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/dsl/EventProcessorFactory;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.Sequence[] barrierSequences
        start local 2 // com.lmax.disruptor.dsl.EventProcessorFactory[] processorFactories
         0: .line 594
            aload 2 /* processorFactories */
            arraylength
            anewarray com.lmax.disruptor.EventProcessor
            astore 3 /* eventProcessors */
        start local 3 // com.lmax.disruptor.EventProcessor[] eventProcessors
         1: .line 595
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         2: goto 5
         3: .line 597
      StackMap locals: com.lmax.disruptor.EventProcessor[] int
      StackMap stack:
            aload 3 /* eventProcessors */
            iload 4 /* i */
            aload 2 /* processorFactories */
            iload 4 /* i */
            aaload
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 1 /* barrierSequences */
            invokeinterface com.lmax.disruptor.dsl.EventProcessorFactory.createEventProcessor:(Lcom/lmax/disruptor/RingBuffer;[Lcom/lmax/disruptor/Sequence;)Lcom/lmax/disruptor/EventProcessor;
            aastore
         4: .line 595
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 4 /* i */
            aload 2 /* processorFactories */
            arraylength
            if_icmplt 3
        end local 4 // int i
         6: .line 600
            aload 0 /* this */
            aload 3 /* eventProcessors */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.handleEventsWith:([Lcom/lmax/disruptor/EventProcessor;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
            areturn
        end local 3 // com.lmax.disruptor.EventProcessor[] eventProcessors
        end local 2 // com.lmax.disruptor.dsl.EventProcessorFactory[] processorFactories
        end local 1 // com.lmax.disruptor.Sequence[] barrierSequences
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    7     0                this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    7     1    barrierSequences  [Lcom/lmax/disruptor/Sequence;
            0    7     2  processorFactories  [Lcom/lmax/disruptor/dsl/EventProcessorFactory;
            1    7     3     eventProcessors  [Lcom/lmax/disruptor/EventProcessor;
            2    6     4                   i  I
    Signature: ([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/dsl/EventProcessorFactory<TT;>;)Lcom/lmax/disruptor/dsl/EventHandlerGroup<TT;>;
    MethodParameters:
                    Name  Flags
      barrierSequences    final
      processorFactories  final

  com.lmax.disruptor.dsl.EventHandlerGroup<T> createWorkerPool(com.lmax.disruptor.Sequence[], com.lmax.disruptor.WorkHandler<? super T>[]);
    descriptor: ([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/WorkHandler;)Lcom/lmax/disruptor/dsl/EventHandlerGroup;
    flags: (0x0000) 
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
        start local 1 // com.lmax.disruptor.Sequence[] barrierSequences
        start local 2 // com.lmax.disruptor.WorkHandler[] workHandlers
         0: .line 606
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 1 /* barrierSequences */
            invokevirtual com.lmax.disruptor.RingBuffer.newBarrier:([Lcom/lmax/disruptor/Sequence;)Lcom/lmax/disruptor/SequenceBarrier;
            astore 3 /* sequenceBarrier */
        start local 3 // com.lmax.disruptor.SequenceBarrier sequenceBarrier
         1: .line 607
            new com.lmax.disruptor.WorkerPool
            dup
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            aload 3 /* sequenceBarrier */
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.exceptionHandler:Lcom/lmax/disruptor/ExceptionHandler;
            aload 2 /* workHandlers */
            invokespecial com.lmax.disruptor.WorkerPool.<init>:(Lcom/lmax/disruptor/RingBuffer;Lcom/lmax/disruptor/SequenceBarrier;Lcom/lmax/disruptor/ExceptionHandler;[Lcom/lmax/disruptor/WorkHandler;)V
            astore 4 /* workerPool */
        start local 4 // com.lmax.disruptor.WorkerPool workerPool
         2: .line 610
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 4 /* workerPool */
            aload 3 /* sequenceBarrier */
            invokevirtual com.lmax.disruptor.dsl.ConsumerRepository.add:(Lcom/lmax/disruptor/WorkerPool;Lcom/lmax/disruptor/SequenceBarrier;)V
         3: .line 612
            aload 4 /* workerPool */
            invokevirtual com.lmax.disruptor.WorkerPool.getWorkerSequences:()[Lcom/lmax/disruptor/Sequence;
            astore 5 /* workerSequences */
        start local 5 // com.lmax.disruptor.Sequence[] workerSequences
         4: .line 614
            aload 0 /* this */
            aload 1 /* barrierSequences */
            aload 5 /* workerSequences */
            invokevirtual com.lmax.disruptor.dsl.Disruptor.updateGatingSequencesForNextInChain:([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/Sequence;)V
         5: .line 616
            new com.lmax.disruptor.dsl.EventHandlerGroup
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.consumerRepository:Lcom/lmax/disruptor/dsl/ConsumerRepository;
            aload 5 /* workerSequences */
            invokespecial com.lmax.disruptor.dsl.EventHandlerGroup.<init>:(Lcom/lmax/disruptor/dsl/Disruptor;Lcom/lmax/disruptor/dsl/ConsumerRepository;[Lcom/lmax/disruptor/Sequence;)V
            areturn
        end local 5 // com.lmax.disruptor.Sequence[] workerSequences
        end local 4 // com.lmax.disruptor.WorkerPool workerPool
        end local 3 // com.lmax.disruptor.SequenceBarrier sequenceBarrier
        end local 2 // com.lmax.disruptor.WorkHandler[] workHandlers
        end local 1 // com.lmax.disruptor.Sequence[] barrierSequences
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    6     0              this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
            0    6     1  barrierSequences  [Lcom/lmax/disruptor/Sequence;
            0    6     2      workHandlers  [Lcom/lmax/disruptor/WorkHandler;
            1    6     3   sequenceBarrier  Lcom/lmax/disruptor/SequenceBarrier;
            2    6     4        workerPool  Lcom/lmax/disruptor/WorkerPool<TT;>;
            4    6     5   workerSequences  [Lcom/lmax/disruptor/Sequence;
    Signature: ([Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/WorkHandler<-TT;>;)Lcom/lmax/disruptor/dsl/EventHandlerGroup<TT;>;
    MethodParameters:
                  Name  Flags
      barrierSequences  final
      workHandlers      final

  private void checkNotStarted();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
         0: .line 621
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.started:Ljava/util/concurrent/atomic/AtomicBoolean;
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
            ifeq 2
         1: .line 623
            new java.lang.IllegalStateException
            dup
            ldc "All event handlers must be added before calling starts."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 625
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;

  private void checkOnlyStartedOnce();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
         0: .line 629
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.started:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_0
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
            ifne 2
         1: .line 631
            new java.lang.IllegalStateException
            dup
            ldc "Disruptor.start() must only be called once."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 633
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.lmax.disruptor.dsl.Disruptor this
         0: .line 638
            new java.lang.StringBuilder
            dup
            ldc "Disruptor{ringBuffer="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         1: .line 639
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.ringBuffer:Lcom/lmax/disruptor/RingBuffer;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         2: .line 640
            ldc ", started="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.started:Ljava/util/concurrent/atomic/AtomicBoolean;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         3: .line 641
            ldc ", executor="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.lmax.disruptor.dsl.Disruptor.executor:Ljava/util/concurrent/Executor;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         4: .line 642
            bipush 125
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
         5: .line 638
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.lmax.disruptor.dsl.Disruptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/lmax/disruptor/dsl/Disruptor<TT;>;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "Disruptor.java"