public abstract class com.netflix.hystrix.HystrixCollapser<BatchReturnType, ResponseType, RequestArgumentType> implements com.netflix.hystrix.HystrixExecutable<ResponseType>, 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.HystrixCollapser
  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.HystrixCollapser>, 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/HystrixCollapser;>;Ljava/lang/String;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 67
            ldc Lcom/netflix/hystrix/HystrixCollapser;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic com.netflix.hystrix.HystrixCollapser.logger:Lorg/slf4j/Logger;
         1: .line 615
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putstatic com.netflix.hystrix.HystrixCollapser.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.HystrixCollapser this
         0: .line 92
            aload 0 /* this */
            aconst_null
            invokestatic com.netflix.hystrix.HystrixCollapser$Setter.withCollapserKey:(Lcom/netflix/hystrix/HystrixCollapserKey;)Lcom/netflix/hystrix/HystrixCollapser$Setter;
            getstatic com.netflix.hystrix.HystrixCollapser$Scope.REQUEST:Lcom/netflix/hystrix/HystrixCollapser$Scope;
            invokevirtual com.netflix.hystrix.HystrixCollapser$Setter.andScope:(Lcom/netflix/hystrix/HystrixCollapser$Scope;)Lcom/netflix/hystrix/HystrixCollapser$Setter;
            invokespecial com.netflix.hystrix.HystrixCollapser.<init>:(Lcom/netflix/hystrix/HystrixCollapser$Setter;)V
         1: .line 93
            return
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/netflix/hystrix/HystrixCollapser<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.HystrixCollapser this
        start local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
         0: .line 102
            aload 0 /* this */
            aload 1 /* collapserKey */
            invokestatic com.netflix.hystrix.HystrixCollapser$Setter.withCollapserKey:(Lcom/netflix/hystrix/HystrixCollapserKey;)Lcom/netflix/hystrix/HystrixCollapser$Setter;
            getstatic com.netflix.hystrix.HystrixCollapser$Scope.REQUEST:Lcom/netflix/hystrix/HystrixCollapser$Scope;
            invokevirtual com.netflix.hystrix.HystrixCollapser$Setter.andScope:(Lcom/netflix/hystrix/HystrixCollapser$Scope;)Lcom/netflix/hystrix/HystrixCollapser$Setter;
            invokespecial com.netflix.hystrix.HystrixCollapser.<init>:(Lcom/netflix/hystrix/HystrixCollapser$Setter;)V
         1: .line 103
            return
        end local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lcom/netflix/hystrix/HystrixCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    2     1  collapserKey  Lcom/netflix/hystrix/HystrixCollapserKey;
    MethodParameters:
              Name  Flags
      collapserKey  

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

  void <init>(com.netflix.hystrix.HystrixCollapserKey, com.netflix.hystrix.HystrixCollapser$Scope, com.netflix.hystrix.collapser.CollapserTimer, com.netflix.hystrix.HystrixCollapserProperties$Setter);
    descriptor: (Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/HystrixCollapser$Scope;Lcom/netflix/hystrix/collapser/CollapserTimer;Lcom/netflix/hystrix/HystrixCollapserProperties$Setter;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.netflix.hystrix.HystrixCollapser this
        start local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        start local 2 // com.netflix.hystrix.HystrixCollapser$Scope scope
        start local 3 // com.netflix.hystrix.collapser.CollapserTimer timer
        start local 4 // com.netflix.hystrix.HystrixCollapserProperties$Setter propertiesBuilder
         0: .line 119
            aload 0 /* this */
            aload 1 /* collapserKey */
            aload 2 /* scope */
            aload 3 /* timer */
            aload 4 /* propertiesBuilder */
            aconst_null
            invokespecial com.netflix.hystrix.HystrixCollapser.<init>:(Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/HystrixCollapser$Scope;Lcom/netflix/hystrix/collapser/CollapserTimer;Lcom/netflix/hystrix/HystrixCollapserProperties$Setter;Lcom/netflix/hystrix/HystrixCollapserMetrics;)V
         1: .line 120
            return
        end local 4 // com.netflix.hystrix.HystrixCollapserProperties$Setter propertiesBuilder
        end local 3 // com.netflix.hystrix.collapser.CollapserTimer timer
        end local 2 // com.netflix.hystrix.HystrixCollapser$Scope scope
        end local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lcom/netflix/hystrix/HystrixCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    2     1       collapserKey  Lcom/netflix/hystrix/HystrixCollapserKey;
            0    2     2              scope  Lcom/netflix/hystrix/HystrixCollapser$Scope;
            0    2     3              timer  Lcom/netflix/hystrix/collapser/CollapserTimer;
            0    2     4  propertiesBuilder  Lcom/netflix/hystrix/HystrixCollapserProperties$Setter;
    MethodParameters:
                   Name  Flags
      collapserKey       
      scope              
      timer              
      propertiesBuilder  

  void <init>(com.netflix.hystrix.HystrixCollapserKey, com.netflix.hystrix.HystrixCollapser$Scope, com.netflix.hystrix.collapser.CollapserTimer, com.netflix.hystrix.HystrixCollapserProperties$Setter, com.netflix.hystrix.HystrixCollapserMetrics);
    descriptor: (Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/HystrixCollapser$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.HystrixCollapser this
        start local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        start local 2 // com.netflix.hystrix.HystrixCollapser$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 122
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 123
            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 124
      StackMap locals: com.netflix.hystrix.HystrixCollapser com.netflix.hystrix.HystrixCollapserKey com.netflix.hystrix.HystrixCollapser$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.HystrixCollapser.getDefaultNameFromClass:(Ljava/lang/Class;)Ljava/lang/String;
            astore 6 /* defaultKeyName */
        start local 6 // java.lang.String defaultKeyName
         3: .line 125
            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 128
      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 129
            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.HystrixCollapser.collapserFactory:Lcom/netflix/hystrix/collapser/RequestCollapserFactory;
         6: .line 130
            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.HystrixCollapser.requestCache:Lcom/netflix/hystrix/HystrixRequestCache;
         7: .line 132
            aload 5 /* metrics */
            ifnonnull 10
         8: .line 133
            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.HystrixCollapser.metrics:Lcom/netflix/hystrix/HystrixCollapserMetrics;
         9: .line 134
            goto 11
        10: .line 135
      StackMap locals: com.netflix.hystrix.HystrixCollapserProperties
      StackMap stack:
            aload 0 /* this */
            aload 5 /* metrics */
            putfield com.netflix.hystrix.HystrixCollapser.metrics:Lcom/netflix/hystrix/HystrixCollapserMetrics;
        11: .line 138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            astore 7 /* self */
        start local 7 // com.netflix.hystrix.HystrixCollapser self
        12: .line 141
            aload 1 /* collapserKey */
            aload 0 /* this */
            getfield com.netflix.hystrix.HystrixCollapser.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 146
            aload 0 /* this */
            new com.netflix.hystrix.HystrixCollapser$1
            dup
            aload 0 /* this */
            aload 7 /* self */
            invokespecial com.netflix.hystrix.HystrixCollapser$1.<init>:(Lcom/netflix/hystrix/HystrixCollapser;Lcom/netflix/hystrix/HystrixCollapser;)V
            putfield com.netflix.hystrix.HystrixCollapser.collapserInstanceWrapper:Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;
        14: .line 182
            return
        end local 7 // com.netflix.hystrix.HystrixCollapser 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.HystrixCollapser$Scope scope
        end local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   15     0               this  Lcom/netflix/hystrix/HystrixCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0   15     1       collapserKey  Lcom/netflix/hystrix/HystrixCollapserKey;
            0   15     2              scope  Lcom/netflix/hystrix/HystrixCollapser$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/HystrixCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;
    MethodParameters:
                   Name  Flags
      collapserKey       
      scope              
      timer              
      propertiesBuilder  
      metrics            

  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.HystrixCollapser this
         0: .line 185
            aload 0 /* this */
            getfield com.netflix.hystrix.HystrixCollapser.collapserFactory:Lcom/netflix/hystrix/collapser/RequestCollapserFactory;
            invokevirtual com.netflix.hystrix.collapser.RequestCollapserFactory.getProperties:()Lcom/netflix/hystrix/HystrixCollapserProperties;
            areturn
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixCollapser<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.HystrixCollapser this
         0: .line 194
            aload 0 /* this */
            getfield com.netflix.hystrix.HystrixCollapser.collapserFactory:Lcom/netflix/hystrix/collapser/RequestCollapserFactory;
            invokevirtual com.netflix.hystrix.collapser.RequestCollapserFactory.getCollapserKey:()Lcom/netflix/hystrix/HystrixCollapserKey;
            areturn
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;

  public com.netflix.hystrix.HystrixCollapser$Scope getScope();
    descriptor: ()Lcom/netflix/hystrix/HystrixCollapser$Scope;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.HystrixCollapser this
         0: .line 213
            aload 0 /* this */
            getfield com.netflix.hystrix.HystrixCollapser.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.HystrixCollapser$Scope.valueOf:(Ljava/lang/String;)Lcom/netflix/hystrix/HystrixCollapser$Scope;
            areturn
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixCollapser<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.HystrixCollapser this
         0: .line 221
            aload 0 /* this */
            getfield com.netflix.hystrix.HystrixCollapser.metrics:Lcom/netflix/hystrix/HystrixCollapserMetrics;
            areturn
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;

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

  protected abstract com.netflix.hystrix.HystrixCommand<BatchReturnType> createCommand(java.util.Collection<com.netflix.hystrix.HystrixCollapser$CollapsedRequest<ResponseType, RequestArgumentType>>);
    descriptor: (Ljava/util/Collection;)Lcom/netflix/hystrix/HystrixCommand;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (Ljava/util/Collection<Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;>;)Lcom/netflix/hystrix/HystrixCommand<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.HystrixCollapser this
        start local 1 // java.util.Collection requests
         0: .line 268
            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.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/netflix/hystrix/HystrixCollapser<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 void mapResponseToRequests(BatchReturnType, java.util.Collection<com.netflix.hystrix.HystrixCollapser$CollapsedRequest<ResponseType, RequestArgumentType>>);
    descriptor: (Ljava/lang/Object;Ljava/util/Collection;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (TBatchReturnType;Ljava/util/Collection<Lcom/netflix/hystrix/HystrixCollapser$CollapsedRequest<TResponseType;TRequestArgumentType;>;>;)V
    MethodParameters:
               Name  Flags
      batchResponse  
      requests       

  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.HystrixCollapser this
         0: .line 338
            invokestatic rx.subjects.ReplaySubject.create:()Lrx/subjects/ReplaySubject;
            astore 1 /* subject */
        start local 1 // rx.subjects.ReplaySubject subject
         1: .line 340
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.HystrixCollapser.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 342
            aload 1 /* subject */
            new com.netflix.hystrix.HystrixCollapser$2
            dup
            aload 0 /* this */
            aload 2 /* underlyingSubscription */
            invokespecial com.netflix.hystrix.HystrixCollapser$2.<init>:(Lcom/netflix/hystrix/HystrixCollapser;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.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    3     0                    this  Lcom/netflix/hystrix/HystrixCollapser<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.HystrixCollapser this
         0: .line 368
            aload 0 /* this */
            invokestatic rx.schedulers.Schedulers.computation:()Lrx/Scheduler;
            invokevirtual com.netflix.hystrix.HystrixCollapser.toObservable:(Lrx/Scheduler;)Lrx/Observable;
            areturn
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixCollapser<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.HystrixCollapser this
        start local 1 // rx.Scheduler observeOn
         0: .line 382
            new com.netflix.hystrix.HystrixCollapser$3
            dup
            aload 0 /* this */
            invokespecial com.netflix.hystrix.HystrixCollapser$3.<init>:(Lcom/netflix/hystrix/HystrixCollapser;)V
            invokestatic rx.Observable.defer:(Lrx/functions/Func0;)Lrx/Observable;
            areturn
        end local 1 // rx.Scheduler observeOn
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/netflix/hystrix/HystrixCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    1     1  observeOn  Lrx/Scheduler;
    Signature: (Lrx/Scheduler;)Lrx/Observable<TResponseType;>;
    MethodParameters:
           Name  Flags
      observeOn  

  public ResponseType execute();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.netflix.hystrix.HystrixCollapser this
         0: .line 428
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.HystrixCollapser.queue:()Ljava/util/concurrent/Future;
            invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
         1: areturn
         2: .line 429
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 1 /* e */
        start local 1 // java.lang.Throwable e
         3: .line 430
            aload 1 /* e */
            instanceof com.netflix.hystrix.exception.HystrixRuntimeException
            ifeq 5
         4: .line 431
            aload 1 /* e */
            checkcast com.netflix.hystrix.exception.HystrixRuntimeException
            athrow
         5: .line 434
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 1 /* e */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            instanceof com.netflix.hystrix.exception.HystrixRuntimeException
            ifeq 7
         6: .line 435
            aload 1 /* e */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            checkcast com.netflix.hystrix.exception.HystrixRuntimeException
            athrow
         7: .line 438
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " HystrixCollapser failed while executing."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* message */
        start local 2 // java.lang.String message
         8: .line 439
            getstatic com.netflix.hystrix.HystrixCollapser.logger:Lorg/slf4j/Logger;
            aload 2 /* message */
            aload 1 /* e */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Throwable;)V
         9: .line 441
            new java.lang.RuntimeException
            dup
            aload 2 /* message */
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.String message
        end local 1 // java.lang.Throwable e
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lcom/netflix/hystrix/HystrixCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            3   10     1        e  Ljava/lang/Throwable;
            8   10     2  message  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable
    Signature: ()TResponseType;

  public java.util.concurrent.Future<ResponseType> queue();
    descriptor: ()Ljava/util/concurrent/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.HystrixCollapser this
         0: .line 457
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.HystrixCollapser.toObservable:()Lrx/Observable;
         1: .line 458
            invokevirtual rx.Observable.toBlocking:()Lrx/observables/BlockingObservable;
         2: .line 459
            invokevirtual rx.observables.BlockingObservable.toFuture:()Ljava/util/concurrent/Future;
         3: .line 457
            areturn
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/netflix/hystrix/HystrixCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;
    Signature: ()Ljava/util/concurrent/Future<TResponseType;>;

  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.HystrixCollapser this
         0: .line 474
            aconst_null
            areturn
        end local 0 // com.netflix.hystrix.HystrixCollapser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/HystrixCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;

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

  private static java.lang.String getDefaultNameFromClass(java.lang.Class<? extends com.netflix.hystrix.HystrixCollapser>);
    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 485
            getstatic com.netflix.hystrix.HystrixCollapser.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 486
            aload 1 /* fromCache */
            ifnull 3
         2: .line 487
            aload 1 /* fromCache */
            areturn
         3: .line 491
      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 492
            aload 2 /* name */
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 494
            aload 0 /* cls */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 2 /* name */
         6: .line 495
            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 497
      StackMap locals: java.lang.String
      StackMap stack:
            getstatic com.netflix.hystrix.HystrixCollapser.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 498
            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/HystrixCollapser;>;
            1    9     1  fromCache  Ljava/lang/String;
            4    9     2       name  Ljava/lang/String;
    Signature: (Ljava/lang/Class<+Lcom/netflix/hystrix/HystrixCollapser;>;)Ljava/lang/String;
    MethodParameters:
      Name  Flags
      cls   
}
Signature: <BatchReturnType:Ljava/lang/Object;ResponseType:Ljava/lang/Object;RequestArgumentType:Ljava/lang/Object;>Ljava/lang/Object;Lcom/netflix/hystrix/HystrixExecutable<TResponseType;>;Lcom/netflix/hystrix/HystrixObservable<TResponseType;>;
SourceFile: "HystrixCollapser.java"
NestMembers:
  com.netflix.hystrix.HystrixCollapser$1  com.netflix.hystrix.HystrixCollapser$1$1  com.netflix.hystrix.HystrixCollapser$2  com.netflix.hystrix.HystrixCollapser$3  com.netflix.hystrix.HystrixCollapser$CollapsedRequest  com.netflix.hystrix.HystrixCollapser$Scope  com.netflix.hystrix.HystrixCollapser$Setter
InnerClasses:
  com.netflix.hystrix.HystrixCollapser$1
  com.netflix.hystrix.HystrixCollapser$2
  com.netflix.hystrix.HystrixCollapser$3
  public abstract CollapsedRequest = com.netflix.hystrix.HystrixCollapser$CollapsedRequest of com.netflix.hystrix.HystrixCollapser
  public final Scope = com.netflix.hystrix.HystrixCollapser$Scope of com.netflix.hystrix.HystrixCollapser
  public Setter = com.netflix.hystrix.HystrixCollapser$Setter 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
  public abstract Scope = com.netflix.hystrix.collapser.RequestCollapserFactory$Scope of com.netflix.hystrix.collapser.RequestCollapserFactory