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

  private final com.lmax.disruptor.Sequencer sequencer;
    descriptor: Lcom/lmax/disruptor/Sequencer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.lmax.disruptor.Sequence sequence;
    descriptor: Lcom/lmax/disruptor/Sequence;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.lmax.disruptor.Sequence gatingSequence;
    descriptor: Lcom/lmax/disruptor/Sequence;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(com.lmax.disruptor.DataProvider<T>, com.lmax.disruptor.Sequencer, com.lmax.disruptor.Sequence, com.lmax.disruptor.Sequence);
    descriptor: (Lcom/lmax/disruptor/DataProvider;Lcom/lmax/disruptor/Sequencer;Lcom/lmax/disruptor/Sequence;Lcom/lmax/disruptor/Sequence;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // com.lmax.disruptor.EventPoller this
        start local 1 // com.lmax.disruptor.DataProvider dataProvider
        start local 2 // com.lmax.disruptor.Sequencer sequencer
        start local 3 // com.lmax.disruptor.Sequence sequence
        start local 4 // com.lmax.disruptor.Sequence gatingSequence
         0: .line 23
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 29
            aload 0 /* this */
            aload 1 /* dataProvider */
            putfield com.lmax.disruptor.EventPoller.dataProvider:Lcom/lmax/disruptor/DataProvider;
         2: .line 30
            aload 0 /* this */
            aload 2 /* sequencer */
            putfield com.lmax.disruptor.EventPoller.sequencer:Lcom/lmax/disruptor/Sequencer;
         3: .line 31
            aload 0 /* this */
            aload 3 /* sequence */
            putfield com.lmax.disruptor.EventPoller.sequence:Lcom/lmax/disruptor/Sequence;
         4: .line 32
            aload 0 /* this */
            aload 4 /* gatingSequence */
            putfield com.lmax.disruptor.EventPoller.gatingSequence:Lcom/lmax/disruptor/Sequence;
         5: .line 33
            return
        end local 4 // com.lmax.disruptor.Sequence gatingSequence
        end local 3 // com.lmax.disruptor.Sequence sequence
        end local 2 // com.lmax.disruptor.Sequencer sequencer
        end local 1 // com.lmax.disruptor.DataProvider dataProvider
        end local 0 // com.lmax.disruptor.EventPoller this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0            this  Lcom/lmax/disruptor/EventPoller<TT;>;
            0    6     1    dataProvider  Lcom/lmax/disruptor/DataProvider<TT;>;
            0    6     2       sequencer  Lcom/lmax/disruptor/Sequencer;
            0    6     3        sequence  Lcom/lmax/disruptor/Sequence;
            0    6     4  gatingSequence  Lcom/lmax/disruptor/Sequence;
    Signature: (Lcom/lmax/disruptor/DataProvider<TT;>;Lcom/lmax/disruptor/Sequencer;Lcom/lmax/disruptor/Sequence;Lcom/lmax/disruptor/Sequence;)V
    MethodParameters:
                Name  Flags
      dataProvider    final
      sequencer       final
      sequence        final
      gatingSequence  final

  public com.lmax.disruptor.EventPoller$PollState poll(com.lmax.disruptor.EventPoller$Handler<T>);
    descriptor: (Lcom/lmax/disruptor/EventPoller$Handler;)Lcom/lmax/disruptor/EventPoller$PollState;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=13, args_size=2
        start local 0 // com.lmax.disruptor.EventPoller this
        start local 1 // com.lmax.disruptor.EventPoller$Handler eventHandler
         0: .line 37
            aload 0 /* this */
            getfield com.lmax.disruptor.EventPoller.sequence:Lcom/lmax/disruptor/Sequence;
            invokevirtual com.lmax.disruptor.Sequence.get:()J
            lstore 2 /* currentSequence */
        start local 2 // long currentSequence
         1: .line 38
            lload 2 /* currentSequence */
            lconst_1
            ladd
            lstore 4 /* nextSequence */
        start local 4 // long nextSequence
         2: .line 39
            aload 0 /* this */
            getfield com.lmax.disruptor.EventPoller.sequencer:Lcom/lmax/disruptor/Sequencer;
            lload 4 /* nextSequence */
            aload 0 /* this */
            getfield com.lmax.disruptor.EventPoller.gatingSequence:Lcom/lmax/disruptor/Sequence;
            invokevirtual com.lmax.disruptor.Sequence.get:()J
            invokeinterface com.lmax.disruptor.Sequencer.getHighestPublishedSequence:(JJ)J
            lstore 6 /* availableSequence */
        start local 6 // long availableSequence
         3: .line 41
            lload 4 /* nextSequence */
            lload 6 /* availableSequence */
            lcmp
            ifgt 21
         4: .line 44
            lload 2 /* currentSequence */
            lstore 9 /* processedSequence */
        start local 9 // long processedSequence
         5: .line 50
      StackMap locals: com.lmax.disruptor.EventPoller com.lmax.disruptor.EventPoller$Handler long long long top long
      StackMap stack:
            aload 0 /* this */
            getfield com.lmax.disruptor.EventPoller.dataProvider:Lcom/lmax/disruptor/DataProvider;
            lload 4 /* nextSequence */
            invokeinterface com.lmax.disruptor.DataProvider.get:(J)Ljava/lang/Object;
            astore 11 /* event */
        start local 11 // java.lang.Object event
         6: .line 51
            aload 1 /* eventHandler */
            aload 11 /* event */
            lload 4 /* nextSequence */
            lload 4 /* nextSequence */
            lload 6 /* availableSequence */
            lcmp
            ifne 7
            iconst_1
            goto 8
      StackMap locals: com.lmax.disruptor.EventPoller com.lmax.disruptor.EventPoller$Handler long long long top long java.lang.Object
      StackMap stack: com.lmax.disruptor.EventPoller$Handler java.lang.Object long
         7: iconst_0
      StackMap locals: com.lmax.disruptor.EventPoller com.lmax.disruptor.EventPoller$Handler long long long top long java.lang.Object
      StackMap stack: com.lmax.disruptor.EventPoller$Handler java.lang.Object long int
         8: invokeinterface com.lmax.disruptor.EventPoller$Handler.onEvent:(Ljava/lang/Object;JZ)Z
            istore 8 /* processNextEvent */
        start local 8 // boolean processNextEvent
         9: .line 52
            lload 4 /* nextSequence */
            lstore 9 /* processedSequence */
        10: .line 53
            lload 4 /* nextSequence */
            lconst_1
            ladd
            lstore 4 /* nextSequence */
        end local 11 // java.lang.Object event
        11: .line 56
            lload 4 /* nextSequence */
            lload 6 /* availableSequence */
            lcmp
            ifgt 12
            iconst_1
            goto 13
      StackMap locals: com.lmax.disruptor.EventPoller com.lmax.disruptor.EventPoller$Handler long long long int long
      StackMap stack:
        12: iconst_0
      StackMap locals:
      StackMap stack: int
        13: iload 8 /* processNextEvent */
        14: .line 48
            iand
            ifne 5
        15: .line 57
            goto 19
        end local 8 // boolean processNextEvent
        16: .line 59
      StackMap locals: com.lmax.disruptor.EventPoller com.lmax.disruptor.EventPoller$Handler long long long top long
      StackMap stack: java.lang.Throwable
            astore 12
        17: .line 60
            aload 0 /* this */
            getfield com.lmax.disruptor.EventPoller.sequence:Lcom/lmax/disruptor/Sequence;
            lload 9 /* processedSequence */
            invokevirtual com.lmax.disruptor.Sequence.set:(J)V
        18: .line 61
            aload 12
            athrow
        start local 8 // boolean processNextEvent
        19: .line 60
      StackMap locals: com.lmax.disruptor.EventPoller com.lmax.disruptor.EventPoller$Handler long long long int long
      StackMap stack:
            aload 0 /* this */
            getfield com.lmax.disruptor.EventPoller.sequence:Lcom/lmax/disruptor/Sequence;
            lload 9 /* processedSequence */
            invokevirtual com.lmax.disruptor.Sequence.set:(J)V
        20: .line 63
            getstatic com.lmax.disruptor.EventPoller$PollState.PROCESSING:Lcom/lmax/disruptor/EventPoller$PollState;
            areturn
        end local 9 // long processedSequence
        end local 8 // boolean processNextEvent
        21: .line 65
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.lmax.disruptor.EventPoller.sequencer:Lcom/lmax/disruptor/Sequencer;
            invokeinterface com.lmax.disruptor.Sequencer.getCursor:()J
            lload 4 /* nextSequence */
            lcmp
            iflt 23
        22: .line 67
            getstatic com.lmax.disruptor.EventPoller$PollState.GATING:Lcom/lmax/disruptor/EventPoller$PollState;
            areturn
        23: .line 71
      StackMap locals:
      StackMap stack:
            getstatic com.lmax.disruptor.EventPoller$PollState.IDLE:Lcom/lmax/disruptor/EventPoller$PollState;
            areturn
        end local 6 // long availableSequence
        end local 4 // long nextSequence
        end local 2 // long currentSequence
        end local 1 // com.lmax.disruptor.EventPoller$Handler eventHandler
        end local 0 // com.lmax.disruptor.EventPoller this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   24     0               this  Lcom/lmax/disruptor/EventPoller<TT;>;
            0   24     1       eventHandler  Lcom/lmax/disruptor/EventPoller$Handler<TT;>;
            1   24     2    currentSequence  J
            2   24     4       nextSequence  J
            3   24     6  availableSequence  J
            9   16     8   processNextEvent  Z
           19   21     8   processNextEvent  Z
            5   21     9  processedSequence  J
            6   11    11              event  TT;
      Exception table:
        from    to  target  type
           5    16      16  any
    Exceptions:
      throws java.lang.Exception
    Signature: (Lcom/lmax/disruptor/EventPoller$Handler<TT;>;)Lcom/lmax/disruptor/EventPoller$PollState;
    MethodParameters:
              Name  Flags
      eventHandler  final

  public static <T> com.lmax.disruptor.EventPoller<T> newInstance(com.lmax.disruptor.DataProvider<T>, com.lmax.disruptor.Sequencer, com.lmax.disruptor.Sequence, com.lmax.disruptor.Sequence, com.lmax.disruptor.Sequence[]);
    descriptor: (Lcom/lmax/disruptor/DataProvider;Lcom/lmax/disruptor/Sequencer;Lcom/lmax/disruptor/Sequence;Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/Sequence;)Lcom/lmax/disruptor/EventPoller;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=6, locals=6, args_size=5
        start local 0 // com.lmax.disruptor.DataProvider dataProvider
        start local 1 // com.lmax.disruptor.Sequencer sequencer
        start local 2 // com.lmax.disruptor.Sequence sequence
        start local 3 // com.lmax.disruptor.Sequence cursorSequence
        start local 4 // com.lmax.disruptor.Sequence[] gatingSequences
         0: .line 83
            aload 4 /* gatingSequences */
            arraylength
            ifne 3
         1: .line 85
            aload 3 /* cursorSequence */
            astore 5 /* gatingSequence */
        start local 5 // com.lmax.disruptor.Sequence gatingSequence
         2: .line 86
            goto 7
        end local 5 // com.lmax.disruptor.Sequence gatingSequence
         3: .line 87
      StackMap locals:
      StackMap stack:
            aload 4 /* gatingSequences */
            arraylength
            iconst_1
            if_icmpne 6
         4: .line 89
            aload 4 /* gatingSequences */
            iconst_0
            aaload
            astore 5 /* gatingSequence */
        start local 5 // com.lmax.disruptor.Sequence gatingSequence
         5: .line 90
            goto 7
        end local 5 // com.lmax.disruptor.Sequence gatingSequence
         6: .line 93
      StackMap locals:
      StackMap stack:
            new com.lmax.disruptor.FixedSequenceGroup
            dup
            aload 4 /* gatingSequences */
            invokespecial com.lmax.disruptor.FixedSequenceGroup.<init>:([Lcom/lmax/disruptor/Sequence;)V
            astore 5 /* gatingSequence */
        start local 5 // com.lmax.disruptor.Sequence gatingSequence
         7: .line 96
      StackMap locals: com.lmax.disruptor.Sequence
      StackMap stack:
            new com.lmax.disruptor.EventPoller
            dup
            aload 0 /* dataProvider */
            aload 1 /* sequencer */
            aload 2 /* sequence */
            aload 5 /* gatingSequence */
            invokespecial com.lmax.disruptor.EventPoller.<init>:(Lcom/lmax/disruptor/DataProvider;Lcom/lmax/disruptor/Sequencer;Lcom/lmax/disruptor/Sequence;Lcom/lmax/disruptor/Sequence;)V
            areturn
        end local 5 // com.lmax.disruptor.Sequence gatingSequence
        end local 4 // com.lmax.disruptor.Sequence[] gatingSequences
        end local 3 // com.lmax.disruptor.Sequence cursorSequence
        end local 2 // com.lmax.disruptor.Sequence sequence
        end local 1 // com.lmax.disruptor.Sequencer sequencer
        end local 0 // com.lmax.disruptor.DataProvider dataProvider
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0     dataProvider  Lcom/lmax/disruptor/DataProvider<TT;>;
            0    8     1        sequencer  Lcom/lmax/disruptor/Sequencer;
            0    8     2         sequence  Lcom/lmax/disruptor/Sequence;
            0    8     3   cursorSequence  Lcom/lmax/disruptor/Sequence;
            0    8     4  gatingSequences  [Lcom/lmax/disruptor/Sequence;
            2    3     5   gatingSequence  Lcom/lmax/disruptor/Sequence;
            5    6     5   gatingSequence  Lcom/lmax/disruptor/Sequence;
            7    8     5   gatingSequence  Lcom/lmax/disruptor/Sequence;
    Signature: <T:Ljava/lang/Object;>(Lcom/lmax/disruptor/DataProvider<TT;>;Lcom/lmax/disruptor/Sequencer;Lcom/lmax/disruptor/Sequence;Lcom/lmax/disruptor/Sequence;[Lcom/lmax/disruptor/Sequence;)Lcom/lmax/disruptor/EventPoller<TT;>;
    MethodParameters:
                 Name  Flags
      dataProvider     final
      sequencer        final
      sequence         final
      cursorSequence   final
      gatingSequences  final

  public com.lmax.disruptor.Sequence getSequence();
    descriptor: ()Lcom/lmax/disruptor/Sequence;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.lmax.disruptor.EventPoller this
         0: .line 101
            aload 0 /* this */
            getfield com.lmax.disruptor.EventPoller.sequence:Lcom/lmax/disruptor/Sequence;
            areturn
        end local 0 // com.lmax.disruptor.EventPoller this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/lmax/disruptor/EventPoller<TT;>;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "EventPoller.java"
NestMembers:
  com.lmax.disruptor.EventPoller$Handler  com.lmax.disruptor.EventPoller$PollState
InnerClasses:
  public abstract Handler = com.lmax.disruptor.EventPoller$Handler of com.lmax.disruptor.EventPoller
  public final PollState = com.lmax.disruptor.EventPoller$PollState of com.lmax.disruptor.EventPoller