public class com.netflix.hystrix.collapser.RequestCollapserFactory<BatchReturnType, ResponseType, RequestArgumentType>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.netflix.hystrix.collapser.RequestCollapserFactory
  super_class: java.lang.Object
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final com.netflix.hystrix.collapser.CollapserTimer timer;
    descriptor: Lcom/netflix/hystrix/collapser/CollapserTimer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  private final com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy concurrencyStrategy;
    descriptor: Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.netflix.hystrix.collapser.RequestCollapserFactory$Scope scope;
    descriptor: Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scope;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static java.util.concurrent.ConcurrentHashMap<java.lang.String, com.netflix.hystrix.collapser.RequestCollapser<?, ?, ?>> globalScopedCollapsers;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/String;Lcom/netflix/hystrix/collapser/RequestCollapser<***>;>;

  private static java.util.concurrent.ConcurrentHashMap<java.lang.String, com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder<com.netflix.hystrix.collapser.RequestCollapser<?, ?, ?>>> requestScopedCollapsers;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/String;Lcom/netflix/hystrix/strategy/concurrency/HystrixRequestVariableHolder<Lcom/netflix/hystrix/collapser/RequestCollapser<***>;>;>;

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

  public void <init>(com.netflix.hystrix.HystrixCollapserKey, com.netflix.hystrix.collapser.RequestCollapserFactory$Scope, com.netflix.hystrix.collapser.CollapserTimer, com.netflix.hystrix.HystrixCollapserProperties$Setter);
    descriptor: (Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scope;Lcom/netflix/hystrix/collapser/CollapserTimer;Lcom/netflix/hystrix/HystrixCollapserProperties$Setter;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
        start local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        start local 2 // com.netflix.hystrix.collapser.RequestCollapserFactory$Scope scope
        start local 3 // com.netflix.hystrix.collapser.CollapserTimer timer
        start local 4 // com.netflix.hystrix.HystrixCollapserProperties$Setter propertiesBuilder
         0: .line 59
            aload 0 /* this */
            aload 1 /* collapserKey */
            aload 2 /* scope */
            aload 3 /* timer */
            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;
            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
         1: .line 60
            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.collapser.RequestCollapserFactory$Scope scope
        end local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        end local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lcom/netflix/hystrix/collapser/RequestCollapserFactory<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    2     1       collapserKey  Lcom/netflix/hystrix/HystrixCollapserKey;
            0    2     2              scope  Lcom/netflix/hystrix/collapser/RequestCollapserFactory$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  

  public void <init>(com.netflix.hystrix.HystrixCollapserKey, com.netflix.hystrix.collapser.RequestCollapserFactory$Scope, com.netflix.hystrix.collapser.CollapserTimer, com.netflix.hystrix.HystrixCollapserProperties);
    descriptor: (Lcom/netflix/hystrix/HystrixCollapserKey;Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scope;Lcom/netflix/hystrix/collapser/CollapserTimer;Lcom/netflix/hystrix/HystrixCollapserProperties;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
        start local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        start local 2 // com.netflix.hystrix.collapser.RequestCollapserFactory$Scope scope
        start local 3 // com.netflix.hystrix.collapser.CollapserTimer timer
        start local 4 // com.netflix.hystrix.HystrixCollapserProperties properties
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 64
            aload 0 /* this */
            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;
            putfield com.netflix.hystrix.collapser.RequestCollapserFactory.concurrencyStrategy:Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
         2: .line 65
            aload 0 /* this */
            aload 3 /* timer */
            putfield com.netflix.hystrix.collapser.RequestCollapserFactory.timer:Lcom/netflix/hystrix/collapser/CollapserTimer;
         3: .line 66
            aload 0 /* this */
            aload 2 /* scope */
            putfield com.netflix.hystrix.collapser.RequestCollapserFactory.scope:Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scope;
         4: .line 67
            aload 0 /* this */
            aload 1 /* collapserKey */
            putfield com.netflix.hystrix.collapser.RequestCollapserFactory.collapserKey:Lcom/netflix/hystrix/HystrixCollapserKey;
         5: .line 68
            aload 0 /* this */
            aload 4 /* properties */
            putfield com.netflix.hystrix.collapser.RequestCollapserFactory.properties:Lcom/netflix/hystrix/HystrixCollapserProperties;
         6: .line 70
            return
        end local 4 // com.netflix.hystrix.HystrixCollapserProperties properties
        end local 3 // com.netflix.hystrix.collapser.CollapserTimer timer
        end local 2 // com.netflix.hystrix.collapser.RequestCollapserFactory$Scope scope
        end local 1 // com.netflix.hystrix.HystrixCollapserKey collapserKey
        end local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lcom/netflix/hystrix/collapser/RequestCollapserFactory<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    7     1  collapserKey  Lcom/netflix/hystrix/HystrixCollapserKey;
            0    7     2         scope  Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scope;
            0    7     3         timer  Lcom/netflix/hystrix/collapser/CollapserTimer;
            0    7     4    properties  Lcom/netflix/hystrix/HystrixCollapserProperties;
    MethodParameters:
              Name  Flags
      collapserKey  
      scope         
      timer         
      properties    

  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.collapser.RequestCollapserFactory this
         0: .line 73
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.RequestCollapserFactory.collapserKey:Lcom/netflix/hystrix/HystrixCollapserKey;
            areturn
        end local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/collapser/RequestCollapserFactory<TBatchReturnType;TResponseType;TRequestArgumentType;>;

  public com.netflix.hystrix.collapser.RequestCollapserFactory$Scope getScope();
    descriptor: ()Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scope;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
         0: .line 77
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.RequestCollapserFactory.scope:Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scope;
            areturn
        end local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/collapser/RequestCollapserFactory<TBatchReturnType;TResponseType;TRequestArgumentType;>;

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

  public com.netflix.hystrix.collapser.RequestCollapser<BatchReturnType, ResponseType, RequestArgumentType> getRequestCollapser(com.netflix.hystrix.collapser.HystrixCollapserBridge<BatchReturnType, ResponseType, RequestArgumentType>);
    descriptor: (Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;)Lcom/netflix/hystrix/collapser/RequestCollapser;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
        start local 1 // com.netflix.hystrix.collapser.HystrixCollapserBridge commandCollapser
         0: .line 85
            getstatic com.netflix.hystrix.collapser.RequestCollapserFactory$Scopes.REQUEST:Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scopes;
            aload 0 /* this */
            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.collapser.RequestCollapserFactory$Scopes.valueOf:(Ljava/lang/String;)Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scopes;
            if_acmpne 2
         1: .line 86
            aload 0 /* this */
            aload 1 /* commandCollapser */
            invokevirtual com.netflix.hystrix.collapser.RequestCollapserFactory.getCollapserForUserRequest:(Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;)Lcom/netflix/hystrix/collapser/RequestCollapser;
            areturn
         2: .line 87
      StackMap locals:
      StackMap stack:
            getstatic com.netflix.hystrix.collapser.RequestCollapserFactory$Scopes.GLOBAL:Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scopes;
            aload 0 /* this */
            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.collapser.RequestCollapserFactory$Scopes.valueOf:(Ljava/lang/String;)Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scopes;
            if_acmpne 4
         3: .line 88
            aload 0 /* this */
            aload 1 /* commandCollapser */
            invokevirtual com.netflix.hystrix.collapser.RequestCollapserFactory.getCollapserForGlobalScope:(Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;)Lcom/netflix/hystrix/collapser/RequestCollapser;
            areturn
         4: .line 90
      StackMap locals:
      StackMap stack:
            getstatic com.netflix.hystrix.collapser.RequestCollapserFactory.logger:Lorg/slf4j/Logger;
            ldc "Invalid Scope: {}  Defaulting to REQUEST scope."
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.collapser.RequestCollapserFactory.getScope:()Lcom/netflix/hystrix/collapser/RequestCollapserFactory$Scope;
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;)V
         5: .line 91
            aload 0 /* this */
            aload 1 /* commandCollapser */
            invokevirtual com.netflix.hystrix.collapser.RequestCollapserFactory.getCollapserForUserRequest:(Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;)Lcom/netflix/hystrix/collapser/RequestCollapser;
            areturn
        end local 1 // com.netflix.hystrix.collapser.HystrixCollapserBridge commandCollapser
        end local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    6     0              this  Lcom/netflix/hystrix/collapser/RequestCollapserFactory<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    6     1  commandCollapser  Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;
    Signature: (Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;)Lcom/netflix/hystrix/collapser/RequestCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;
    MethodParameters:
                  Name  Flags
      commandCollapser  

  private com.netflix.hystrix.collapser.RequestCollapser<BatchReturnType, ResponseType, RequestArgumentType> getCollapserForGlobalScope(com.netflix.hystrix.collapser.HystrixCollapserBridge<BatchReturnType, ResponseType, RequestArgumentType>);
    descriptor: (Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;)Lcom/netflix/hystrix/collapser/RequestCollapser;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
        start local 1 // com.netflix.hystrix.collapser.HystrixCollapserBridge commandCollapser
         0: .line 103
            getstatic com.netflix.hystrix.collapser.RequestCollapserFactory.globalScopedCollapsers:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.RequestCollapserFactory.collapserKey:Lcom/netflix/hystrix/HystrixCollapserKey;
            invokeinterface com.netflix.hystrix.HystrixCollapserKey.name:()Ljava/lang/String;
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.netflix.hystrix.collapser.RequestCollapser
            astore 2 /* collapser */
        start local 2 // com.netflix.hystrix.collapser.RequestCollapser collapser
         1: .line 104
            aload 2 /* collapser */
            ifnull 3
         2: .line 105
            aload 2 /* collapser */
            areturn
         3: .line 108
      StackMap locals: com.netflix.hystrix.collapser.RequestCollapser
      StackMap stack:
            new com.netflix.hystrix.collapser.RequestCollapser
            dup
            aload 1 /* commandCollapser */
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.RequestCollapserFactory.properties:Lcom/netflix/hystrix/HystrixCollapserProperties;
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.RequestCollapserFactory.timer:Lcom/netflix/hystrix/collapser/CollapserTimer;
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.RequestCollapserFactory.concurrencyStrategy:Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
            invokespecial com.netflix.hystrix.collapser.RequestCollapser.<init>:(Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;Lcom/netflix/hystrix/HystrixCollapserProperties;Lcom/netflix/hystrix/collapser/CollapserTimer;Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;)V
            astore 3 /* newCollapser */
        start local 3 // com.netflix.hystrix.collapser.RequestCollapser newCollapser
         4: .line 109
            getstatic com.netflix.hystrix.collapser.RequestCollapserFactory.globalScopedCollapsers:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.RequestCollapserFactory.collapserKey:Lcom/netflix/hystrix/HystrixCollapserKey;
            invokeinterface com.netflix.hystrix.HystrixCollapserKey.name:()Ljava/lang/String;
            aload 3 /* newCollapser */
            invokevirtual java.util.concurrent.ConcurrentHashMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.netflix.hystrix.collapser.RequestCollapser
            astore 4 /* existing */
        start local 4 // com.netflix.hystrix.collapser.RequestCollapser existing
         5: .line 110
            aload 4 /* existing */
            ifnonnull 7
         6: .line 112
            aload 3 /* newCollapser */
            areturn
         7: .line 116
      StackMap locals: com.netflix.hystrix.collapser.RequestCollapser com.netflix.hystrix.collapser.RequestCollapser
      StackMap stack:
            aload 3 /* newCollapser */
            invokevirtual com.netflix.hystrix.collapser.RequestCollapser.shutdown:()V
         8: .line 118
            aload 4 /* existing */
            areturn
        end local 4 // com.netflix.hystrix.collapser.RequestCollapser existing
        end local 3 // com.netflix.hystrix.collapser.RequestCollapser newCollapser
        end local 2 // com.netflix.hystrix.collapser.RequestCollapser collapser
        end local 1 // com.netflix.hystrix.collapser.HystrixCollapserBridge commandCollapser
        end local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    9     0              this  Lcom/netflix/hystrix/collapser/RequestCollapserFactory<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    9     1  commandCollapser  Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            1    9     2         collapser  Lcom/netflix/hystrix/collapser/RequestCollapser<***>;
            4    9     3      newCollapser  Lcom/netflix/hystrix/collapser/RequestCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            5    9     4          existing  Lcom/netflix/hystrix/collapser/RequestCollapser<***>;
    Signature: (Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;)Lcom/netflix/hystrix/collapser/RequestCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;
    MethodParameters:
                  Name  Flags
      commandCollapser  

  private com.netflix.hystrix.collapser.RequestCollapser<BatchReturnType, ResponseType, RequestArgumentType> getCollapserForUserRequest(com.netflix.hystrix.collapser.HystrixCollapserBridge<BatchReturnType, ResponseType, RequestArgumentType>);
    descriptor: (Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;)Lcom/netflix/hystrix/collapser/RequestCollapser;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
        start local 1 // com.netflix.hystrix.collapser.HystrixCollapserBridge commandCollapser
         0: .line 131
            aload 0 /* this */
            aload 1 /* commandCollapser */
            invokevirtual com.netflix.hystrix.collapser.RequestCollapserFactory.getRequestVariableForCommand:(Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;)Lcom/netflix/hystrix/strategy/concurrency/HystrixRequestVariableHolder;
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.RequestCollapserFactory.concurrencyStrategy:Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
            invokevirtual com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder.get:(Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;)Ljava/lang/Object;
            checkcast com.netflix.hystrix.collapser.RequestCollapser
            areturn
        end local 1 // com.netflix.hystrix.collapser.HystrixCollapserBridge commandCollapser
        end local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lcom/netflix/hystrix/collapser/RequestCollapserFactory<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    1     1  commandCollapser  Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;
    Signature: (Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;)Lcom/netflix/hystrix/collapser/RequestCollapser<TBatchReturnType;TResponseType;TRequestArgumentType;>;
    MethodParameters:
                  Name  Flags
      commandCollapser  

  private com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder<com.netflix.hystrix.collapser.RequestCollapser<?, ?, ?>> getRequestVariableForCommand(com.netflix.hystrix.collapser.HystrixCollapserBridge<BatchReturnType, ResponseType, RequestArgumentType>);
    descriptor: (Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;)Lcom/netflix/hystrix/strategy/concurrency/HystrixRequestVariableHolder;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
        start local 1 // com.netflix.hystrix.collapser.HystrixCollapserBridge commandCollapser
         0: .line 142
            getstatic com.netflix.hystrix.collapser.RequestCollapserFactory.requestScopedCollapsers:Ljava/util/concurrent/ConcurrentHashMap;
            aload 1 /* commandCollapser */
            invokeinterface com.netflix.hystrix.collapser.HystrixCollapserBridge.getCollapserKey:()Lcom/netflix/hystrix/HystrixCollapserKey;
            invokeinterface com.netflix.hystrix.HystrixCollapserKey.name:()Ljava/lang/String;
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder
            astore 2 /* requestVariable */
        start local 2 // com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder requestVariable
         1: .line 143
            aload 2 /* requestVariable */
            ifnonnull 8
         2: .line 146
            new com.netflix.hystrix.collapser.RequestCollapserFactory$RequestCollapserRequestVariable
            dup
            aload 0 /* this */
            aload 1 /* commandCollapser */
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.RequestCollapserFactory.properties:Lcom/netflix/hystrix/HystrixCollapserProperties;
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.RequestCollapserFactory.timer:Lcom/netflix/hystrix/collapser/CollapserTimer;
            aload 0 /* this */
            getfield com.netflix.hystrix.collapser.RequestCollapserFactory.concurrencyStrategy:Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;
            invokespecial com.netflix.hystrix.collapser.RequestCollapserFactory$RequestCollapserRequestVariable.<init>:(Lcom/netflix/hystrix/collapser/RequestCollapserFactory;Lcom/netflix/hystrix/collapser/HystrixCollapserBridge;Lcom/netflix/hystrix/HystrixCollapserProperties;Lcom/netflix/hystrix/collapser/CollapserTimer;Lcom/netflix/hystrix/strategy/concurrency/HystrixConcurrencyStrategy;)V
            astore 3 /* newCollapser */
        start local 3 // com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder newCollapser
         3: .line 147
            getstatic com.netflix.hystrix.collapser.RequestCollapserFactory.requestScopedCollapsers:Ljava/util/concurrent/ConcurrentHashMap;
            aload 1 /* commandCollapser */
            invokeinterface com.netflix.hystrix.collapser.HystrixCollapserBridge.getCollapserKey:()Lcom/netflix/hystrix/HystrixCollapserKey;
            invokeinterface com.netflix.hystrix.HystrixCollapserKey.name:()Ljava/lang/String;
            aload 3 /* newCollapser */
            invokevirtual java.util.concurrent.ConcurrentHashMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder
            astore 4 /* existing */
        start local 4 // com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder existing
         4: .line 148
            aload 4 /* existing */
            ifnonnull 7
         5: .line 150
            aload 3 /* newCollapser */
            astore 2 /* requestVariable */
         6: .line 151
            goto 8
         7: .line 153
      StackMap locals: com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder
      StackMap stack:
            aload 4 /* existing */
            astore 2 /* requestVariable */
        end local 4 // com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder existing
        end local 3 // com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder newCollapser
         8: .line 162
      StackMap locals:
      StackMap stack:
            aload 2 /* requestVariable */
            areturn
        end local 2 // com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder requestVariable
        end local 1 // com.netflix.hystrix.collapser.HystrixCollapserBridge commandCollapser
        end local 0 // com.netflix.hystrix.collapser.RequestCollapserFactory this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    9     0              this  Lcom/netflix/hystrix/collapser/RequestCollapserFactory<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            0    9     1  commandCollapser  Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;
            1    9     2   requestVariable  Lcom/netflix/hystrix/strategy/concurrency/HystrixRequestVariableHolder<Lcom/netflix/hystrix/collapser/RequestCollapser<***>;>;
            3    8     3      newCollapser  Lcom/netflix/hystrix/strategy/concurrency/HystrixRequestVariableHolder;
            4    8     4          existing  Lcom/netflix/hystrix/strategy/concurrency/HystrixRequestVariableHolder<Lcom/netflix/hystrix/collapser/RequestCollapser<***>;>;
    Signature: (Lcom/netflix/hystrix/collapser/HystrixCollapserBridge<TBatchReturnType;TResponseType;TRequestArgumentType;>;)Lcom/netflix/hystrix/strategy/concurrency/HystrixRequestVariableHolder<Lcom/netflix/hystrix/collapser/RequestCollapser<***>;>;
    MethodParameters:
                  Name  Flags
      commandCollapser  final

  public static void reset();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 169
            getstatic com.netflix.hystrix.collapser.RequestCollapserFactory.globalScopedCollapsers:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.clear:()V
         1: .line 170
            getstatic com.netflix.hystrix.collapser.RequestCollapserFactory.requestScopedCollapsers:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.clear:()V
         2: .line 171
            invokestatic com.netflix.hystrix.util.HystrixTimer.reset:()V
         3: .line 172
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void resetRequest();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 178
            getstatic com.netflix.hystrix.collapser.RequestCollapserFactory.requestScopedCollapsers:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.clear:()V
         1: .line 179
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder<com.netflix.hystrix.collapser.RequestCollapser<?, ?, ?>> getRequestVariable(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/netflix/hystrix/strategy/concurrency/HystrixRequestVariableHolder;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String key
         0: .line 185
            getstatic com.netflix.hystrix.collapser.RequestCollapserFactory.requestScopedCollapsers:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* key */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.netflix.hystrix.strategy.concurrency.HystrixRequestVariableHolder
            areturn
        end local 0 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Lcom/netflix/hystrix/strategy/concurrency/HystrixRequestVariableHolder<Lcom/netflix/hystrix/collapser/RequestCollapser<***>;>;
    MethodParameters:
      Name  Flags
      key   
}
Signature: <BatchReturnType:Ljava/lang/Object;ResponseType:Ljava/lang/Object;RequestArgumentType:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "RequestCollapserFactory.java"
NestMembers:
  com.netflix.hystrix.collapser.RequestCollapserFactory$RequestCollapserRequestVariable  com.netflix.hystrix.collapser.RequestCollapserFactory$RequestCollapserRequestVariable$1  com.netflix.hystrix.collapser.RequestCollapserFactory$Scope  com.netflix.hystrix.collapser.RequestCollapserFactory$Scopes
InnerClasses:
  public Setter = com.netflix.hystrix.HystrixCollapserProperties$Setter of com.netflix.hystrix.HystrixCollapserProperties
  private final RequestCollapserRequestVariable = com.netflix.hystrix.collapser.RequestCollapserFactory$RequestCollapserRequestVariable of com.netflix.hystrix.collapser.RequestCollapserFactory
  public abstract Scope = com.netflix.hystrix.collapser.RequestCollapserFactory$Scope of com.netflix.hystrix.collapser.RequestCollapserFactory
  private final Scopes = com.netflix.hystrix.collapser.RequestCollapserFactory$Scopes of com.netflix.hystrix.collapser.RequestCollapserFactory