class com.netflix.hystrix.collapser.CollapsedRequestSubject<T, R> implements com.netflix.hystrix.HystrixCollapser$CollapsedRequest<T, R>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.netflix.hystrix.collapser.CollapsedRequestSubject
  super_class: java.lang.Object
{
  private final R argument;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: TR;

  private java.util.concurrent.atomic.AtomicBoolean valueSet;
    descriptor: Ljava/util/concurrent/atomic/AtomicBoolean;
    flags: (0x0002) ACC_PRIVATE

  private final rx.subjects.ReplaySubject<T> subject;
    descriptor: Lrx/subjects/ReplaySubject;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lrx/subjects/ReplaySubject<TT;>;

  private final rx.Observable<T> subjectWithAccounting;
    descriptor: Lrx/Observable;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lrx/Observable<TT;>;

  private volatile int outstandingSubscriptions;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  public void <init>(R, com.netflix.hystrix.collapser.RequestBatch<?, T, R>);
    descriptor: (Ljava/lang/Object;Lcom/netflix/hystrix/collapser/RequestBatch;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
        start local 1 // java.lang.Object arg
        start local 2 // com.netflix.hystrix.collapser.RequestBatch containingBatch
         0: .line 54
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 48
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
            putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
         2: .line 49
            aload 0 /* this */
            invokestatic rx.subjects.ReplaySubject.create:()Lrx/subjects/ReplaySubject;
            putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
         3: .line 52
            aload 0 /* this */
            iconst_0
            putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.outstandingSubscriptions:I
         4: .line 55
            aload 1 /* arg */
            getstatic com.netflix.hystrix.collapser.RequestCollapser.NULL_SENTINEL:Ljava/lang/Object;
            if_acmpne 7
         5: .line 56
            aload 0 /* this */
            aconst_null
            putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.argument:Ljava/lang/Object;
         6: .line 57
            goto 8
         7: .line 58
      StackMap locals: com.netflix.hystrix.collapser.CollapsedRequestSubject java.lang.Object com.netflix.hystrix.collapser.RequestBatch
      StackMap stack:
            aload 0 /* this */
            aload 1 /* arg */
            putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.argument:Ljava/lang/Object;
         8: .line 60
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
         9: .line 61
            new com.netflix.hystrix.collapser.CollapsedRequestSubject$1
            dup
            aload 0 /* this */
            invokespecial com.netflix.hystrix.collapser.CollapsedRequestSubject$1.<init>:(Lcom/netflix/hystrix/collapser/CollapsedRequestSubject;)V
            invokevirtual rx.subjects.ReplaySubject.doOnSubscribe:(Lrx/functions/Action0;)Lrx/Observable;
        10: .line 67
            new com.netflix.hystrix.collapser.CollapsedRequestSubject$2
            dup
            aload 0 /* this */
            aload 2 /* containingBatch */
            aload 1 /* arg */
            invokespecial com.netflix.hystrix.collapser.CollapsedRequestSubject$2.<init>:(Lcom/netflix/hystrix/collapser/CollapsedRequestSubject;Lcom/netflix/hystrix/collapser/RequestBatch;Ljava/lang/Object;)V
            invokevirtual rx.Observable.doOnUnsubscribe:(Lrx/functions/Action0;)Lrx/Observable;
        11: .line 60
            putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subjectWithAccounting:Lrx/Observable;
        12: .line 76
            return
        end local 2 // com.netflix.hystrix.collapser.RequestBatch containingBatch
        end local 1 // java.lang.Object arg
        end local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0             this  Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
            0   13     1              arg  TR;
            0   13     2  containingBatch  Lcom/netflix/hystrix/collapser/RequestBatch<*TT;TR;>;
    Signature: (TR;Lcom/netflix/hystrix/collapser/RequestBatch<*TT;TR;>;)V
    MethodParameters:
                 Name  Flags
      arg              final
      containingBatch  final

  public void <init>();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
        start local 1 // java.lang.Object arg
         0: .line 78
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 48
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
            putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
         2: .line 49
            aload 0 /* this */
            invokestatic rx.subjects.ReplaySubject.create:()Lrx/subjects/ReplaySubject;
            putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
         3: .line 52
            aload 0 /* this */
            iconst_0
            putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.outstandingSubscriptions:I
         4: .line 79
            aload 0 /* this */
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
            putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subjectWithAccounting:Lrx/Observable;
         5: .line 80
            aload 0 /* this */
            aload 1 /* arg */
            putfield com.netflix.hystrix.collapser.CollapsedRequestSubject.argument:Ljava/lang/Object;
         6: .line 81
            return
        end local 1 // java.lang.Object arg
        end local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
            0    7     1   arg  TR;
    Signature: (TR;)V
    MethodParameters:
      Name  Flags
      arg   final

  public R getArgument();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
         0: .line 90
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.argument:Ljava/lang/Object;
            areturn
        end local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
    Signature: ()TR;

  public void setResponse();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
        start local 1 // java.lang.Object response
         0: .line 102
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
            ifne 5
         1: .line 103
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
            aload 1 /* response */
            invokevirtual rx.subjects.ReplaySubject.onNext:(Ljava/lang/Object;)V
         2: .line 104
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
         3: .line 105
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
            invokevirtual rx.subjects.ReplaySubject.onCompleted:()V
         4: .line 106
            goto 6
         5: .line 107
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Response has already terminated so response can not be set : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* response */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 109
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object response
        end local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
            0    7     1  response  TT;
    Signature: (TT;)V
    MethodParameters:
          Name  Flags
      response  

  public void emitResponse();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
        start local 1 // java.lang.Object response
         0: .line 117
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
            ifne 4
         1: .line 118
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
            aload 1 /* response */
            invokevirtual rx.subjects.ReplaySubject.onNext:(Ljava/lang/Object;)V
         2: .line 119
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
         3: .line 120
            goto 5
         4: .line 121
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Response has already terminated so response can not be set : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* response */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 123
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object response
        end local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
            0    6     1  response  TT;
    Signature: (TT;)V
    MethodParameters:
          Name  Flags
      response  

  public void setComplete();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
         0: .line 127
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
            ifne 2
         1: .line 128
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
            invokevirtual rx.subjects.ReplaySubject.onCompleted:()V
         2: .line 130
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;

  public void setExceptionIfResponseNotReceived(java.lang.Exception);
    descriptor: (Ljava/lang/Exception;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
        start local 1 // java.lang.Exception e
         0: .line 138
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
            ifne 2
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
            ifne 2
         1: .line 139
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
            aload 1 /* e */
            invokevirtual rx.subjects.ReplaySubject.onError:(Ljava/lang/Throwable;)V
         2: .line 141
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Exception e
        end local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
            0    3     1     e  Ljava/lang/Exception;
    MethodParameters:
      Name  Flags
      e     

  public java.lang.Exception setExceptionIfResponseNotReceived(java.lang.Exception, java.lang.String);
    descriptor: (Ljava/lang/Exception;Ljava/lang/String;)Ljava/lang/Exception;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
        start local 1 // java.lang.Exception e
        start local 2 // java.lang.String exceptionMessage
         0: .line 150
            aload 1 /* e */
            astore 3 /* exception */
        start local 3 // java.lang.Exception exception
         1: .line 152
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.valueSet:Ljava/util/concurrent/atomic/AtomicBoolean;
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
            ifne 5
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
            ifne 5
         2: .line 153
            aload 1 /* e */
            ifnonnull 4
         3: .line 154
            new java.lang.IllegalStateException
            dup
            aload 2 /* exceptionMessage */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            astore 3 /* exception */
         4: .line 156
      StackMap locals: java.lang.Exception
      StackMap stack:
            aload 0 /* this */
            aload 3 /* exception */
            invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.setExceptionIfResponseNotReceived:(Ljava/lang/Exception;)V
         5: .line 159
      StackMap locals:
      StackMap stack:
            aload 3 /* exception */
            areturn
        end local 3 // java.lang.Exception exception
        end local 2 // java.lang.String exceptionMessage
        end local 1 // java.lang.Exception e
        end local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    6     0              this  Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
            0    6     1                 e  Ljava/lang/Exception;
            0    6     2  exceptionMessage  Ljava/lang/String;
            1    6     3         exception  Ljava/lang/Exception;
    MethodParameters:
                  Name  Flags
      e                 
      exceptionMessage  

  public void setException(java.lang.Exception);
    descriptor: (Ljava/lang/Exception;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
        start local 1 // java.lang.Exception e
         0: .line 171
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.collapser.CollapsedRequestSubject.isTerminated:()Z
            ifne 3
         1: .line 172
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
            aload 1 /* e */
            invokevirtual rx.subjects.ReplaySubject.onError:(Ljava/lang/Throwable;)V
         2: .line 173
            goto 4
         3: .line 174
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "Response has already terminated so exception can not be set"
            aload 1 /* e */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
         4: .line 176
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Exception e
        end local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
            0    5     1     e  Ljava/lang/Exception;
    MethodParameters:
      Name  Flags
      e     

  private boolean isTerminated();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
         0: .line 179
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
            invokevirtual rx.subjects.ReplaySubject.hasCompleted:()Z
            ifne 1
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subject:Lrx/subjects/ReplaySubject;
            invokevirtual rx.subjects.ReplaySubject.hasThrowable:()Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;

  public rx.Observable<T> toObservable();
    descriptor: ()Lrx/Observable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
         0: .line 183
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.CollapsedRequestSubject.subjectWithAccounting:Lrx/Observable;
            areturn
        end local 0 // com.netflix.hystrix.collapser.CollapsedRequestSubject this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/collapser/CollapsedRequestSubject<TT;TR;>;
    Signature: ()Lrx/Observable<TT;>;
}
Signature: <T:Ljava/lang/Object;R:Ljava/lang/Object;>Ljava/lang/Object;Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TT;TR;>;
SourceFile: "CollapsedRequestSubject.java"
NestMembers:
  com.netflix.hystrix.collapser.CollapsedRequestSubject$1  com.netflix.hystrix.collapser.CollapsedRequestSubject$2
InnerClasses:
  public abstract CollapsedRequest = com.netflix.hystrix.HystrixCollapser$CollapsedRequest of com.netflix.hystrix.HystrixCollapser
  com.netflix.hystrix.collapser.CollapsedRequestSubject$1
  com.netflix.hystrix.collapser.CollapsedRequestSubject$2