public abstract class com.netflix.hystrix.HystrixObservableCollapser<K, BatchReturnType, ResponseType, RequestArgumentType> implements com.netflix.hystrix.HystrixObservable<ResponseType>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.netflix.hystrix.HystrixObservableCollapser
  super_class: java.lang.Object
{
  static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private final com.netflix.hystrix.collapser.RequestCollapserFactory<BatchReturnType, ResponseType, RequestArgumentType> collapserFactory;
    descriptor: Lcom/netflix/hystrix/collapser/RequestCollapserFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/netflix/hystrix/collapser/RequestCollapserFactory<TBatchReturnType;TResponseType;TRequestArgumentType;>;

  private final com.netflix.hystrix.HystrixRequestCache requestCache;
    descriptor: Lcom/netflix/hystrix/HystrixRequestCache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.netflix.hystrix.collapser.HystrixCollapserBridge<BatchReturnType, ResponseType, RequestArgumentType> collapserInstanceWrapper;
    descriptor: Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;

  private final com.netflix.hystrix.HystrixCollapserMetrics metrics;
    descriptor: Lcom/netflix/hystrix/HystrixCollapserMetrics;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static java.util.concurrent.ConcurrentHashMap<java.lang.Class<? extends com.netflix.hystrix.HystrixObservableCollapser>, java.lang.String> defaultNameCache;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/Class<+Lcom/netflix/hystrix/HystrixObservableCollapser;>;Ljava/lang/String;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 73
            ldc Lcom/netflix/hystrix/HystrixObservableCollapser;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic com.netflix.hystrix.HystrixObservableCollapser.logger:Lorg/slf4j/Logger;
         1: .line 588
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putstatic com.netflix.hystrix.HystrixObservableCollapser.defaultNameCache:Ljava/util/concurrent/ConcurrentHashMap;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
         0: .line 98
            aload 0 /* this */
            aconst_null
            invokestatic com.netflix.hystrix.HystrixObservableCollapser$Setter.withCollapserKey:(Lcom/netflix/hystrix/HystrixCollapserKey;)Lcom/netflix/hystrix/HystrixObservableCollapser$Setter;
            getstatic com.netflix.hystrix.HystrixObservableCollapser$Scope.REQUEST:Lcom/netflix/hystrix/HystrixObservableCollapser$Scope;
            invokevirtual com.netflix.hystrix.HystrixObservableCollapser$Setter.andScope:(Lcom/netflix/hystrix/HystrixObservableCollapser$Scope;)Lcom/netflix/hystrix/HystrixObservableCollapser$Setter;
            invokespecial com.netflix.hystrix.HystrixObservableCollapser.<init>:(Lcom/netflix/hystrix/HystrixObservableCollapser$Setter;)V
         1: .line 99
            return
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;

  protected void <init>(com.netflix.hystrix.HystrixCollapserKey);
    descriptor: (Lcom/netflix/hystrix/HystrixCollapserKey;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
        start local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
         0: .line 108
            aload 0 /* this */
            aload 1 /* collapserKey */
            invokestatic com.netflix.hystrix.HystrixObservableCollapser$Setter.withCollapserKey:(Lcom/netflix/hystrix/HystrixCollapserKey;)Lcom/netflix/hystrix/HystrixObservableCollapser$Setter;
            getstatic com.netflix.hystrix.HystrixObservableCollapser$Scope.REQUEST:Lcom/netflix/hystrix/HystrixObservableCollapser$Scope;
            invokevirtual com.netflix.hystrix.HystrixObservableCollapser$Setter.andScope:(Lcom/netflix/hystrix/HystrixObservableCollapser$Scope;)Lcom/netflix/hystrix/HystrixObservableCollapser$Setter;
            invokespecial com.netflix.hystrix.HystrixObservableCollapser.<init>:(Lcom/netflix/hystrix/HystrixObservableCollapser$Setter;)V
         1: .line 109
            return
        end local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    2     1  collapserKey  Lcom/netflix/hystrix/HystrixCollapserKey;
    MethodParameters:
              Name  Flags
      collapserKey  

  protected void <init>(com.netflix.hystrix.HystrixObservableCollapser$Setter);
    descriptor: (Lcom/netflix/hystrix/HystrixObservableCollapser$Setter;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
        start local 1 // com.netflix.hystrix.HystrixObservableCollapser$Setter setter
         0: .line 121
            aload 0 /* this */
            aload 1 /* setter */
            getfield com.netflix.hystrix.HystrixObservableCollapser$Setter.collapserKey:Lcom/netflix/hystrix/HystrixCollapserKey;
            aload 1 /* setter */
            getfield com.netflix.hystrix.HystrixObservableCollapser$Setter.scope:Lcom/netflix/hystrix/HystrixObservableCollapser$Scope;
            new com.netflix.hystrix.collapser.RealCollapserTimer
            dup
            invokespecial com.netflix.hystrix.collapser.RealCollapserTimer.<init>:()V
            aload 1 /* setter */
            getfield com.netflix.hystrix.HystrixObservableCollapser$Setter.propertiesSetter:Lcom/netflix/hystrix/HystrixCollapserProperties$Setter;
            aconst_null
            invokespecial com.netflix.hystrix.HystrixObservableCollapser.<init>:(Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/HystrixObservableCollapser$Scope;Lcom/netflix/hystrix/collapser/CollapserTimer;Lcom/netflix/hystrix/HystrixCollapserProperties$Setter;Lcom/netflix/hystrix/HystrixCollapserMetrics;)V
         1: .line 122
            return
        end local 1 // com.netflix.hystrix.HystrixObservableCollapser$Setter setter
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    2     1  setter  Lcom/netflix/hystrix/HystrixObservableCollapser$Setter;
    MethodParameters:
        Name  Flags
      setter  

  void <init>(com.netflix.hystrix.HystrixCollapserKey, com.netflix.hystrix.HystrixObservableCollapser$Scope, com.netflix.hystrix.collapser.CollapserTimer, com.netflix.hystrix.HystrixCollapserProperties$Setter, com.netflix.hystrix.HystrixCollapserMetrics);
    descriptor: (Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/HystrixObservableCollapser$Scope;Lcom/netflix/hystrix/collapser/CollapserTimer;Lcom/netflix/hystrix/HystrixCollapserProperties$Setter;Lcom/netflix/hystrix/HystrixCollapserMetrics;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=8, args_size=6
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
        start local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        start local 2 // com.netflix.hystrix.HystrixObservableCollapser$Scope scope
        start local 3 // com.netflix.hystrix.collapser.CollapserTimer timer
        start local 4 // com.netflix.hystrix.HystrixCollapserProperties$Setter propertiesBuilder
        start local 5 // com.netflix.hystrix.HystrixCollapserMetrics metrics
         0: .line 124
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 125
            aload 1 /* collapserKey */
            ifnull 2
            aload 1 /* collapserKey */
            invokeinterface com.netflix.hystrix.HystrixCollapserKey.name:()Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         2: .line 126
      StackMap locals: com.netflix.hystrix.HystrixObservableCollapser com.netflix.hystrix.HystrixCollapserKey com.netflix.hystrix.HystrixObservableCollapser$Scope com.netflix.hystrix.collapser.CollapserTimer com.netflix.hystrix.HystrixCollapserProperties$Setter com.netflix.hystrix.HystrixCollapserMetrics
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic com.netflix.hystrix.HystrixObservableCollapser.getDefaultNameFromClass:(Ljava/lang/Class;)Ljava/lang/String;
            astore 6 /* defaultKeyName */
        start local 6 // java.lang.String defaultKeyName
         3: .line 127
            aload 6 /* defaultKeyName */
            invokestatic com.netflix.hystrix.HystrixCollapserKey$Factory.asKey:(Ljava/lang/String;)Lcom/netflix/hystrix/HystrixCollapserKey;
            astore 1 /* collapserKey */
        end local 6 // java.lang.String defaultKeyName
         4: .line 130
      StackMap locals:
      StackMap stack:
            aload 1 /* collapserKey */
            aload 4 /* propertiesBuilder */
            invokestatic com.netflix.hystrix.strategy.properties.HystrixPropertiesFactory.getCollapserProperties:(Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/HystrixCollapserProperties$Setter;)Lcom/netflix/hystrix/HystrixCollapserProperties;
            astore 6 /* properties */
        start local 6 // com.netflix.hystrix.HystrixCollapserProperties properties
         5: .line 131
            aload 0 /* this */
            new com.netflix.hystrix.collapser.RequestCollapserFactory
            dup
            aload 1 /* collapserKey */
            aload 2 /* scope */
            aload 3 /* timer */
            aload 6 /* properties */
            invokespecial com.netflix.hystrix.collapser.RequestCollapserFactory.<init>:(Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scope;Lcom/netflix/hystrix/collapser/CollapserTimer;Lcom/netflix/hystrix/HystrixCollapserProperties;)V
            putfield com.netflix.hystrix.HystrixObservableCollapser.collapserFactory:Lcom/netflix/hystrix/collapser/RequestCollapserFactory;
         6: .line 132
            aload 0 /* this */
            aload 1 /* collapserKey */
            invokestatic com.netflix.hystrix.strategy.HystrixPlugins.getInstance:()Lcom/netflix/hystrix/strategy/HystrixPlugins;
            invokevirtual com.netflix.hystrix.strategy.HystrixPlugins.getConcurrencyStrategy:()Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
            invokestatic com.netflix.hystrix.HystrixRequestCache.getInstance:(Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;)Lcom/netflix/hystrix/HystrixRequestCache;
            putfield com.netflix.hystrix.HystrixObservableCollapser.requestCache:Lcom/netflix/hystrix/HystrixRequestCache;
         7: .line 134
            aload 5 /* metrics */
            ifnonnull 10
         8: .line 135
            aload 0 /* this */
            aload 1 /* collapserKey */
            aload 6 /* properties */
            invokestatic com.netflix.hystrix.HystrixCollapserMetrics.getInstance:(Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/HystrixCollapserProperties;)Lcom/netflix/hystrix/HystrixCollapserMetrics;
            putfield com.netflix.hystrix.HystrixObservableCollapser.metrics:Lcom/netflix/hystrix/HystrixCollapserMetrics;
         9: .line 136
            goto 11
        10: .line 137
      StackMap locals: com.netflix.hystrix.HystrixCollapserProperties
      StackMap stack:
            aload 0 /* this */
            aload 5 /* metrics */
            putfield com.netflix.hystrix.HystrixObservableCollapser.metrics:Lcom/netflix/hystrix/HystrixCollapserMetrics;
        11: .line 140
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            astore 7 /* self */
        start local 7 // com.netflix.hystrix.HystrixObservableCollapser self
        12: .line 143
            aload 1 /* collapserKey */
            aload 0 /* this */
            getfield com.netflix.hystrix.HystrixObservableCollapser.metrics:Lcom/netflix/hystrix/HystrixCollapserMetrics;
            aload 6 /* properties */
            invokestatic com.netflix.hystrix.strategy.metrics.HystrixMetricsPublisherFactory.createOrRetrievePublisherForCollapser:(Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/HystrixCollapserMetrics;Lcom/netflix/hystrix/HystrixCollapserProperties;)Lcom/netflix/hystrix/strategy/metrics/HystrixMetricsPublisherCollapser;
            pop
        13: .line 149
            aload 0 /* this */
            new com.netflix.hystrix.HystrixObservableCollapser$1
            dup
            aload 0 /* this */
            aload 7 /* self */
            invokespecial com.netflix.hystrix.HystrixObservableCollapser$1.<init>:(Lcom/netflix/hystrix/HystrixObservableCollapser;Lcom/netflix/hystrix/HystrixObservableCollapser;)V
            putfield com.netflix.hystrix.HystrixObservableCollapser.collapserInstanceWrapper:Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;
        14: .line 238
            return
        end local 7 // com.netflix.hystrix.HystrixObservableCollapser self
        end local 6 // com.netflix.hystrix.HystrixCollapserProperties properties
        end local 5 // com.netflix.hystrix.HystrixCollapserMetrics metrics
        end local 4 // com.netflix.hystrix.HystrixCollapserProperties$Setter propertiesBuilder
        end local 3 // com.netflix.hystrix.collapser.CollapserTimer timer
        end local 2 // com.netflix.hystrix.HystrixObservableCollapser$Scope scope
        end local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   15     0               this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0   15     1       collapserKey  Lcom/netflix/hystrix/HystrixCollapserKey;
            0   15     2              scope  Lcom/netflix/hystrix/HystrixObservableCollapser$Scope;
            0   15     3              timer  Lcom/netflix/hystrix/collapser/CollapserTimer;
            0   15     4  propertiesBuilder  Lcom/netflix/hystrix/HystrixCollapserProperties$Setter;
            0   15     5            metrics  Lcom/netflix/hystrix/HystrixCollapserMetrics;
            3    4     6     defaultKeyName  Ljava/lang/String;
            5   15     6         properties  Lcom/netflix/hystrix/HystrixCollapserProperties;
           12   15     7               self  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;
    MethodParameters:
                   Name  Flags
      collapserKey       
      scope              
      timer              
      propertiesBuilder  
      metrics            

  protected java.lang.Exception getExceptionFromThrowable(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Ljava/lang/Exception;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
        start local 1 // java.lang.Throwable t
         0: .line 242
            aload 1 /* t */
            instanceof java.lang.Exception
            ifeq 3
         1: .line 243
            aload 1 /* t */
            checkcast java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
         2: .line 244
            goto 4
        end local 2 // java.lang.Exception e
         3: .line 246
      StackMap locals:
      StackMap stack:
            new java.lang.Exception
            dup
            ldc "Throwable caught while executing."
            aload 1 /* t */
            invokespecial java.lang.Exception.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            astore 2 /* e */
        start local 2 // java.lang.Exception e
         4: .line 248
      StackMap locals: java.lang.Exception
      StackMap stack:
            aload 2 /* e */
            areturn
        end local 2 // java.lang.Exception e
        end local 1 // java.lang.Throwable t
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    5     1     t  Ljava/lang/Throwable;
            2    3     2     e  Ljava/lang/Exception;
            4    5     2     e  Ljava/lang/Exception;
    MethodParameters:
      Name  Flags
      t     

  private com.netflix.hystrix.HystrixCollapserProperties getProperties();
    descriptor: ()Lcom/netflix/hystrix/HystrixCollapserProperties;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
         0: .line 253
            aload 0 /* this */
            getfield com.netflix.hystrix.HystrixObservableCollapser.collapserFactory:Lcom/netflix/hystrix/collapser/RequestCollapserFactory;
            invokevirtual com.netflix.hystrix.collapser.RequestCollapserFactory.getProperties:()Lcom/netflix/hystrix/HystrixCollapserProperties;
            areturn
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;

  public com.netflix.hystrix.HystrixCollapserKey getCollapserKey();
    descriptor: ()Lcom/netflix/hystrix/HystrixCollapserKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
         0: .line 262
            aload 0 /* this */
            getfield com.netflix.hystrix.HystrixObservableCollapser.collapserFactory:Lcom/netflix/hystrix/collapser/RequestCollapserFactory;
            invokevirtual com.netflix.hystrix.collapser.RequestCollapserFactory.getCollapserKey:()Lcom/netflix/hystrix/HystrixCollapserKey;
            areturn
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;

  public com.netflix.hystrix.HystrixObservableCollapser$Scope getScope();
    descriptor: ()Lcom/netflix/hystrix/HystrixObservableCollapser$Scope;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
         0: .line 281
            aload 0 /* this */
            getfield com.netflix.hystrix.HystrixObservableCollapser.collapserFactory:Lcom/netflix/hystrix/collapser/RequestCollapserFactory;
            invokevirtual com.netflix.hystrix.collapser.RequestCollapserFactory.getScope:()Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scope;
            invokeinterface com.netflix.hystrix.collapser.RequestCollapserFactory$Scope.name:()Ljava/lang/String;
            invokestatic com.netflix.hystrix.HystrixObservableCollapser$Scope.valueOf:(Ljava/lang/String;)Lcom/netflix/hystrix/HystrixObservableCollapser$Scope;
            areturn
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;

  public com.netflix.hystrix.HystrixCollapserMetrics getMetrics();
    descriptor: ()Lcom/netflix/hystrix/HystrixCollapserMetrics;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
         0: .line 289
            aload 0 /* this */
            getfield com.netflix.hystrix.HystrixObservableCollapser.metrics:Lcom/netflix/hystrix/HystrixCollapserMetrics;
            areturn
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;

  public abstract RequestArgumentType getRequestArgument();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: ()TRequestArgumentType;

  protected abstract com.netflix.hystrix.HystrixObservableCommand<BatchReturnType> createCommand(java.util.Collection<com.netflix.hystrix.HystrixCollapser$CollapsedRequest<ResponseType, RequestArgumentType>>);
    descriptor: (Ljava/util/Collection;)Lcom/netflix/hystrix/HystrixObservableCommand;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (Ljava/util/Collection<Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;>;)Lcom/netflix/hystrix/HystrixObservableCommand<TBatchReturnType;>;
    MethodParameters:
          Name  Flags
      requests  

  protected java.util.Collection<java.util.Collection<com.netflix.hystrix.HystrixCollapser$CollapsedRequest<ResponseType, RequestArgumentType>>> shardRequests(java.util.Collection<com.netflix.hystrix.HystrixCollapser$CollapsedRequest<ResponseType, RequestArgumentType>>);
    descriptor: (Ljava/util/Collection;)Ljava/util/Collection;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
        start local 1 // java.util.Collection requests
         0: .line 337
            aload 1 /* requests */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 1 // java.util.Collection requests
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    1     1  requests  Ljava/util/Collection<Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;>;
    Signature: (Ljava/util/Collection<Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;>;)Ljava/util/Collection<Ljava/util/Collection<Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;>;>;
    MethodParameters:
          Name  Flags
      requests  

  protected abstract rx.functions.Func1<BatchReturnType, K> getBatchReturnTypeKeySelector();
    descriptor: ()Lrx/functions/Func1;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: ()Lrx/functions/Func1<TBatchReturnType;TK;>;

  protected abstract rx.functions.Func1<RequestArgumentType, K> getRequestArgumentKeySelector();
    descriptor: ()Lrx/functions/Func1;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: ()Lrx/functions/Func1<TRequestArgumentType;TK;>;

  protected abstract void onMissingResponse(com.netflix.hystrix.HystrixCollapser$CollapsedRequest<ResponseType, RequestArgumentType>);
    descriptor: (Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;)V
    MethodParameters:
      Name  Flags
      r     

  protected abstract rx.functions.Func1<BatchReturnType, ResponseType> getBatchReturnTypeToResponseTypeMapper();
    descriptor: ()Lrx/functions/Func1;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: ()Lrx/functions/Func1<TBatchReturnType;TResponseType;>;

  public rx.Observable<ResponseType> observe();
    descriptor: ()Lrx/Observable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
         0: .line 398
            invokestatic rx.subjects.ReplaySubject.create:()Lrx/subjects/ReplaySubject;
            astore 1 /* subject */
        start local 1 // rx.subjects.ReplaySubject subject
         1: .line 400
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.HystrixObservableCollapser.toObservable:()Lrx/Observable;
            aload 1 /* subject */
            invokevirtual rx.Observable.subscribe:(Lrx/Observer;)Lrx/Subscription;
            astore 2 /* underlyingSubscription */
        start local 2 // rx.Subscription underlyingSubscription
         2: .line 402
            aload 1 /* subject */
            new com.netflix.hystrix.HystrixObservableCollapser$2
            dup
            aload 0 /* this */
            aload 2 /* underlyingSubscription */
            invokespecial com.netflix.hystrix.HystrixObservableCollapser$2.<init>:(Lcom/netflix/hystrix/HystrixObservableCollapser;Lrx/Subscription;)V
            invokevirtual rx.subjects.ReplaySubject.doOnUnsubscribe:(Lrx/functions/Action0;)Lrx/Observable;
            areturn
        end local 2 // rx.Subscription underlyingSubscription
        end local 1 // rx.subjects.ReplaySubject subject
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;
            1    3     1                 subject  Lrx/subjects/ReplaySubject<TResponseType;>;
            2    3     2  underlyingSubscription  Lrx/Subscription;
    Signature: ()Lrx/Observable<TResponseType;>;

  public rx.Observable<ResponseType> toObservable();
    descriptor: ()Lrx/Observable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
         0: .line 428
            aload 0 /* this */
            invokestatic rx.schedulers.Schedulers.computation:()Lrx/Scheduler;
            invokevirtual com.netflix.hystrix.HystrixObservableCollapser.toObservable:(Lrx/Scheduler;)Lrx/Observable;
            areturn
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;
    Signature: ()Lrx/Observable<TResponseType;>;

  public rx.Observable<ResponseType> toObservable(rx.Scheduler);
    descriptor: (Lrx/Scheduler;)Lrx/Observable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
        start local 1 // rx.Scheduler observeOn
         0: .line 443
            new com.netflix.hystrix.HystrixObservableCollapser$3
            dup
            aload 0 /* this */
            invokespecial com.netflix.hystrix.HystrixObservableCollapser$3.<init>:(Lcom/netflix/hystrix/HystrixObservableCollapser;)V
            invokestatic rx.Observable.defer:(Lrx/functions/Func0;)Lrx/Observable;
            areturn
        end local 1 // rx.Scheduler observeOn
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    1     1  observeOn  Lrx/Scheduler;
    Signature: (Lrx/Scheduler;)Lrx/Observable<TResponseType;>;
    MethodParameters:
           Name  Flags
      observeOn  

  protected java.lang.String getCacheKey();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.HystrixObservableCollapser this
         0: .line 495
            aconst_null
            areturn
        end local 0 // com.netflix.hystrix.HystrixObservableCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixObservableCollapser<TK;TBatchReturnType;TResponseType;TRequestArgumentType;>;

  static void reset();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=0, locals=0, args_size=0
         0: .line 502
            invokestatic com.netflix.hystrix.collapser.RequestCollapserFactory.reset:()V
         1: .line 503
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.String getDefaultNameFromClass(java.lang.Class<? extends com.netflix.hystrix.HystrixObservableCollapser>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.Class cls
         0: .line 506
            getstatic com.netflix.hystrix.HystrixObservableCollapser.defaultNameCache:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* cls */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* fromCache */
        start local 1 // java.lang.String fromCache
         1: .line 507
            aload 1 /* fromCache */
            ifnull 3
         2: .line 508
            aload 1 /* fromCache */
            areturn
         3: .line 512
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* cls */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            astore 2 /* name */
        start local 2 // java.lang.String name
         4: .line 513
            aload 2 /* name */
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 515
            aload 0 /* cls */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 2 /* name */
         6: .line 516
            aload 2 /* name */
            aload 2 /* name */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            iconst_1
            iadd
            aload 2 /* name */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 2 /* name */
         7: .line 518
      StackMap locals: java.lang.String
      StackMap stack:
            getstatic com.netflix.hystrix.HystrixObservableCollapser.defaultNameCache:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* cls */
            aload 2 /* name */
            invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 519
            aload 2 /* name */
            areturn
        end local 2 // java.lang.String name
        end local 1 // java.lang.String fromCache
        end local 0 // java.lang.Class cls
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0        cls  Ljava/lang/Class<+Lcom/netflix/hystrix/HystrixObservableCollapser;>;
            1    9     1  fromCache  Ljava/lang/String;
            4    9     2       name  Ljava/lang/String;
    Signature: (Ljava/lang/Class<+Lcom/netflix/hystrix/HystrixObservableCollapser;>;)Ljava/lang/String;
    MethodParameters:
      Name  Flags
      cls   
}
Signature: <K:Ljava/lang/Object;BatchReturnType:Ljava/lang/Object;ResponseType:Ljava/lang/Object;RequestArgumentType:Ljava/lang/Object;>Ljava/lang/Object;Lcom/netflix/hystrix/HystrixObservable<TResponseType;>;
SourceFile: "HystrixObservableCollapser.java"
NestMembers:
  com.netflix.hystrix.HystrixObservableCollapser$1  com.netflix.hystrix.HystrixObservableCollapser$1$1  com.netflix.hystrix.HystrixObservableCollapser$1$2  com.netflix.hystrix.HystrixObservableCollapser$1$3  com.netflix.hystrix.HystrixObservableCollapser$2  com.netflix.hystrix.HystrixObservableCollapser$3  com.netflix.hystrix.HystrixObservableCollapser$Scope  com.netflix.hystrix.HystrixObservableCollapser$Setter
InnerClasses:
  public abstract CollapsedRequest = com.netflix.hystrix.HystrixCollapser$CollapsedRequest of com.netflix.hystrix.HystrixCollapser
  public Factory = com.netflix.hystrix.HystrixCollapserKey$Factory of com.netflix.hystrix.HystrixCollapserKey
  public Setter = com.netflix.hystrix.HystrixCollapserProperties$Setter of com.netflix.hystrix.HystrixCollapserProperties
  com.netflix.hystrix.HystrixObservableCollapser$1
  com.netflix.hystrix.HystrixObservableCollapser$2
  com.netflix.hystrix.HystrixObservableCollapser$3
  public final Scope = com.netflix.hystrix.HystrixObservableCollapser$Scope of com.netflix.hystrix.HystrixObservableCollapser
  public Setter = com.netflix.hystrix.HystrixObservableCollapser$Setter of com.netflix.hystrix.HystrixObservableCollapser
  public abstract Scope = com.netflix.hystrix.collapser.RequestCollapserFactory$Scope of com.netflix.hystrix.collapser.RequestCollapserFactory