public final class io.reactivex.internal.util.QueueDrainHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: io.reactivex.internal.util.QueueDrainHelper
  super_class: java.lang.Object
{
  static final long COMPLETED_MASK;
    descriptor: J
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: -9223372036854775808

  static final long REQUESTED_MASK;
    descriptor: J
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 9223372036854775807

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.reactivex.internal.util.QueueDrainHelper this
         0: .line 32
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 33
            new java.lang.IllegalStateException
            dup
            ldc "No instances!"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // io.reactivex.internal.util.QueueDrainHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/reactivex/internal/util/QueueDrainHelper;

  public static <T, U> void drainMaxLoop(io.reactivex.internal.fuseable.SimplePlainQueue<T>, org.reactivestreams.Subscriber<? super U>, boolean, io.reactivex.disposables.Disposable, io.reactivex.internal.util.QueueDrain<T, U>);
    descriptor: (Lio/reactivex/internal/fuseable/SimplePlainQueue;Lorg/reactivestreams/Subscriber;ZLio/reactivex/disposables/Disposable;Lio/reactivex/internal/util/QueueDrain;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=5
        start local 0 // io.reactivex.internal.fuseable.SimplePlainQueue q
        start local 1 // org.reactivestreams.Subscriber a
        start local 2 // boolean delayError
        start local 3 // io.reactivex.disposables.Disposable dispose
        start local 4 // io.reactivex.internal.util.QueueDrain qd
         0: .line 48
            iconst_1
            istore 5 /* missed */
        start local 5 // int missed
         1: .line 52
      StackMap locals: int
      StackMap stack:
            aload 4 /* qd */
            invokeinterface io.reactivex.internal.util.QueueDrain.done:()Z
            istore 6 /* d */
        start local 6 // boolean d
         2: .line 54
            aload 0 /* q */
            invokeinterface io.reactivex.internal.fuseable.SimplePlainQueue.poll:()Ljava/lang/Object;
            astore 7 /* v */
        start local 7 // java.lang.Object v
         3: .line 56
            aload 7 /* v */
            ifnonnull 4
            iconst_1
            goto 5
      StackMap locals: int java.lang.Object
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 8 /* empty */
        start local 8 // boolean empty
         6: .line 58
            iload 6 /* d */
            iload 8 /* empty */
            aload 1 /* a */
            iload 2 /* delayError */
            aload 0 /* q */
            aload 4 /* qd */
            invokestatic io.reactivex.internal.util.QueueDrainHelper.checkTerminated:(ZZLorg/reactivestreams/Subscriber;ZLio/reactivex/internal/fuseable/SimpleQueue;Lio/reactivex/internal/util/QueueDrain;)Z
            ifeq 10
         7: .line 59
            aload 3 /* dispose */
            ifnull 9
         8: .line 60
            aload 3 /* dispose */
            invokeinterface io.reactivex.disposables.Disposable.dispose:()V
         9: .line 62
      StackMap locals: int
      StackMap stack:
            return
        10: .line 65
      StackMap locals:
      StackMap stack:
            iload 8 /* empty */
            ifeq 12
        11: .line 66
            goto 23
        12: .line 69
      StackMap locals:
      StackMap stack:
            aload 4 /* qd */
            invokeinterface io.reactivex.internal.util.QueueDrain.requested:()J
            lstore 9 /* r */
        start local 9 // long r
        13: .line 70
            lload 9 /* r */
            lconst_0
            lcmp
            ifeq 18
        14: .line 71
            aload 4 /* qd */
            aload 1 /* a */
            aload 7 /* v */
            invokeinterface io.reactivex.internal.util.QueueDrain.accept:(Lorg/reactivestreams/Subscriber;Ljava/lang/Object;)Z
            ifeq 1
        15: .line 72
            lload 9 /* r */
            ldc 9223372036854775807
            lcmp
            ifeq 1
        16: .line 73
            aload 4 /* qd */
            lconst_1
            invokeinterface io.reactivex.internal.util.QueueDrain.produced:(J)J
            pop2
        17: .line 76
            goto 1
        18: .line 77
      StackMap locals: long
      StackMap stack:
            aload 0 /* q */
            invokeinterface io.reactivex.internal.fuseable.SimplePlainQueue.clear:()V
        19: .line 78
            aload 3 /* dispose */
            ifnull 21
        20: .line 79
            aload 3 /* dispose */
            invokeinterface io.reactivex.disposables.Disposable.dispose:()V
        21: .line 81
      StackMap locals:
      StackMap stack:
            aload 1 /* a */
            new io.reactivex.exceptions.MissingBackpressureException
            dup
            ldc "Could not emit value due to lack of requests."
            invokespecial io.reactivex.exceptions.MissingBackpressureException.<init>:(Ljava/lang/String;)V
            invokeinterface org.reactivestreams.Subscriber.onError:(Ljava/lang/Throwable;)V
        22: .line 82
            return
        end local 9 // long r
        end local 8 // boolean empty
        end local 7 // java.lang.Object v
        end local 6 // boolean d
        23: .line 86
      StackMap locals: io.reactivex.internal.fuseable.SimplePlainQueue org.reactivestreams.Subscriber int io.reactivex.disposables.Disposable io.reactivex.internal.util.QueueDrain int
      StackMap stack:
            aload 4 /* qd */
            iload 5 /* missed */
            ineg
            invokeinterface io.reactivex.internal.util.QueueDrain.leave:(I)I
            istore 5 /* missed */
        24: .line 87
            iload 5 /* missed */
            ifne 1
        25: .line 91
            return
        end local 5 // int missed
        end local 4 // io.reactivex.internal.util.QueueDrain qd
        end local 3 // io.reactivex.disposables.Disposable dispose
        end local 2 // boolean delayError
        end local 1 // org.reactivestreams.Subscriber a
        end local 0 // io.reactivex.internal.fuseable.SimplePlainQueue q
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   26     0           q  Lio/reactivex/internal/fuseable/SimplePlainQueue<TT;>;
            0   26     1           a  Lorg/reactivestreams/Subscriber<-TU;>;
            0   26     2  delayError  Z
            0   26     3     dispose  Lio/reactivex/disposables/Disposable;
            0   26     4          qd  Lio/reactivex/internal/util/QueueDrain<TT;TU;>;
            1   26     5      missed  I
            2   23     6           d  Z
            3   23     7           v  TT;
            6   23     8       empty  Z
           13   23     9           r  J
    Signature: <T:Ljava/lang/Object;U:Ljava/lang/Object;>(Lio/reactivex/internal/fuseable/SimplePlainQueue<TT;>;Lorg/reactivestreams/Subscriber<-TU;>;ZLio/reactivex/disposables/Disposable;Lio/reactivex/internal/util/QueueDrain<TT;TU;>;)V
    MethodParameters:
            Name  Flags
      q           
      a           
      delayError  
      dispose     
      qd          

  public static <T, U> boolean checkTerminated(boolean, boolean, org.reactivestreams.Subscriber<?>, boolean, io.reactivex.internal.fuseable.SimpleQueue<?>, io.reactivex.internal.util.QueueDrain<T, U>);
    descriptor: (ZZLorg/reactivestreams/Subscriber;ZLio/reactivex/internal/fuseable/SimpleQueue;Lio/reactivex/internal/util/QueueDrain;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=7, args_size=6
        start local 0 // boolean d
        start local 1 // boolean empty
        start local 2 // org.reactivestreams.Subscriber s
        start local 3 // boolean delayError
        start local 4 // io.reactivex.internal.fuseable.SimpleQueue q
        start local 5 // io.reactivex.internal.util.QueueDrain qd
         0: .line 95
            aload 5 /* qd */
            invokeinterface io.reactivex.internal.util.QueueDrain.cancelled:()Z
            ifeq 3
         1: .line 96
            aload 4 /* q */
            invokeinterface io.reactivex.internal.fuseable.SimpleQueue.clear:()V
         2: .line 97
            iconst_1
            ireturn
         3: .line 100
      StackMap locals:
      StackMap stack:
            iload 0 /* d */
            ifeq 20
         4: .line 101
            iload 3 /* delayError */
            ifeq 12
         5: .line 102
            iload 1 /* empty */
            ifeq 20
         6: .line 103
            aload 5 /* qd */
            invokeinterface io.reactivex.internal.util.QueueDrain.error:()Ljava/lang/Throwable;
            astore 6 /* err */
        start local 6 // java.lang.Throwable err
         7: .line 104
            aload 6 /* err */
            ifnull 10
         8: .line 105
            aload 2 /* s */
            aload 6 /* err */
            invokeinterface org.reactivestreams.Subscriber.onError:(Ljava/lang/Throwable;)V
         9: .line 106
            goto 11
        10: .line 107
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 2 /* s */
            invokeinterface org.reactivestreams.Subscriber.onComplete:()V
        11: .line 109
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 6 // java.lang.Throwable err
        12: .line 112
      StackMap locals:
      StackMap stack:
            aload 5 /* qd */
            invokeinterface io.reactivex.internal.util.QueueDrain.error:()Ljava/lang/Throwable;
            astore 6 /* err */
        start local 6 // java.lang.Throwable err
        13: .line 113
            aload 6 /* err */
            ifnull 17
        14: .line 114
            aload 4 /* q */
            invokeinterface io.reactivex.internal.fuseable.SimpleQueue.clear:()V
        15: .line 115
            aload 2 /* s */
            aload 6 /* err */
            invokeinterface org.reactivestreams.Subscriber.onError:(Ljava/lang/Throwable;)V
        16: .line 116
            iconst_1
            ireturn
        17: .line 118
      StackMap locals: java.lang.Throwable
      StackMap stack:
            iload 1 /* empty */
            ifeq 20
        18: .line 119
            aload 2 /* s */
            invokeinterface org.reactivestreams.Subscriber.onComplete:()V
        19: .line 120
            iconst_1
            ireturn
        end local 6 // java.lang.Throwable err
        20: .line 125
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 5 // io.reactivex.internal.util.QueueDrain qd
        end local 4 // io.reactivex.internal.fuseable.SimpleQueue q
        end local 3 // boolean delayError
        end local 2 // org.reactivestreams.Subscriber s
        end local 1 // boolean empty
        end local 0 // boolean d
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   21     0           d  Z
            0   21     1       empty  Z
            0   21     2           s  Lorg/reactivestreams/Subscriber<*>;
            0   21     3  delayError  Z
            0   21     4           q  Lio/reactivex/internal/fuseable/SimpleQueue<*>;
            0   21     5          qd  Lio/reactivex/internal/util/QueueDrain<TT;TU;>;
            7   12     6         err  Ljava/lang/Throwable;
           13   20     6         err  Ljava/lang/Throwable;
    Signature: <T:Ljava/lang/Object;U:Ljava/lang/Object;>(ZZLorg/reactivestreams/Subscriber<*>;ZLio/reactivex/internal/fuseable/SimpleQueue<*>;Lio/reactivex/internal/util/QueueDrain<TT;TU;>;)Z
    MethodParameters:
            Name  Flags
      d           
      empty       
      s           
      delayError  
      q           
      qd          

  public static <T, U> void drainLoop(io.reactivex.internal.fuseable.SimplePlainQueue<T>, io.reactivex.Observer<? super U>, boolean, io.reactivex.disposables.Disposable, io.reactivex.internal.util.ObservableQueueDrain<T, U>);
    descriptor: (Lio/reactivex/internal/fuseable/SimplePlainQueue;Lio/reactivex/Observer;ZLio/reactivex/disposables/Disposable;Lio/reactivex/internal/util/ObservableQueueDrain;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=9, args_size=5
        start local 0 // io.reactivex.internal.fuseable.SimplePlainQueue q
        start local 1 // io.reactivex.Observer a
        start local 2 // boolean delayError
        start local 3 // io.reactivex.disposables.Disposable dispose
        start local 4 // io.reactivex.internal.util.ObservableQueueDrain qd
         0: .line 130
            iconst_1
            istore 5 /* missed */
        start local 5 // int missed
         1: .line 133
      StackMap locals: int
      StackMap stack:
            aload 4 /* qd */
            invokeinterface io.reactivex.internal.util.ObservableQueueDrain.done:()Z
            aload 0 /* q */
            invokeinterface io.reactivex.internal.fuseable.SimplePlainQueue.isEmpty:()Z
            aload 1 /* a */
            iload 2 /* delayError */
            aload 0 /* q */
            aload 3 /* dispose */
            aload 4 /* qd */
            invokestatic io.reactivex.internal.util.QueueDrainHelper.checkTerminated:(ZZLio/reactivex/Observer;ZLio/reactivex/internal/fuseable/SimpleQueue;Lio/reactivex/disposables/Disposable;Lio/reactivex/internal/util/ObservableQueueDrain;)Z
            ifeq 3
         2: .line 134
            return
         3: .line 138
      StackMap locals:
      StackMap stack:
            aload 4 /* qd */
            invokeinterface io.reactivex.internal.util.ObservableQueueDrain.done:()Z
            istore 6 /* d */
        start local 6 // boolean d
         4: .line 139
            aload 0 /* q */
            invokeinterface io.reactivex.internal.fuseable.SimplePlainQueue.poll:()Ljava/lang/Object;
            astore 7 /* v */
        start local 7 // java.lang.Object v
         5: .line 140
            aload 7 /* v */
            ifnonnull 6
            iconst_1
            goto 7
      StackMap locals: int java.lang.Object
      StackMap stack:
         6: iconst_0
      StackMap locals:
      StackMap stack: int
         7: istore 8 /* empty */
        start local 8 // boolean empty
         8: .line 142
            iload 6 /* d */
            iload 8 /* empty */
            aload 1 /* a */
            iload 2 /* delayError */
            aload 0 /* q */
            aload 3 /* dispose */
            aload 4 /* qd */
            invokestatic io.reactivex.internal.util.QueueDrainHelper.checkTerminated:(ZZLio/reactivex/Observer;ZLio/reactivex/internal/fuseable/SimpleQueue;Lio/reactivex/disposables/Disposable;Lio/reactivex/internal/util/ObservableQueueDrain;)Z
            ifeq 10
         9: .line 143
            return
        10: .line 146
      StackMap locals: int
      StackMap stack:
            iload 8 /* empty */
            ifeq 12
        11: .line 147
            goto 14
        12: .line 150
      StackMap locals:
      StackMap stack:
            aload 4 /* qd */
            aload 1 /* a */
            aload 7 /* v */
            invokeinterface io.reactivex.internal.util.ObservableQueueDrain.accept:(Lio/reactivex/Observer;Ljava/lang/Object;)V
        end local 8 // boolean empty
        end local 7 // java.lang.Object v
        end local 6 // boolean d
        13: .line 137
            goto 3
        14: .line 153
      StackMap locals:
      StackMap stack:
            aload 4 /* qd */
            iload 5 /* missed */
            ineg
            invokeinterface io.reactivex.internal.util.ObservableQueueDrain.leave:(I)I
            istore 5 /* missed */
        15: .line 154
            iload 5 /* missed */
            ifne 1
        16: .line 158
            return
        end local 5 // int missed
        end local 4 // io.reactivex.internal.util.ObservableQueueDrain qd
        end local 3 // io.reactivex.disposables.Disposable dispose
        end local 2 // boolean delayError
        end local 1 // io.reactivex.Observer a
        end local 0 // io.reactivex.internal.fuseable.SimplePlainQueue q
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   17     0           q  Lio/reactivex/internal/fuseable/SimplePlainQueue<TT;>;
            0   17     1           a  Lio/reactivex/Observer<-TU;>;
            0   17     2  delayError  Z
            0   17     3     dispose  Lio/reactivex/disposables/Disposable;
            0   17     4          qd  Lio/reactivex/internal/util/ObservableQueueDrain<TT;TU;>;
            1   17     5      missed  I
            4   13     6           d  Z
            5   13     7           v  TT;
            8   13     8       empty  Z
    Signature: <T:Ljava/lang/Object;U:Ljava/lang/Object;>(Lio/reactivex/internal/fuseable/SimplePlainQueue<TT;>;Lio/reactivex/Observer<-TU;>;ZLio/reactivex/disposables/Disposable;Lio/reactivex/internal/util/ObservableQueueDrain<TT;TU;>;)V
    MethodParameters:
            Name  Flags
      q           
      a           
      delayError  
      dispose     
      qd          

  public static <T, U> boolean checkTerminated(boolean, boolean, io.reactivex.Observer<?>, boolean, io.reactivex.internal.fuseable.SimpleQueue<?>, io.reactivex.disposables.Disposable, io.reactivex.internal.util.ObservableQueueDrain<T, U>);
    descriptor: (ZZLio/reactivex/Observer;ZLio/reactivex/internal/fuseable/SimpleQueue;Lio/reactivex/disposables/Disposable;Lio/reactivex/internal/util/ObservableQueueDrain;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=8, args_size=7
        start local 0 // boolean d
        start local 1 // boolean empty
        start local 2 // io.reactivex.Observer observer
        start local 3 // boolean delayError
        start local 4 // io.reactivex.internal.fuseable.SimpleQueue q
        start local 5 // io.reactivex.disposables.Disposable disposable
        start local 6 // io.reactivex.internal.util.ObservableQueueDrain qd
         0: .line 162
            aload 6 /* qd */
            invokeinterface io.reactivex.internal.util.ObservableQueueDrain.cancelled:()Z
            ifeq 4
         1: .line 163
            aload 4 /* q */
            invokeinterface io.reactivex.internal.fuseable.SimpleQueue.clear:()V
         2: .line 164
            aload 5 /* disposable */
            invokeinterface io.reactivex.disposables.Disposable.dispose:()V
         3: .line 165
            iconst_1
            ireturn
         4: .line 168
      StackMap locals:
      StackMap stack:
            iload 0 /* d */
            ifeq 27
         5: .line 169
            iload 3 /* delayError */
            ifeq 15
         6: .line 170
            iload 1 /* empty */
            ifeq 27
         7: .line 171
            aload 5 /* disposable */
            ifnull 9
         8: .line 172
            aload 5 /* disposable */
            invokeinterface io.reactivex.disposables.Disposable.dispose:()V
         9: .line 174
      StackMap locals:
      StackMap stack:
            aload 6 /* qd */
            invokeinterface io.reactivex.internal.util.ObservableQueueDrain.error:()Ljava/lang/Throwable;
            astore 7 /* err */
        start local 7 // java.lang.Throwable err
        10: .line 175
            aload 7 /* err */
            ifnull 13
        11: .line 176
            aload 2 /* observer */
            aload 7 /* err */
            invokeinterface io.reactivex.Observer.onError:(Ljava/lang/Throwable;)V
        12: .line 177
            goto 14
        13: .line 178
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 2 /* observer */
            invokeinterface io.reactivex.Observer.onComplete:()V
        14: .line 180
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 7 // java.lang.Throwable err
        15: .line 183
      StackMap locals:
      StackMap stack:
            aload 6 /* qd */
            invokeinterface io.reactivex.internal.util.ObservableQueueDrain.error:()Ljava/lang/Throwable;
            astore 7 /* err */
        start local 7 // java.lang.Throwable err
        16: .line 184
            aload 7 /* err */
            ifnull 22
        17: .line 185
            aload 4 /* q */
            invokeinterface io.reactivex.internal.fuseable.SimpleQueue.clear:()V
        18: .line 186
            aload 5 /* disposable */
            ifnull 20
        19: .line 187
            aload 5 /* disposable */
            invokeinterface io.reactivex.disposables.Disposable.dispose:()V
        20: .line 189
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 2 /* observer */
            aload 7 /* err */
            invokeinterface io.reactivex.Observer.onError:(Ljava/lang/Throwable;)V
        21: .line 190
            iconst_1
            ireturn
        22: .line 192
      StackMap locals:
      StackMap stack:
            iload 1 /* empty */
            ifeq 27
        23: .line 193
            aload 5 /* disposable */
            ifnull 25
        24: .line 194
            aload 5 /* disposable */
            invokeinterface io.reactivex.disposables.Disposable.dispose:()V
        25: .line 196
      StackMap locals:
      StackMap stack:
            aload 2 /* observer */
            invokeinterface io.reactivex.Observer.onComplete:()V
        26: .line 197
            iconst_1
            ireturn
        end local 7 // java.lang.Throwable err
        27: .line 202
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 6 // io.reactivex.internal.util.ObservableQueueDrain qd
        end local 5 // io.reactivex.disposables.Disposable disposable
        end local 4 // io.reactivex.internal.fuseable.SimpleQueue q
        end local 3 // boolean delayError
        end local 2 // io.reactivex.Observer observer
        end local 1 // boolean empty
        end local 0 // boolean d
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   28     0           d  Z
            0   28     1       empty  Z
            0   28     2    observer  Lio/reactivex/Observer<*>;
            0   28     3  delayError  Z
            0   28     4           q  Lio/reactivex/internal/fuseable/SimpleQueue<*>;
            0   28     5  disposable  Lio/reactivex/disposables/Disposable;
            0   28     6          qd  Lio/reactivex/internal/util/ObservableQueueDrain<TT;TU;>;
           10   15     7         err  Ljava/lang/Throwable;
           16   27     7         err  Ljava/lang/Throwable;
    Signature: <T:Ljava/lang/Object;U:Ljava/lang/Object;>(ZZLio/reactivex/Observer<*>;ZLio/reactivex/internal/fuseable/SimpleQueue<*>;Lio/reactivex/disposables/Disposable;Lio/reactivex/internal/util/ObservableQueueDrain<TT;TU;>;)Z
    MethodParameters:
            Name  Flags
      d           
      empty       
      observer    
      delayError  
      q           
      disposable  
      qd          

  public static <T> io.reactivex.internal.fuseable.SimpleQueue<T> createQueue(int);
    descriptor: (I)Lio/reactivex/internal/fuseable/SimpleQueue;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int capacityHint
         0: .line 214
            iload 0 /* capacityHint */
            ifge 2
         1: .line 215
            new io.reactivex.internal.queue.SpscLinkedArrayQueue
            dup
            iload 0 /* capacityHint */
            ineg
            invokespecial io.reactivex.internal.queue.SpscLinkedArrayQueue.<init>:(I)V
            areturn
         2: .line 217
      StackMap locals:
      StackMap stack:
            new io.reactivex.internal.queue.SpscArrayQueue
            dup
            iload 0 /* capacityHint */
            invokespecial io.reactivex.internal.queue.SpscArrayQueue.<init>:(I)V
            areturn
        end local 0 // int capacityHint
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  capacityHint  I
    Signature: <T:Ljava/lang/Object;>(I)Lio/reactivex/internal/fuseable/SimpleQueue<TT;>;
    MethodParameters:
              Name  Flags
      capacityHint  

  public static void request(org.reactivestreams.Subscription, int);
    descriptor: (Lorg/reactivestreams/Subscription;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.reactivestreams.Subscription s
        start local 1 // int prefetch
         0: .line 227
            aload 0 /* s */
            iload 1 /* prefetch */
            ifge 1
            ldc 9223372036854775807
            goto 2
      StackMap locals:
      StackMap stack: org.reactivestreams.Subscription
         1: iload 1 /* prefetch */
            i2l
      StackMap locals: org.reactivestreams.Subscription int
      StackMap stack: org.reactivestreams.Subscription long
         2: invokeinterface org.reactivestreams.Subscription.request:(J)V
         3: .line 228
            return
        end local 1 // int prefetch
        end local 0 // org.reactivestreams.Subscription s
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0         s  Lorg/reactivestreams/Subscription;
            0    4     1  prefetch  I
    MethodParameters:
          Name  Flags
      s         
      prefetch  

  public static <T> boolean postCompleteRequest(long, org.reactivestreams.Subscriber<? super T>, java.util.Queue<T>, java.util.concurrent.atomic.AtomicLong, io.reactivex.functions.BooleanSupplier);
    descriptor: (JLorg/reactivestreams/Subscriber;Ljava/util/Queue;Ljava/util/concurrent/atomic/AtomicLong;Lio/reactivex/functions/BooleanSupplier;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=12, args_size=5
        start local 0 // long n
        start local 2 // org.reactivestreams.Subscriber actual
        start local 3 // java.util.Queue queue
        start local 4 // java.util.concurrent.atomic.AtomicLong state
        start local 5 // io.reactivex.functions.BooleanSupplier isCancelled
         0: .line 258
      StackMap locals:
      StackMap stack:
            aload 4 /* state */
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lstore 6 /* r */
        start local 6 // long r
         1: .line 261
            lload 6 /* r */
            ldc 9223372036854775807
            land
            lstore 8 /* r0 */
        start local 8 // long r0
         2: .line 264
            lload 6 /* r */
            ldc -9223372036854775808
            land
            lload 8 /* r0 */
            lload 0 /* n */
            invokestatic io.reactivex.internal.util.BackpressureHelper.addCap:(JJ)J
            lor
            lstore 10 /* u */
        start local 10 // long u
         3: .line 266
            aload 4 /* state */
            lload 6 /* r */
            lload 10 /* u */
            invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
            ifeq 0
         4: .line 268
            lload 6 /* r */
            ldc -9223372036854775808
            lcmp
            ifne 7
         5: .line 270
            lload 0 /* n */
            ldc -9223372036854775808
            lor
            aload 2 /* actual */
            aload 3 /* queue */
            aload 4 /* state */
            aload 5 /* isCancelled */
            invokestatic io.reactivex.internal.util.QueueDrainHelper.postCompleteDrain:(JLorg/reactivestreams/Subscriber;Ljava/util/Queue;Ljava/util/concurrent/atomic/AtomicLong;Lio/reactivex/functions/BooleanSupplier;)Z
            pop
         6: .line 272
            iconst_1
            ireturn
         7: .line 275
      StackMap locals: long long long
      StackMap stack:
            iconst_0
            ireturn
        end local 10 // long u
        end local 8 // long r0
        end local 6 // long r
        end local 5 // io.reactivex.functions.BooleanSupplier isCancelled
        end local 4 // java.util.concurrent.atomic.AtomicLong state
        end local 3 // java.util.Queue queue
        end local 2 // org.reactivestreams.Subscriber actual
        end local 0 // long n
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0            n  J
            0    8     2       actual  Lorg/reactivestreams/Subscriber<-TT;>;
            0    8     3        queue  Ljava/util/Queue<TT;>;
            0    8     4        state  Ljava/util/concurrent/atomic/AtomicLong;
            0    8     5  isCancelled  Lio/reactivex/functions/BooleanSupplier;
            1    8     6            r  J
            2    8     8           r0  J
            3    8    10            u  J
    Signature: <T:Ljava/lang/Object;>(JLorg/reactivestreams/Subscriber<-TT;>;Ljava/util/Queue<TT;>;Ljava/util/concurrent/atomic/AtomicLong;Lio/reactivex/functions/BooleanSupplier;)Z
    MethodParameters:
             Name  Flags
      n            
      actual       
      queue        
      state        
      isCancelled  

  static boolean isCancelled(io.reactivex.functions.BooleanSupplier);
    descriptor: (Lio/reactivex/functions/BooleanSupplier;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // io.reactivex.functions.BooleanSupplier cancelled
         0: .line 283
            aload 0 /* cancelled */
            invokeinterface io.reactivex.functions.BooleanSupplier.getAsBoolean:()Z
         1: ireturn
         2: .line 284
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 1 /* ex */
        start local 1 // java.lang.Throwable ex
         3: .line 285
            aload 1 /* ex */
            invokestatic io.reactivex.exceptions.Exceptions.throwIfFatal:(Ljava/lang/Throwable;)V
         4: .line 286
            iconst_1
            ireturn
        end local 1 // java.lang.Throwable ex
        end local 0 // io.reactivex.functions.BooleanSupplier cancelled
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  cancelled  Lio/reactivex/functions/BooleanSupplier;
            3    5     1         ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable
    MethodParameters:
           Name  Flags
      cancelled  

  static <T> boolean postCompleteDrain(long, org.reactivestreams.Subscriber<? super T>, java.util.Queue<T>, java.util.concurrent.atomic.AtomicLong, io.reactivex.functions.BooleanSupplier);
    descriptor: (JLorg/reactivestreams/Subscriber;Ljava/util/Queue;Ljava/util/concurrent/atomic/AtomicLong;Lio/reactivex/functions/BooleanSupplier;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=9, args_size=5
        start local 0 // long n
        start local 2 // org.reactivestreams.Subscriber actual
        start local 3 // java.util.Queue queue
        start local 4 // java.util.concurrent.atomic.AtomicLong state
        start local 5 // io.reactivex.functions.BooleanSupplier isCancelled
         0: .line 326
            lload 0 /* n */
            ldc -9223372036854775808
            land
            lstore 6 /* e */
        start local 6 // long e
         1: .line 330
            goto 10
         2: .line 331
      StackMap locals: long
      StackMap stack:
            aload 5 /* isCancelled */
            invokestatic io.reactivex.internal.util.QueueDrainHelper.isCancelled:(Lio/reactivex/functions/BooleanSupplier;)Z
            ifeq 4
         3: .line 332
            iconst_1
            ireturn
         4: .line 335
      StackMap locals:
      StackMap stack:
            aload 3 /* queue */
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            astore 8 /* t */
        start local 8 // java.lang.Object t
         5: .line 337
            aload 8 /* t */
            ifnonnull 8
         6: .line 338
            aload 2 /* actual */
            invokeinterface org.reactivestreams.Subscriber.onComplete:()V
         7: .line 339
            iconst_1
            ireturn
         8: .line 342
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* actual */
            aload 8 /* t */
            invokeinterface org.reactivestreams.Subscriber.onNext:(Ljava/lang/Object;)V
         9: .line 343
            lload 6 /* e */
            lconst_1
            ladd
            lstore 6 /* e */
        end local 8 // java.lang.Object t
        10: .line 330
      StackMap locals:
      StackMap stack:
            lload 6 /* e */
            lload 0 /* n */
            lcmp
            ifne 2
        11: .line 346
            aload 5 /* isCancelled */
            invokestatic io.reactivex.internal.util.QueueDrainHelper.isCancelled:(Lio/reactivex/functions/BooleanSupplier;)Z
            ifeq 13
        12: .line 347
            iconst_1
            ireturn
        13: .line 350
      StackMap locals:
      StackMap stack:
            aload 3 /* queue */
            invokeinterface java.util.Queue.isEmpty:()Z
            ifeq 16
        14: .line 351
            aload 2 /* actual */
            invokeinterface org.reactivestreams.Subscriber.onComplete:()V
        15: .line 352
            iconst_1
            ireturn
        16: .line 355
      StackMap locals:
      StackMap stack:
            aload 4 /* state */
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lstore 0 /* n */
        17: .line 357
            lload 0 /* n */
            lload 6 /* e */
            lcmp
            ifne 22
        18: .line 359
            aload 4 /* state */
            lload 6 /* e */
            ldc 9223372036854775807
            land
            lneg
            invokevirtual java.util.concurrent.atomic.AtomicLong.addAndGet:(J)J
            lstore 0 /* n */
        19: .line 361
            lload 0 /* n */
            ldc 9223372036854775807
            land
            lconst_0
            lcmp
            ifne 21
        20: .line 362
            iconst_0
            ireturn
        21: .line 365
      StackMap locals:
      StackMap stack:
            lload 0 /* n */
            ldc -9223372036854775808
            land
            lstore 6 /* e */
        22: .line 328
      StackMap locals:
      StackMap stack:
            goto 10
        end local 6 // long e
        end local 5 // io.reactivex.functions.BooleanSupplier isCancelled
        end local 4 // java.util.concurrent.atomic.AtomicLong state
        end local 3 // java.util.Queue queue
        end local 2 // org.reactivestreams.Subscriber actual
        end local 0 // long n
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0            n  J
            0   23     2       actual  Lorg/reactivestreams/Subscriber<-TT;>;
            0   23     3        queue  Ljava/util/Queue<TT;>;
            0   23     4        state  Ljava/util/concurrent/atomic/AtomicLong;
            0   23     5  isCancelled  Lio/reactivex/functions/BooleanSupplier;
            1   23     6            e  J
            5   10     8            t  TT;
    Signature: <T:Ljava/lang/Object;>(JLorg/reactivestreams/Subscriber<-TT;>;Ljava/util/Queue<TT;>;Ljava/util/concurrent/atomic/AtomicLong;Lio/reactivex/functions/BooleanSupplier;)Z
    MethodParameters:
             Name  Flags
      n            
      actual       
      queue        
      state        
      isCancelled  

  public static <T> void postComplete(org.reactivestreams.Subscriber<? super T>, java.util.Queue<T>, java.util.concurrent.atomic.AtomicLong, io.reactivex.functions.BooleanSupplier);
    descriptor: (Lorg/reactivestreams/Subscriber;Ljava/util/Queue;Ljava/util/concurrent/atomic/AtomicLong;Lio/reactivex/functions/BooleanSupplier;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // org.reactivestreams.Subscriber actual
        start local 1 // java.util.Queue queue
        start local 2 // java.util.concurrent.atomic.AtomicLong state
        start local 3 // io.reactivex.functions.BooleanSupplier isCancelled
         0: .line 400
            aload 1 /* queue */
            invokeinterface java.util.Queue.isEmpty:()Z
            ifeq 3
         1: .line 401
            aload 0 /* actual */
            invokeinterface org.reactivestreams.Subscriber.onComplete:()V
         2: .line 402
            return
         3: .line 405
      StackMap locals:
      StackMap stack:
            aload 2 /* state */
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            aload 0 /* actual */
            aload 1 /* queue */
            aload 2 /* state */
            aload 3 /* isCancelled */
            invokestatic io.reactivex.internal.util.QueueDrainHelper.postCompleteDrain:(JLorg/reactivestreams/Subscriber;Ljava/util/Queue;Ljava/util/concurrent/atomic/AtomicLong;Lio/reactivex/functions/BooleanSupplier;)Z
            ifeq 5
         4: .line 406
            return
         5: .line 410
      StackMap locals:
      StackMap stack:
            aload 2 /* state */
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lstore 4 /* r */
        start local 4 // long r
         6: .line 412
            lload 4 /* r */
            ldc -9223372036854775808
            land
            lconst_0
            lcmp
            ifeq 8
         7: .line 413
            return
         8: .line 416
      StackMap locals: long
      StackMap stack:
            lload 4 /* r */
            ldc -9223372036854775808
            lor
            lstore 6 /* u */
        start local 6 // long u
         9: .line 418
            aload 2 /* state */
            lload 4 /* r */
            lload 6 /* u */
            invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
            ifeq 5
        10: .line 420
            lload 4 /* r */
            lconst_0
            lcmp
            ifeq 12
        11: .line 421
            lload 6 /* u */
            aload 0 /* actual */
            aload 1 /* queue */
            aload 2 /* state */
            aload 3 /* isCancelled */
            invokestatic io.reactivex.internal.util.QueueDrainHelper.postCompleteDrain:(JLorg/reactivestreams/Subscriber;Ljava/util/Queue;Ljava/util/concurrent/atomic/AtomicLong;Lio/reactivex/functions/BooleanSupplier;)Z
            pop
        12: .line 424
      StackMap locals: long
      StackMap stack:
            return
        end local 6 // long u
        end local 4 // long r
        end local 3 // io.reactivex.functions.BooleanSupplier isCancelled
        end local 2 // java.util.concurrent.atomic.AtomicLong state
        end local 1 // java.util.Queue queue
        end local 0 // org.reactivestreams.Subscriber actual
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0       actual  Lorg/reactivestreams/Subscriber<-TT;>;
            0   13     1        queue  Ljava/util/Queue<TT;>;
            0   13     2        state  Ljava/util/concurrent/atomic/AtomicLong;
            0   13     3  isCancelled  Lio/reactivex/functions/BooleanSupplier;
            6   13     4            r  J
            9   13     6            u  J
    Signature: <T:Ljava/lang/Object;>(Lorg/reactivestreams/Subscriber<-TT;>;Ljava/util/Queue<TT;>;Ljava/util/concurrent/atomic/AtomicLong;Lio/reactivex/functions/BooleanSupplier;)V
    MethodParameters:
             Name  Flags
      actual       
      queue        
      state        
      isCancelled  
}
SourceFile: "QueueDrainHelper.java"