public class org.apache.cassandra.metrics.ThreadPoolMetrics
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.metrics.ThreadPoolMetrics
  super_class: java.lang.Object
{
  public final com.codahale.metrics.Gauge<java.lang.Integer> activeTasks;
    descriptor: Lcom/codahale/metrics/Gauge;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Signature: Lcom/codahale/metrics/Gauge<Ljava/lang/Integer;>;

  public final com.codahale.metrics.Counter totalBlocked;
    descriptor: Lcom/codahale/metrics/Counter;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  public final com.codahale.metrics.Counter currentBlocked;
    descriptor: Lcom/codahale/metrics/Counter;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  public final com.codahale.metrics.Gauge<java.lang.Long> completedTasks;
    descriptor: Lcom/codahale/metrics/Gauge;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Signature: Lcom/codahale/metrics/Gauge<Ljava/lang/Long;>;

  public final com.codahale.metrics.Gauge<java.lang.Long> pendingTasks;
    descriptor: Lcom/codahale/metrics/Gauge;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Signature: Lcom/codahale/metrics/Gauge<Ljava/lang/Long;>;

  public final com.codahale.metrics.Gauge<java.lang.Integer> maxPoolSize;
    descriptor: Lcom/codahale/metrics/Gauge;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Signature: Lcom/codahale/metrics/Gauge<Ljava/lang/Integer;>;

  private org.apache.cassandra.metrics.MetricNameFactory factory;
    descriptor: Lorg/apache/cassandra/metrics/MetricNameFactory;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(java.util.concurrent.ThreadPoolExecutor, java.lang.String, java.lang.String);
    descriptor: (Ljava/util/concurrent/ThreadPoolExecutor;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // org.apache.cassandra.metrics.ThreadPoolMetrics this
        start local 1 // java.util.concurrent.ThreadPoolExecutor executor
        start local 2 // java.lang.String path
        start local 3 // java.lang.String poolName
         0: .line 69
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 71
            aload 0 /* this */
            new org.apache.cassandra.metrics.ThreadPoolMetricNameFactory
            dup
            ldc "ThreadPools"
            aload 2 /* path */
            aload 3 /* poolName */
            invokespecial org.apache.cassandra.metrics.ThreadPoolMetricNameFactory.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
            putfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
         2: .line 73
            aload 0 /* this */
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "ActiveTasks"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            new org.apache.cassandra.metrics.ThreadPoolMetrics$1
            dup
            aload 0 /* this */
            aload 1 /* executor */
            invokespecial org.apache.cassandra.metrics.ThreadPoolMetrics$1.<init>:(Lorg/apache/cassandra/metrics/ThreadPoolMetrics;Ljava/util/concurrent/ThreadPoolExecutor;)V
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.register:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;Lcom/codahale/metrics/Metric;)Lcom/codahale/metrics/Metric;
            checkcast com.codahale.metrics.Gauge
            putfield org.apache.cassandra.metrics.ThreadPoolMetrics.activeTasks:Lcom/codahale/metrics/Gauge;
         3: .line 80
            aload 0 /* this */
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "TotalBlockedTasks"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.counter:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;)Lcom/codahale/metrics/Counter;
            putfield org.apache.cassandra.metrics.ThreadPoolMetrics.totalBlocked:Lcom/codahale/metrics/Counter;
         4: .line 81
            aload 0 /* this */
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "CurrentlyBlockedTasks"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.counter:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;)Lcom/codahale/metrics/Counter;
            putfield org.apache.cassandra.metrics.ThreadPoolMetrics.currentBlocked:Lcom/codahale/metrics/Counter;
         5: .line 82
            aload 0 /* this */
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "CompletedTasks"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            new org.apache.cassandra.metrics.ThreadPoolMetrics$2
            dup
            aload 0 /* this */
            aload 1 /* executor */
            invokespecial org.apache.cassandra.metrics.ThreadPoolMetrics$2.<init>:(Lorg/apache/cassandra/metrics/ThreadPoolMetrics;Ljava/util/concurrent/ThreadPoolExecutor;)V
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.register:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;Lcom/codahale/metrics/Metric;)Lcom/codahale/metrics/Metric;
            checkcast com.codahale.metrics.Gauge
            putfield org.apache.cassandra.metrics.ThreadPoolMetrics.completedTasks:Lcom/codahale/metrics/Gauge;
         6: .line 89
            aload 0 /* this */
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "PendingTasks"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            new org.apache.cassandra.metrics.ThreadPoolMetrics$3
            dup
            aload 0 /* this */
            aload 1 /* executor */
            invokespecial org.apache.cassandra.metrics.ThreadPoolMetrics$3.<init>:(Lorg/apache/cassandra/metrics/ThreadPoolMetrics;Ljava/util/concurrent/ThreadPoolExecutor;)V
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.register:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;Lcom/codahale/metrics/Metric;)Lcom/codahale/metrics/Metric;
            checkcast com.codahale.metrics.Gauge
            putfield org.apache.cassandra.metrics.ThreadPoolMetrics.pendingTasks:Lcom/codahale/metrics/Gauge;
         7: .line 96
            aload 0 /* this */
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "MaxPoolSize"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            new org.apache.cassandra.metrics.ThreadPoolMetrics$4
            dup
            aload 0 /* this */
            aload 1 /* executor */
            invokespecial org.apache.cassandra.metrics.ThreadPoolMetrics$4.<init>:(Lorg/apache/cassandra/metrics/ThreadPoolMetrics;Ljava/util/concurrent/ThreadPoolExecutor;)V
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.register:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;Lcom/codahale/metrics/Metric;)Lcom/codahale/metrics/Metric;
            checkcast com.codahale.metrics.Gauge
            putfield org.apache.cassandra.metrics.ThreadPoolMetrics.maxPoolSize:Lcom/codahale/metrics/Gauge;
         8: .line 103
            return
        end local 3 // java.lang.String poolName
        end local 2 // java.lang.String path
        end local 1 // java.util.concurrent.ThreadPoolExecutor executor
        end local 0 // org.apache.cassandra.metrics.ThreadPoolMetrics this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lorg/apache/cassandra/metrics/ThreadPoolMetrics;
            0    9     1  executor  Ljava/util/concurrent/ThreadPoolExecutor;
            0    9     2      path  Ljava/lang/String;
            0    9     3  poolName  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      executor  final
      path      
      poolName  

  public void release();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.cassandra.metrics.ThreadPoolMetrics this
         0: .line 107
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "ActiveTasks"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.remove:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;)Z
            pop
         1: .line 108
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "PendingTasks"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.remove:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;)Z
            pop
         2: .line 109
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "CompletedTasks"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.remove:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;)Z
            pop
         3: .line 110
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "TotalBlockedTasks"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.remove:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;)Z
            pop
         4: .line 111
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "CurrentlyBlockedTasks"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.remove:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;)Z
            pop
         5: .line 112
            getstatic org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics:Lorg/apache/cassandra/metrics/CassandraMetricsRegistry;
            aload 0 /* this */
            getfield org.apache.cassandra.metrics.ThreadPoolMetrics.factory:Lorg/apache/cassandra/metrics/MetricNameFactory;
            ldc "MaxPoolSize"
            invokeinterface org.apache.cassandra.metrics.MetricNameFactory.createMetricName:(Ljava/lang/String;)Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;
            invokevirtual org.apache.cassandra.metrics.CassandraMetricsRegistry.remove:(Lorg/apache/cassandra/metrics/CassandraMetricsRegistry$MetricName;)Z
            pop
         6: .line 113
            return
        end local 0 // org.apache.cassandra.metrics.ThreadPoolMetrics this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/apache/cassandra/metrics/ThreadPoolMetrics;

  public static java.lang.Object getJmxMetric(javax.management.MBeanServerConnection, java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljavax/management/MBeanServerConnection;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // javax.management.MBeanServerConnection mbeanServerConn
        start local 1 // java.lang.String jmxPath
        start local 2 // java.lang.String poolName
        start local 3 // java.lang.String metricName
         0: .line 117
            ldc "org.apache.cassandra.metrics:type=ThreadPools,path=%s,scope=%s,name=%s"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* jmxPath */
            aastore
            dup
            iconst_1
            aload 2 /* poolName */
            aastore
            dup
            iconst_2
            aload 3 /* metricName */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 4 /* name */
        start local 4 // java.lang.String name
         1: .line 121
            new javax.management.ObjectName
            dup
            aload 4 /* name */
            invokespecial javax.management.ObjectName.<init>:(Ljava/lang/String;)V
            astore 5 /* oName */
        start local 5 // javax.management.ObjectName oName
         2: .line 122
            aload 0 /* mbeanServerConn */
            aload 5 /* oName */
            invokeinterface javax.management.MBeanServerConnection.isRegistered:(Ljavax/management/ObjectName;)Z
            ifne 4
         3: .line 124
            ldc "N/A"
            areturn
         4: .line 127
      StackMap locals: java.lang.String javax.management.ObjectName
      StackMap stack:
            aload 3 /* metricName */
            dup
            astore 6
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 5
           -865142584: 5
            316783703: 6
            551065635: 7
            605825032: 8
            968140358: 9
              default: 14
          }
      StackMap locals: java.lang.String
      StackMap stack:
         5: aload 6
            ldc "CurrentlyBlockedTasks"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
            goto 14
      StackMap locals:
      StackMap stack:
         6: aload 6
            ldc "PendingTasks"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
            goto 14
      StackMap locals:
      StackMap stack:
         7: aload 6
            ldc "CompletedTasks"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
            goto 14
      StackMap locals:
      StackMap stack:
         8: aload 6
            ldc "ActiveTasks"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
            goto 14
      StackMap locals:
      StackMap stack:
         9: aload 6
            ldc "TotalBlockedTasks"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 12
            goto 14
        10: .line 132
      StackMap locals:
      StackMap stack:
            aload 0 /* mbeanServerConn */
            aload 5 /* oName */
            ldc Lcom/codahale/metrics/JmxReporter$JmxGaugeMBean;
            invokestatic javax.management.JMX.newMBeanProxy:(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.codahale.metrics.JmxReporter$JmxGaugeMBean
            invokeinterface com.codahale.metrics.JmxReporter$JmxGaugeMBean.getValue:()Ljava/lang/Object;
        11: areturn
        12: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* mbeanServerConn */
            aload 5 /* oName */
            ldc Lcom/codahale/metrics/JmxReporter$JmxCounterMBean;
            invokestatic javax.management.JMX.newMBeanProxy:(Ljavax/management/MBeanServerConnection;Ljavax/management/ObjectName;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.codahale.metrics.JmxReporter$JmxCounterMBean
            invokeinterface com.codahale.metrics.JmxReporter$JmxCounterMBean.getCount:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
        13: areturn
        14: .line 137
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown metric name "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* metricName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 5 // javax.management.ObjectName oName
        15: .line 140
      StackMap locals: javax.management.MBeanServerConnection java.lang.String java.lang.String java.lang.String java.lang.String
      StackMap stack: java.lang.Exception
            astore 5 /* e */
        start local 5 // java.lang.Exception e
        16: .line 142
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Error reading: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.Exception e
        end local 4 // java.lang.String name
        end local 3 // java.lang.String metricName
        end local 2 // java.lang.String poolName
        end local 1 // java.lang.String jmxPath
        end local 0 // javax.management.MBeanServerConnection mbeanServerConn
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   17     0  mbeanServerConn  Ljavax/management/MBeanServerConnection;
            0   17     1          jmxPath  Ljava/lang/String;
            0   17     2         poolName  Ljava/lang/String;
            0   17     3       metricName  Ljava/lang/String;
            1   17     4             name  Ljava/lang/String;
            2   15     5            oName  Ljavax/management/ObjectName;
           16   17     5                e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1     3      15  Class java.lang.Exception
           4    11      15  Class java.lang.Exception
          12    13      15  Class java.lang.Exception
          14    15      15  Class java.lang.Exception
    MethodParameters:
                 Name  Flags
      mbeanServerConn  
      jmxPath          
      poolName         
      metricName       

  public static com.google.common.collect.Multimap<java.lang.String, java.lang.String> getJmxThreadPools(javax.management.MBeanServerConnection);
    descriptor: (Ljavax/management/MBeanServerConnection;)Lcom/google/common/collect/Multimap;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // javax.management.MBeanServerConnection mbeanServerConn
         0: .line 150
            invokestatic com.google.common.collect.HashMultimap.create:()Lcom/google/common/collect/HashMultimap;
            astore 1 /* threadPools */
        start local 1 // com.google.common.collect.Multimap threadPools
         1: .line 151
            aload 0 /* mbeanServerConn */
            new javax.management.ObjectName
            dup
            ldc "org.apache.cassandra.metrics:type=ThreadPools,*"
            invokespecial javax.management.ObjectName.<init>:(Ljava/lang/String;)V
         2: .line 152
            aconst_null
         3: .line 151
            invokeinterface javax.management.MBeanServerConnection.queryNames:(Ljavax/management/ObjectName;Ljavax/management/QueryExp;)Ljava/util/Set;
            astore 2 /* threadPoolObjectNames */
        start local 2 // java.util.Set threadPoolObjectNames
         4: .line 153
            aload 2 /* threadPoolObjectNames */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 7
      StackMap locals: javax.management.MBeanServerConnection com.google.common.collect.Multimap java.util.Set top java.util.Iterator
      StackMap stack:
         5: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.management.ObjectName
            astore 3 /* oName */
        start local 3 // javax.management.ObjectName oName
         6: .line 155
            aload 1 /* threadPools */
            aload 3 /* oName */
            ldc "path"
            invokevirtual javax.management.ObjectName.getKeyProperty:(Ljava/lang/String;)Ljava/lang/String;
            aload 3 /* oName */
            ldc "scope"
            invokevirtual javax.management.ObjectName.getKeyProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokeinterface com.google.common.collect.Multimap.put:(Ljava/lang/Object;Ljava/lang/Object;)Z
            pop
        end local 3 // javax.management.ObjectName oName
         7: .line 153
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         8: .line 158
            aload 1 /* threadPools */
         9: areturn
        end local 2 // java.util.Set threadPoolObjectNames
        end local 1 // com.google.common.collect.Multimap threadPools
        10: .line 160
      StackMap locals: javax.management.MBeanServerConnection
      StackMap stack: javax.management.MalformedObjectNameException
            astore 1 /* e */
        start local 1 // javax.management.MalformedObjectNameException e
        11: .line 162
            new java.lang.RuntimeException
            dup
            ldc "Bad query to JMX server: "
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // javax.management.MalformedObjectNameException e
        12: .line 164
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 1 /* e */
        start local 1 // java.io.IOException e
        13: .line 166
            new java.lang.RuntimeException
            dup
            ldc "Error getting threadpool names from JMX"
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.io.IOException e
        end local 0 // javax.management.MBeanServerConnection mbeanServerConn
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   14     0        mbeanServerConn  Ljavax/management/MBeanServerConnection;
            1   10     1            threadPools  Lcom/google/common/collect/Multimap<Ljava/lang/String;Ljava/lang/String;>;
            4   10     2  threadPoolObjectNames  Ljava/util/Set<Ljavax/management/ObjectName;>;
            6    7     3                  oName  Ljavax/management/ObjectName;
           11   12     1                      e  Ljavax/management/MalformedObjectNameException;
           13   14     1                      e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     9      10  Class javax.management.MalformedObjectNameException
           0     9      12  Class java.io.IOException
    Signature: (Ljavax/management/MBeanServerConnection;)Lcom/google/common/collect/Multimap<Ljava/lang/String;Ljava/lang/String;>;
    MethodParameters:
                 Name  Flags
      mbeanServerConn  
}
SourceFile: "ThreadPoolMetrics.java"
NestMembers:
  org.apache.cassandra.metrics.ThreadPoolMetrics$1  org.apache.cassandra.metrics.ThreadPoolMetrics$2  org.apache.cassandra.metrics.ThreadPoolMetrics$3  org.apache.cassandra.metrics.ThreadPoolMetrics$4
InnerClasses:
  public abstract JmxCounterMBean = com.codahale.metrics.JmxReporter$JmxCounterMBean of com.codahale.metrics.JmxReporter
  public abstract JmxGaugeMBean = com.codahale.metrics.JmxReporter$JmxGaugeMBean of com.codahale.metrics.JmxReporter
  public MetricName = org.apache.cassandra.metrics.CassandraMetricsRegistry$MetricName of org.apache.cassandra.metrics.CassandraMetricsRegistry
  org.apache.cassandra.metrics.ThreadPoolMetrics$1
  org.apache.cassandra.metrics.ThreadPoolMetrics$2
  org.apache.cassandra.metrics.ThreadPoolMetrics$3
  org.apache.cassandra.metrics.ThreadPoolMetrics$4