class org.openjdk.jmh.runner.BenchmarkHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.openjdk.jmh.runner.BenchmarkHandler
  super_class: java.lang.Object
{
  private final java.util.concurrent.ExecutorService executor;
    descriptor: Ljava/util/concurrent/ExecutorService;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.ThreadLocal<org.openjdk.jmh.runner.BenchmarkHandler$ThreadData> threadData;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Lorg/openjdk/jmh/runner/BenchmarkHandler$ThreadData;>;

  private final org.openjdk.jmh.runner.format.OutputFormat out;
    descriptor: Lorg/openjdk/jmh/runner/format/OutputFormat;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<org.openjdk.jmh.profile.InternalProfiler> profilers;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/openjdk/jmh/profile/InternalProfiler;>;

  private final java.util.List<org.openjdk.jmh.profile.InternalProfiler> profilersRev;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/openjdk/jmh/profile/InternalProfiler;>;

  private final java.lang.reflect.Method method;
    descriptor: Ljava/lang/reflect/Method;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType EXECUTOR_TYPE;
    descriptor: Lorg/openjdk/jmh/runner/BenchmarkHandler$ExecutorType;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static volatile int[] $SWITCH_TABLE$org$openjdk$jmh$annotations$Mode;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 185
            ldc Lorg/openjdk/jmh/runner/BenchmarkHandler$ExecutorType;
            ldc "jmh.executor"
            getstatic org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType.FIXED_TPE:Lorg/openjdk/jmh/runner/BenchmarkHandler$ExecutorType;
            invokevirtual org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType.name:()Ljava/lang/String;
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.Enum.valueOf:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
            checkcast org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType
            putstatic org.openjdk.jmh.runner.BenchmarkHandler.EXECUTOR_TYPE:Lorg/openjdk/jmh/runner/BenchmarkHandler$ExecutorType;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.openjdk.jmh.runner.format.OutputFormat, org.openjdk.jmh.runner.options.Options, org.openjdk.jmh.infra.BenchmarkParams);
    descriptor: (Lorg/openjdk/jmh/runner/format/OutputFormat;Lorg/openjdk/jmh/runner/options/Options;Lorg/openjdk/jmh/infra/BenchmarkParams;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=9, args_size=4
        start local 0 // org.openjdk.jmh.runner.BenchmarkHandler this
        start local 1 // org.openjdk.jmh.runner.format.OutputFormat out
        start local 2 // org.openjdk.jmh.runner.options.Options options
        start local 3 // org.openjdk.jmh.infra.BenchmarkParams executionParams
         0: .line 65
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 66
            aload 3 /* executionParams */
            invokevirtual org.openjdk.jmh.infra.BenchmarkParams.generatedBenchmark:()Ljava/lang/String;
            astore 4 /* target */
        start local 4 // java.lang.String target
         2: .line 67
            aload 4 /* target */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 5 /* lastDot */
        start local 5 // int lastDot
         3: .line 68
            aload 4 /* target */
            iconst_0
            iload 5 /* lastDot */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokestatic org.openjdk.jmh.util.ClassUtils.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
            astore 6 /* clazz */
        start local 6 // java.lang.Class clazz
         4: .line 70
            aload 0 /* this */
            aload 6 /* clazz */
            aload 4 /* target */
            iload 5 /* lastDot */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokestatic org.openjdk.jmh.runner.BenchmarkHandler.findBenchmarkMethod:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Method;
            putfield org.openjdk.jmh.runner.BenchmarkHandler.method:Ljava/lang/reflect/Method;
         5: .line 71
            aload 0 /* this */
            aload 2 /* options */
            invokeinterface org.openjdk.jmh.runner.options.Options.getProfilers:()Ljava/util/List;
            invokestatic org.openjdk.jmh.profile.ProfilerFactory.getSupportedInternal:(Ljava/util/Collection;)Ljava/util/List;
            putfield org.openjdk.jmh.runner.BenchmarkHandler.profilers:Ljava/util/List;
         6: .line 72
            aload 0 /* this */
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield org.openjdk.jmh.runner.BenchmarkHandler.profilers:Ljava/util/List;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            putfield org.openjdk.jmh.runner.BenchmarkHandler.profilersRev:Ljava/util/List;
         7: .line 73
            aload 0 /* this */
            getfield org.openjdk.jmh.runner.BenchmarkHandler.profilersRev:Ljava/util/List;
            invokestatic java.util.Collections.reverse:(Ljava/util/List;)V
         8: .line 75
            new java.util.concurrent.ArrayBlockingQueue
            dup
            aload 3 /* executionParams */
            invokevirtual org.openjdk.jmh.infra.BenchmarkParams.getThreads:()I
            invokespecial java.util.concurrent.ArrayBlockingQueue.<init>:(I)V
            astore 7 /* tps */
        start local 7 // java.util.concurrent.BlockingQueue tps
         9: .line 76
            aload 7 /* tps */
            aload 3 /* executionParams */
            invokevirtual org.openjdk.jmh.infra.BenchmarkParams.getThreads:()I
            aload 3 /* executionParams */
            invokevirtual org.openjdk.jmh.infra.BenchmarkParams.getThreadGroups:()[I
            invokestatic org.openjdk.jmh.runner.BenchmarkHandler.distributeThreads:(I[I)Ljava/util/List;
            invokeinterface java.util.concurrent.BlockingQueue.addAll:(Ljava/util/Collection;)Z
            pop
        10: .line 78
            aload 0 /* this */
            new org.openjdk.jmh.runner.BenchmarkHandler$1
            dup
            aload 0 /* this */
            aload 6 /* clazz */
            aload 7 /* tps */
            invokespecial org.openjdk.jmh.runner.BenchmarkHandler$1.<init>:(Lorg/openjdk/jmh/runner/BenchmarkHandler;Ljava/lang/Class;Ljava/util/concurrent/BlockingQueue;)V
            putfield org.openjdk.jmh.runner.BenchmarkHandler.threadData:Ljava/lang/ThreadLocal;
        11: .line 94
            aload 0 /* this */
            aload 1 /* out */
            putfield org.openjdk.jmh.runner.BenchmarkHandler.out:Lorg/openjdk/jmh/runner/format/OutputFormat;
        12: .line 96
            aload 0 /* this */
            getstatic org.openjdk.jmh.runner.BenchmarkHandler.EXECUTOR_TYPE:Lorg/openjdk/jmh/runner/BenchmarkHandler$ExecutorType;
            aload 3 /* executionParams */
            invokevirtual org.openjdk.jmh.infra.BenchmarkParams.getThreads:()I
            aload 3 /* executionParams */
            invokevirtual org.openjdk.jmh.infra.BenchmarkParams.getBenchmark:()Ljava/lang/String;
            invokevirtual org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType.createExecutor:(ILjava/lang/String;)Ljava/util/concurrent/ExecutorService;
            putfield org.openjdk.jmh.runner.BenchmarkHandler.executor:Ljava/util/concurrent/ExecutorService;
        13: .line 97
            goto 16
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.runner.format.OutputFormat org.openjdk.jmh.runner.options.Options org.openjdk.jmh.infra.BenchmarkParams java.lang.String int java.lang.Class java.util.concurrent.BlockingQueue
      StackMap stack: java.lang.Exception
        14: astore 8 /* e */
        start local 8 // java.lang.Exception e
        15: .line 98
            new java.lang.IllegalStateException
            dup
            aload 8 /* e */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 8 // java.lang.Exception e
        16: .line 100
      StackMap locals:
      StackMap stack:
            return
        end local 7 // java.util.concurrent.BlockingQueue tps
        end local 6 // java.lang.Class clazz
        end local 5 // int lastDot
        end local 4 // java.lang.String target
        end local 3 // org.openjdk.jmh.infra.BenchmarkParams executionParams
        end local 2 // org.openjdk.jmh.runner.options.Options options
        end local 1 // org.openjdk.jmh.runner.format.OutputFormat out
        end local 0 // org.openjdk.jmh.runner.BenchmarkHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   17     0             this  Lorg/openjdk/jmh/runner/BenchmarkHandler;
            0   17     1              out  Lorg/openjdk/jmh/runner/format/OutputFormat;
            0   17     2          options  Lorg/openjdk/jmh/runner/options/Options;
            0   17     3  executionParams  Lorg/openjdk/jmh/infra/BenchmarkParams;
            2   17     4           target  Ljava/lang/String;
            3   17     5          lastDot  I
            4   17     6            clazz  Ljava/lang/Class<*>;
            9   17     7              tps  Ljava/util/concurrent/BlockingQueue<Lorg/openjdk/jmh/infra/ThreadParams;>;
           15   16     8                e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          12    13      14  Class java.lang.Exception
    MethodParameters:
                 Name  Flags
      out              
      options          
      executionParams  

  static java.util.List<org.openjdk.jmh.infra.ThreadParams> distributeThreads(int, int[]);
    descriptor: (I[I)Ljava/util/List;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=14, locals=11, args_size=2
        start local 0 // int threads
        start local 1 // int[] groups
         0: .line 103
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* result */
        start local 2 // java.util.List result
         1: .line 104
            aload 1 /* groups */
            invokestatic org.openjdk.jmh.util.Utils.sum:([I)I
            istore 3 /* totalGroupThreads */
        start local 3 // int totalGroupThreads
         2: .line 105
            dconst_1
            iload 0 /* threads */
            i2d
            dmul
            iload 3 /* totalGroupThreads */
            i2d
            ddiv
            invokestatic java.lang.Math.ceil:(D)D
            d2i
            istore 4 /* totalGroups */
        start local 4 // int totalGroups
         3: .line 106
            aload 1 /* groups */
            arraylength
            istore 5 /* totalSubgroups */
        start local 5 // int totalSubgroups
         4: .line 108
            iconst_0
            istore 6 /* currentGroupThread */
        start local 6 // int currentGroupThread
         5: .line 109
            iconst_0
            istore 7 /* currentSubgroupThread */
        start local 7 // int currentSubgroupThread
         6: .line 110
            iconst_0
            istore 8 /* currentGroup */
        start local 8 // int currentGroup
         7: .line 111
            iconst_0
            istore 9 /* currentSubgroup */
        start local 9 // int currentSubgroup
         8: .line 112
            iconst_0
            istore 10 /* t */
        start local 10 // int t
         9: goto 27
        10: .line 114
      StackMap locals: int int[] java.util.List int int int int int int int int
      StackMap stack:
            iinc 9 /* currentSubgroup */ 1
        11: .line 115
            iload 9 /* currentSubgroup */
            aload 1 /* groups */
            arraylength
            if_icmpne 15
        12: .line 116
            iinc 8 /* currentGroup */ 1
        13: .line 117
            iconst_0
            istore 9 /* currentSubgroup */
        14: .line 118
            iconst_0
            istore 6 /* currentGroupThread */
        15: .line 120
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* currentSubgroupThread */
        16: .line 113
      StackMap locals:
      StackMap stack:
            iload 7 /* currentSubgroupThread */
            aload 1 /* groups */
            iload 9 /* currentSubgroup */
            iaload
            if_icmpge 10
        17: .line 123
            aload 2 /* result */
            new org.openjdk.jmh.infra.ThreadParams
            dup
        18: .line 124
            iload 10 /* t */
            iload 0 /* threads */
        19: .line 125
            iload 8 /* currentGroup */
            iload 4 /* totalGroups */
        20: .line 126
            iload 9 /* currentSubgroup */
            iload 5 /* totalSubgroups */
        21: .line 127
            iload 6 /* currentGroupThread */
            iload 3 /* totalGroupThreads */
        22: .line 128
            iload 7 /* currentSubgroupThread */
            aload 1 /* groups */
            iload 9 /* currentSubgroup */
            iaload
            invokespecial org.openjdk.jmh.infra.ThreadParams.<init>:(IIIIIIIIII)V
        23: .line 123
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        24: .line 132
            iinc 6 /* currentGroupThread */ 1
        25: .line 133
            iinc 7 /* currentSubgroupThread */ 1
        26: .line 112
            iinc 10 /* t */ 1
      StackMap locals:
      StackMap stack:
        27: iload 10 /* t */
            iload 0 /* threads */
            if_icmplt 16
        end local 10 // int t
        28: .line 135
            aload 2 /* result */
            areturn
        end local 9 // int currentSubgroup
        end local 8 // int currentGroup
        end local 7 // int currentSubgroupThread
        end local 6 // int currentGroupThread
        end local 5 // int totalSubgroups
        end local 4 // int totalGroups
        end local 3 // int totalGroupThreads
        end local 2 // java.util.List result
        end local 1 // int[] groups
        end local 0 // int threads
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   29     0                threads  I
            0   29     1                 groups  [I
            1   29     2                 result  Ljava/util/List<Lorg/openjdk/jmh/infra/ThreadParams;>;
            2   29     3      totalGroupThreads  I
            3   29     4            totalGroups  I
            4   29     5         totalSubgroups  I
            5   29     6     currentGroupThread  I
            6   29     7  currentSubgroupThread  I
            7   29     8           currentGroup  I
            8   29     9        currentSubgroup  I
            9   28    10                      t  I
    Signature: (I[I)Ljava/util/List<Lorg/openjdk/jmh/infra/ThreadParams;>;
    MethodParameters:
         Name  Flags
      threads  
      groups   

  public static java.lang.reflect.Method findBenchmarkMethod(java.lang.Class<?>, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Method;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // java.lang.Class clazz
        start local 1 // java.lang.String methodName
         0: .line 139
            aconst_null
            astore 2 /* method */
        start local 2 // java.lang.reflect.Method method
         1: .line 140
            aload 0 /* clazz */
            invokestatic org.openjdk.jmh.util.ClassUtils.enumerateMethods:(Ljava/lang/Class;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 10
      StackMap locals: java.lang.Class java.lang.String java.lang.reflect.Method top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 3 /* m */
        start local 3 // java.lang.reflect.Method m
         3: .line 141
            aload 3 /* m */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aload 1 /* methodName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         4: .line 142
            aload 3 /* m */
            invokestatic org.openjdk.jmh.runner.BenchmarkHandler.isValidBenchmarkSignature:(Ljava/lang/reflect/Method;)Z
            ifeq 9
         5: .line 143
            aload 2 /* method */
            ifnull 7
         6: .line 144
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Ambiguous methods: \n"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "\n and \n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* m */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "\n, which one to execute?"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 146
      StackMap locals: java.lang.Class java.lang.String java.lang.reflect.Method java.lang.reflect.Method java.util.Iterator
      StackMap stack:
            aload 3 /* m */
            astore 2 /* method */
         8: .line 147
            goto 10
         9: .line 148
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Benchmark parameters do not match the signature contract."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.reflect.Method m
        10: .line 140
      StackMap locals: java.lang.Class java.lang.String java.lang.reflect.Method top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        11: .line 152
            aload 2 /* method */
            ifnonnull 13
        12: .line 153
            new java.lang.IllegalArgumentException
            dup
            ldc "No matching methods found in benchmark"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 155
      StackMap locals: java.lang.Class java.lang.String java.lang.reflect.Method
      StackMap stack:
            aload 2 /* method */
            areturn
        end local 2 // java.lang.reflect.Method method
        end local 1 // java.lang.String methodName
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0       clazz  Ljava/lang/Class<*>;
            0   14     1  methodName  Ljava/lang/String;
            1   14     2      method  Ljava/lang/reflect/Method;
            3   10     3           m  Ljava/lang/reflect/Method;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;)Ljava/lang/reflect/Method;
    MethodParameters:
            Name  Flags
      clazz       
      methodName  

  private static boolean isValidBenchmarkSignature(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.reflect.Method m
         0: .line 165
            aload 0 /* m */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            ldc Lorg/openjdk/jmh/results/BenchmarkTaskResult;
            if_acmpeq 2
         1: .line 166
            iconst_0
            ireturn
         2: .line 168
      StackMap locals:
      StackMap stack:
            aload 0 /* m */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            astore 1 /* parameterTypes */
        start local 1 // java.lang.Class[] parameterTypes
         3: .line 170
            aload 1 /* parameterTypes */
            arraylength
            iconst_2
            if_icmpeq 5
         4: .line 171
            iconst_0
            ireturn
         5: .line 174
      StackMap locals: java.lang.Class[]
      StackMap stack:
            aload 1 /* parameterTypes */
            iconst_0
            aaload
            ldc Lorg/openjdk/jmh/runner/InfraControl;
            if_acmpeq 7
         6: .line 175
            iconst_0
            ireturn
         7: .line 178
      StackMap locals:
      StackMap stack:
            aload 1 /* parameterTypes */
            iconst_1
            aaload
            ldc Lorg/openjdk/jmh/infra/ThreadParams;
            if_acmpeq 9
         8: .line 179
            iconst_0
            ireturn
         9: .line 182
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // java.lang.Class[] parameterTypes
        end local 0 // java.lang.reflect.Method m
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   10     0               m  Ljava/lang/reflect/Method;
            3   10     1  parameterTypes  [Ljava/lang/Class;
    MethodParameters:
      Name  Flags
      m     

  protected void startProfilers(org.openjdk.jmh.infra.BenchmarkParams, org.openjdk.jmh.infra.IterationParams);
    descriptor: (Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // org.openjdk.jmh.runner.BenchmarkHandler this
        start local 1 // org.openjdk.jmh.infra.BenchmarkParams benchmarkParams
        start local 2 // org.openjdk.jmh.infra.IterationParams iterationParams
         0: .line 259
            aload 0 /* this */
            getfield org.openjdk.jmh.runner.BenchmarkHandler.profilers:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 6
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.openjdk.jmh.profile.InternalProfiler
            astore 3 /* prof */
        start local 3 // org.openjdk.jmh.profile.InternalProfiler prof
         2: .line 261
            aload 3 /* prof */
            aload 1 /* benchmarkParams */
            aload 2 /* iterationParams */
            invokeinterface org.openjdk.jmh.profile.InternalProfiler.beforeIteration:(Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;)V
         3: .line 262
            goto 6
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams org.openjdk.jmh.profile.InternalProfiler java.util.Iterator
      StackMap stack: java.lang.Throwable
         4: astore 5 /* ex */
        start local 5 // java.lang.Throwable ex
         5: .line 263
            new org.openjdk.jmh.runner.BenchmarkException
            dup
            aload 5 /* ex */
            invokespecial org.openjdk.jmh.runner.BenchmarkException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.Throwable ex
        end local 3 // org.openjdk.jmh.profile.InternalProfiler prof
         6: .line 259
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         7: .line 266
            return
        end local 2 // org.openjdk.jmh.infra.IterationParams iterationParams
        end local 1 // org.openjdk.jmh.infra.BenchmarkParams benchmarkParams
        end local 0 // org.openjdk.jmh.runner.BenchmarkHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Lorg/openjdk/jmh/runner/BenchmarkHandler;
            0    8     1  benchmarkParams  Lorg/openjdk/jmh/infra/BenchmarkParams;
            0    8     2  iterationParams  Lorg/openjdk/jmh/infra/IterationParams;
            2    6     3             prof  Lorg/openjdk/jmh/profile/InternalProfiler;
            5    6     5               ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.Throwable
    MethodParameters:
                 Name  Flags
      benchmarkParams  
      iterationParams  

  protected void stopProfilers(org.openjdk.jmh.infra.BenchmarkParams, org.openjdk.jmh.infra.IterationParams, org.openjdk.jmh.results.IterationResult);
    descriptor: (Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;Lorg/openjdk/jmh/results/IterationResult;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // org.openjdk.jmh.runner.BenchmarkHandler this
        start local 1 // org.openjdk.jmh.infra.BenchmarkParams benchmarkParams
        start local 2 // org.openjdk.jmh.infra.IterationParams iterationParams
        start local 3 // org.openjdk.jmh.results.IterationResult iterationResults
         0: .line 270
            aload 0 /* this */
            getfield org.openjdk.jmh.runner.BenchmarkHandler.profilersRev:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 6
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams org.openjdk.jmh.results.IterationResult top java.util.Iterator
      StackMap stack:
         1: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.openjdk.jmh.profile.InternalProfiler
            astore 4 /* prof */
        start local 4 // org.openjdk.jmh.profile.InternalProfiler prof
         2: .line 272
            aload 3 /* iterationResults */
            aload 4 /* prof */
            aload 1 /* benchmarkParams */
            aload 2 /* iterationParams */
            aload 3 /* iterationResults */
            invokeinterface org.openjdk.jmh.profile.InternalProfiler.afterIteration:(Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;Lorg/openjdk/jmh/results/IterationResult;)Ljava/util/Collection;
            invokevirtual org.openjdk.jmh.results.IterationResult.addResults:(Ljava/util/Collection;)V
         3: .line 273
            goto 6
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams org.openjdk.jmh.results.IterationResult org.openjdk.jmh.profile.InternalProfiler java.util.Iterator
      StackMap stack: java.lang.Throwable
         4: astore 6 /* ex */
        start local 6 // java.lang.Throwable ex
         5: .line 274
            new org.openjdk.jmh.runner.BenchmarkException
            dup
            aload 6 /* ex */
            invokespecial org.openjdk.jmh.runner.BenchmarkException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.lang.Throwable ex
        end local 4 // org.openjdk.jmh.profile.InternalProfiler prof
         6: .line 270
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams org.openjdk.jmh.results.IterationResult top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         7: .line 277
            return
        end local 3 // org.openjdk.jmh.results.IterationResult iterationResults
        end local 2 // org.openjdk.jmh.infra.IterationParams iterationParams
        end local 1 // org.openjdk.jmh.infra.BenchmarkParams benchmarkParams
        end local 0 // org.openjdk.jmh.runner.BenchmarkHandler this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0              this  Lorg/openjdk/jmh/runner/BenchmarkHandler;
            0    8     1   benchmarkParams  Lorg/openjdk/jmh/infra/BenchmarkParams;
            0    8     2   iterationParams  Lorg/openjdk/jmh/infra/IterationParams;
            0    8     3  iterationResults  Lorg/openjdk/jmh/results/IterationResult;
            2    6     4              prof  Lorg/openjdk/jmh/profile/InternalProfiler;
            5    6     6                ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.Throwable
    MethodParameters:
                  Name  Flags
      benchmarkParams   
      iterationParams   
      iterationResults  

  public void shutdown();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.openjdk.jmh.runner.BenchmarkHandler this
         0: .line 283
            getstatic org.openjdk.jmh.runner.BenchmarkHandler.EXECUTOR_TYPE:Lorg/openjdk/jmh/runner/BenchmarkHandler$ExecutorType;
            invokevirtual org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType.shutdownForbidden:()Z
            ifne 1
            aload 0 /* this */
            getfield org.openjdk.jmh.runner.BenchmarkHandler.executor:Ljava/util/concurrent/ExecutorService;
            ifnonnull 2
         1: .line 284
      StackMap locals:
      StackMap stack:
            return
         2: .line 287
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.openjdk.jmh.runner.BenchmarkHandler.executor:Ljava/util/concurrent/ExecutorService;
            invokeinterface java.util.concurrent.ExecutorService.shutdown:()V
         3: .line 290
            aload 0 /* this */
            getfield org.openjdk.jmh.runner.BenchmarkHandler.executor:Ljava/util/concurrent/ExecutorService;
            ldc 10
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface java.util.concurrent.ExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
            ifeq 8
         4: .line 291
            return
         5: .line 293
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            pop
         6: .line 294
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
         7: .line 295
            return
         8: .line 298
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.openjdk.jmh.runner.BenchmarkHandler.out:Lorg/openjdk/jmh/runner/format/OutputFormat;
            new java.lang.StringBuilder
            dup
            ldc "Failed to stop executor service "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.openjdk.jmh.runner.BenchmarkHandler.executor:Ljava/util/concurrent/ExecutorService;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ", trying again; check for the unaccounted running threads"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.openjdk.jmh.runner.format.OutputFormat.println:(Ljava/lang/String;)V
         9: .line 286
            goto 2
        end local 0 // org.openjdk.jmh.runner.BenchmarkHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/openjdk/jmh/runner/BenchmarkHandler;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.InterruptedException

  public org.openjdk.jmh.results.IterationResult runIteration(org.openjdk.jmh.infra.BenchmarkParams, org.openjdk.jmh.infra.IterationParams, boolean);
    descriptor: (Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;Z)Lorg/openjdk/jmh/results/IterationResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=24, args_size=4
        start local 0 // org.openjdk.jmh.runner.BenchmarkHandler this
        start local 1 // org.openjdk.jmh.infra.BenchmarkParams benchmarkParams
        start local 2 // org.openjdk.jmh.infra.IterationParams params
        start local 3 // boolean last
         0: .line 311
            aload 1 /* benchmarkParams */
            invokevirtual org.openjdk.jmh.infra.BenchmarkParams.getThreads:()I
            istore 4 /* numThreads */
        start local 4 // int numThreads
         1: .line 312
            aload 2 /* params */
            invokevirtual org.openjdk.jmh.infra.IterationParams.getTime:()Lorg/openjdk/jmh/runner/options/TimeValue;
            astore 5 /* runtime */
        start local 5 // org.openjdk.jmh.runner.options.TimeValue runtime
         2: .line 314
            new java.util.concurrent.CountDownLatch
            dup
            iload 4 /* numThreads */
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            astore 6 /* preSetupBarrier */
        start local 6 // java.util.concurrent.CountDownLatch preSetupBarrier
         3: .line 315
            new java.util.concurrent.CountDownLatch
            dup
            iload 4 /* numThreads */
            invokespecial java.util.concurrent.CountDownLatch.<init>:(I)V
            astore 7 /* preTearDownBarrier */
        start local 7 // java.util.concurrent.CountDownLatch preTearDownBarrier
         4: .line 318
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 8 /* iterationResults */
        start local 8 // java.util.List iterationResults
         5: .line 320
            new org.openjdk.jmh.runner.InfraControl
            dup
            aload 1 /* benchmarkParams */
            aload 2 /* params */
         6: .line 321
            aload 6 /* preSetupBarrier */
            aload 7 /* preTearDownBarrier */
            iload 3 /* last */
         7: .line 322
            new org.openjdk.jmh.infra.Control
            dup
            invokespecial org.openjdk.jmh.infra.Control.<init>:()V
         8: .line 320
            invokespecial org.openjdk.jmh.runner.InfraControl.<init>:(Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;Ljava/util/concurrent/CountDownLatch;Ljava/util/concurrent/CountDownLatch;ZLorg/openjdk/jmh/infra/Control;)V
            astore 9 /* control */
        start local 9 // org.openjdk.jmh.runner.InfraControl control
         9: .line 325
            iload 4 /* numThreads */
            anewarray org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask
            astore 10 /* runners */
        start local 10 // org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] runners
        10: .line 326
            iconst_0
            istore 11 /* i */
        start local 11 // int i
        11: goto 14
        12: .line 327
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams int int org.openjdk.jmh.runner.options.TimeValue java.util.concurrent.CountDownLatch java.util.concurrent.CountDownLatch java.util.List org.openjdk.jmh.runner.InfraControl org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] int
      StackMap stack:
            aload 10 /* runners */
            iload 11 /* i */
            new org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask
            dup
            aload 0 /* this */
            aload 9 /* control */
            invokespecial org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask.<init>:(Lorg/openjdk/jmh/runner/BenchmarkHandler;Lorg/openjdk/jmh/runner/InfraControl;)V
            aastore
        13: .line 326
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 11 /* i */
            aload 10 /* runners */
            arraylength
            if_icmplt 12
        end local 11 // int i
        15: .line 330
            invokestatic java.lang.System.nanoTime:()J
            aload 1 /* benchmarkParams */
            invokevirtual org.openjdk.jmh.infra.BenchmarkParams.getTimeout:()Lorg/openjdk/jmh/runner/options/TimeValue;
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual org.openjdk.jmh.runner.options.TimeValue.convertTo:(Ljava/util/concurrent/TimeUnit;)J
            ladd
            lstore 11 /* waitDeadline */
        start local 11 // long waitDeadline
        16: .line 334
            aload 0 /* this */
            aload 1 /* benchmarkParams */
            aload 2 /* params */
            invokevirtual org.openjdk.jmh.runner.BenchmarkHandler.startProfilers:(Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;)V
        17: .line 337
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 13 /* completed */
        start local 13 // java.util.List completed
        18: .line 338
            new java.util.concurrent.ExecutorCompletionService
            dup
            aload 0 /* this */
            getfield org.openjdk.jmh.runner.BenchmarkHandler.executor:Ljava/util/concurrent/ExecutorService;
            invokespecial java.util.concurrent.ExecutorCompletionService.<init>:(Ljava/util/concurrent/Executor;)V
            astore 14 /* srv */
        start local 14 // java.util.concurrent.CompletionService srv
        19: .line 339
            aload 10 /* runners */
            dup
            astore 18
            arraylength
            istore 17
            iconst_0
            istore 16
            goto 23
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams int int org.openjdk.jmh.runner.options.TimeValue java.util.concurrent.CountDownLatch java.util.concurrent.CountDownLatch java.util.List org.openjdk.jmh.runner.InfraControl org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] long java.util.List java.util.concurrent.CompletionService top int int org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[]
      StackMap stack:
        20: aload 18
            iload 16
            aaload
            astore 15 /* runner */
        start local 15 // org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask runner
        21: .line 340
            aload 14 /* srv */
            aload 15 /* runner */
            invokeinterface java.util.concurrent.CompletionService.submit:(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
            pop
        end local 15 // org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask runner
        22: .line 339
            iinc 16 1
      StackMap locals:
      StackMap stack:
        23: iload 16
            iload 17
            if_icmplt 20
        24: .line 344
            aload 9 /* control */
            invokevirtual org.openjdk.jmh.runner.InfraControl.awaitWarmupReady:()V
        25: .line 347
            invokestatic org.openjdk.jmh.runner.BenchmarkHandler.$SWITCH_TABLE$org$openjdk$jmh$annotations$Mode:()[I
            aload 1 /* benchmarkParams */
            invokevirtual org.openjdk.jmh.infra.BenchmarkParams.getMode:()Lorg/openjdk/jmh/annotations/Mode;
            invokevirtual org.openjdk.jmh.annotations.Mode.ordinal:()I
            iaload
            tableswitch { // 4 - 4
                    4: 26
              default: 27
          }
        26: .line 350
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams int int org.openjdk.jmh.runner.options.TimeValue java.util.concurrent.CountDownLatch java.util.concurrent.CountDownLatch java.util.List org.openjdk.jmh.runner.InfraControl org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] long java.util.List java.util.concurrent.CompletionService
      StackMap stack:
            goto 33
        27: .line 353
      StackMap locals:
      StackMap stack:
            aload 14 /* srv */
            aload 5 /* runtime */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual org.openjdk.jmh.runner.options.TimeValue.convertTo:(Ljava/util/concurrent/TimeUnit;)J
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface java.util.concurrent.CompletionService.poll:(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future;
            astore 15 /* failing */
        start local 15 // java.util.concurrent.Future failing
        28: .line 354
            aload 15 /* failing */
            ifnull 33
        29: .line 358
            aload 13 /* completed */
            aload 15 /* failing */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        30: .line 359
            invokestatic java.lang.System.nanoTime:()J
            lstore 11 /* waitDeadline */
        end local 15 // java.util.concurrent.Future failing
        31: .line 361
            goto 33
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        32: pop
        33: .line 367
      StackMap locals:
      StackMap stack:
            aload 9 /* control */
            invokevirtual org.openjdk.jmh.runner.InfraControl.announceDone:()V
        34: .line 370
            aload 9 /* control */
            invokevirtual org.openjdk.jmh.runner.InfraControl.awaitWarmdownReady:()V
        35: .line 373
            goto 52
        36: .line 375
      StackMap locals:
      StackMap stack:
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            ldc 100
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            lload 11 /* waitDeadline */
            invokestatic java.lang.System.nanoTime:()J
            lsub
            invokestatic java.lang.Math.max:(JJ)J
            lstore 15 /* waitFor */
        start local 15 // long waitFor
        37: .line 376
            aload 14 /* srv */
            lload 15 /* waitFor */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface java.util.concurrent.CompletionService.poll:(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future;
            astore 17 /* fr */
        start local 17 // java.util.concurrent.Future fr
        38: .line 377
            aload 17 /* fr */
            ifnonnull 48
        39: .line 379
            aload 0 /* this */
            getfield org.openjdk.jmh.runner.BenchmarkHandler.out:Lorg/openjdk/jmh/runner/format/OutputFormat;
            ldc "(*interrupt*) "
            invokeinterface org.openjdk.jmh.runner.format.OutputFormat.print:(Ljava/lang/String;)V
        40: .line 380
            aload 10 /* runners */
            dup
            astore 21
            arraylength
            istore 20
            iconst_0
            istore 19
            goto 46
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams int int org.openjdk.jmh.runner.options.TimeValue java.util.concurrent.CountDownLatch java.util.concurrent.CountDownLatch java.util.List org.openjdk.jmh.runner.InfraControl org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] long java.util.List java.util.concurrent.CompletionService long java.util.concurrent.Future top int int org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[]
      StackMap stack:
        41: aload 21
            iload 19
            aaload
            astore 18 /* task */
        start local 18 // org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask task
        42: .line 381
            aload 18 /* task */
            getfield org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask.runner:Ljava/lang/Thread;
            astore 22 /* runner */
        start local 22 // java.lang.Thread runner
        43: .line 382
            aload 22 /* runner */
            ifnull 45
        44: .line 383
            aload 22 /* runner */
            invokevirtual java.lang.Thread.interrupt:()V
        end local 22 // java.lang.Thread runner
        end local 18 // org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask task
        45: .line 380
      StackMap locals:
      StackMap stack:
            iinc 19 1
      StackMap locals:
      StackMap stack:
        46: iload 19
            iload 20
            if_icmplt 41
        47: .line 386
            goto 52
        48: .line 387
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams int int org.openjdk.jmh.runner.options.TimeValue java.util.concurrent.CountDownLatch java.util.concurrent.CountDownLatch java.util.List org.openjdk.jmh.runner.InfraControl org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] long java.util.List java.util.concurrent.CompletionService long java.util.concurrent.Future
      StackMap stack:
            aload 13 /* completed */
            aload 17 /* fr */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 17 // java.util.concurrent.Future fr
        end local 15 // long waitFor
        49: .line 389
            goto 52
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams int int org.openjdk.jmh.runner.options.TimeValue java.util.concurrent.CountDownLatch java.util.concurrent.CountDownLatch java.util.List org.openjdk.jmh.runner.InfraControl org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] long java.util.List java.util.concurrent.CompletionService
      StackMap stack: java.lang.InterruptedException
        50: astore 15 /* ex */
        start local 15 // java.lang.InterruptedException ex
        51: .line 390
            new org.openjdk.jmh.runner.BenchmarkException
            dup
            aload 15 /* ex */
            invokespecial org.openjdk.jmh.runner.BenchmarkException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 15 // java.lang.InterruptedException ex
        52: .line 373
      StackMap locals:
      StackMap stack:
            aload 13 /* completed */
            invokeinterface java.util.List.size:()I
            iload 4 /* numThreads */
            if_icmplt 36
        53: .line 396
            lconst_0
            lstore 15 /* allOps */
        start local 15 // long allOps
        54: .line 397
            lconst_0
            lstore 17 /* measuredOps */
        start local 17 // long measuredOps
        55: .line 399
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 19 /* errors */
        start local 19 // java.util.List errors
        56: .line 400
            aload 13 /* completed */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 21
            goto 70
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams int int org.openjdk.jmh.runner.options.TimeValue java.util.concurrent.CountDownLatch java.util.concurrent.CountDownLatch java.util.List org.openjdk.jmh.runner.InfraControl org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] long java.util.List java.util.concurrent.CompletionService long long java.util.List top java.util.Iterator
      StackMap stack:
        57: aload 21
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.concurrent.Future
            astore 20 /* fr */
        start local 20 // java.util.concurrent.Future fr
        58: .line 402
            aload 20 /* fr */
            invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
            checkcast org.openjdk.jmh.results.BenchmarkTaskResult
            astore 22 /* btr */
        start local 22 // org.openjdk.jmh.results.BenchmarkTaskResult btr
        59: .line 403
            aload 8 /* iterationResults */
            aload 22 /* btr */
            invokevirtual org.openjdk.jmh.results.BenchmarkTaskResult.getResults:()Ljava/util/Collection;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        60: .line 404
            lload 15 /* allOps */
            aload 22 /* btr */
            invokevirtual org.openjdk.jmh.results.BenchmarkTaskResult.getAllOps:()J
            ladd
            lstore 15 /* allOps */
        61: .line 405
            lload 17 /* measuredOps */
            aload 22 /* btr */
            invokevirtual org.openjdk.jmh.results.BenchmarkTaskResult.getMeasuredOps:()J
            ladd
            lstore 17 /* measuredOps */
        end local 22 // org.openjdk.jmh.results.BenchmarkTaskResult btr
        62: .line 406
            goto 70
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams int int org.openjdk.jmh.runner.options.TimeValue java.util.concurrent.CountDownLatch java.util.concurrent.CountDownLatch java.util.List org.openjdk.jmh.runner.InfraControl org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] long java.util.List java.util.concurrent.CompletionService long long java.util.List java.util.concurrent.Future java.util.Iterator
      StackMap stack: java.util.concurrent.ExecutionException
        63: astore 22 /* ex */
        start local 22 // java.util.concurrent.ExecutionException ex
        64: .line 408
            aload 22 /* ex */
            invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            astore 23 /* cause */
        start local 23 // java.lang.Throwable cause
        65: .line 411
            aload 23 /* cause */
            instanceof org.openjdk.jmh.runner.FailureAssistException
            ifne 70
        66: .line 412
            aload 19 /* errors */
            aload 23 /* cause */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 23 // java.lang.Throwable cause
        end local 22 // java.util.concurrent.ExecutionException ex
        67: goto 70
        68: .line 414
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            astore 22 /* ex */
        start local 22 // java.lang.InterruptedException ex
        69: .line 416
            new org.openjdk.jmh.runner.BenchmarkException
            dup
            aload 22 /* ex */
            invokespecial org.openjdk.jmh.runner.BenchmarkException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 22 // java.lang.InterruptedException ex
        end local 20 // java.util.concurrent.Future fr
        70: .line 400
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams int int org.openjdk.jmh.runner.options.TimeValue java.util.concurrent.CountDownLatch java.util.concurrent.CountDownLatch java.util.List org.openjdk.jmh.runner.InfraControl org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] long java.util.List java.util.concurrent.CompletionService long long java.util.List top java.util.Iterator
      StackMap stack:
            aload 21
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 57
        71: .line 420
            new org.openjdk.jmh.results.IterationResult
            dup
            aload 1 /* benchmarkParams */
            aload 2 /* params */
            new org.openjdk.jmh.results.IterationResultMetaData
            dup
            lload 15 /* allOps */
            lload 17 /* measuredOps */
            invokespecial org.openjdk.jmh.results.IterationResultMetaData.<init>:(JJ)V
            invokespecial org.openjdk.jmh.results.IterationResult.<init>:(Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;Lorg/openjdk/jmh/results/IterationResultMetaData;)V
            astore 20 /* result */
        start local 20 // org.openjdk.jmh.results.IterationResult result
        72: .line 421
            aload 20 /* result */
            aload 8 /* iterationResults */
            invokevirtual org.openjdk.jmh.results.IterationResult.addResults:(Ljava/util/Collection;)V
        73: .line 425
            aload 0 /* this */
            aload 1 /* benchmarkParams */
            aload 2 /* params */
            aload 20 /* result */
            invokevirtual org.openjdk.jmh.runner.BenchmarkHandler.stopProfilers:(Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;Lorg/openjdk/jmh/results/IterationResult;)V
        74: .line 427
            aload 19 /* errors */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 76
        75: .line 428
            new org.openjdk.jmh.runner.BenchmarkException
            dup
            ldc "Benchmark error during the run"
            aload 19 /* errors */
            invokespecial org.openjdk.jmh.runner.BenchmarkException.<init>:(Ljava/lang/String;Ljava/util/Collection;)V
            athrow
        76: .line 431
      StackMap locals: org.openjdk.jmh.runner.BenchmarkHandler org.openjdk.jmh.infra.BenchmarkParams org.openjdk.jmh.infra.IterationParams int int org.openjdk.jmh.runner.options.TimeValue java.util.concurrent.CountDownLatch java.util.concurrent.CountDownLatch java.util.List org.openjdk.jmh.runner.InfraControl org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] long java.util.List java.util.concurrent.CompletionService long long java.util.List org.openjdk.jmh.results.IterationResult
      StackMap stack:
            aload 20 /* result */
            areturn
        end local 20 // org.openjdk.jmh.results.IterationResult result
        end local 19 // java.util.List errors
        end local 17 // long measuredOps
        end local 15 // long allOps
        end local 14 // java.util.concurrent.CompletionService srv
        end local 13 // java.util.List completed
        end local 11 // long waitDeadline
        end local 10 // org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask[] runners
        end local 9 // org.openjdk.jmh.runner.InfraControl control
        end local 8 // java.util.List iterationResults
        end local 7 // java.util.concurrent.CountDownLatch preTearDownBarrier
        end local 6 // java.util.concurrent.CountDownLatch preSetupBarrier
        end local 5 // org.openjdk.jmh.runner.options.TimeValue runtime
        end local 4 // int numThreads
        end local 3 // boolean last
        end local 2 // org.openjdk.jmh.infra.IterationParams params
        end local 1 // org.openjdk.jmh.infra.BenchmarkParams benchmarkParams
        end local 0 // org.openjdk.jmh.runner.BenchmarkHandler this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   77     0                this  Lorg/openjdk/jmh/runner/BenchmarkHandler;
            0   77     1     benchmarkParams  Lorg/openjdk/jmh/infra/BenchmarkParams;
            0   77     2              params  Lorg/openjdk/jmh/infra/IterationParams;
            0   77     3                last  Z
            1   77     4          numThreads  I
            2   77     5             runtime  Lorg/openjdk/jmh/runner/options/TimeValue;
            3   77     6     preSetupBarrier  Ljava/util/concurrent/CountDownLatch;
            4   77     7  preTearDownBarrier  Ljava/util/concurrent/CountDownLatch;
            5   77     8    iterationResults  Ljava/util/List<Lorg/openjdk/jmh/results/Result;>;
            9   77     9             control  Lorg/openjdk/jmh/runner/InfraControl;
           10   77    10             runners  [Lorg/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask;
           11   15    11                   i  I
           16   77    11        waitDeadline  J
           18   77    13           completed  Ljava/util/List<Ljava/util/concurrent/Future<Lorg/openjdk/jmh/results/BenchmarkTaskResult;>;>;
           19   77    14                 srv  Ljava/util/concurrent/CompletionService<Lorg/openjdk/jmh/results/BenchmarkTaskResult;>;
           21   22    15              runner  Lorg/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask;
           28   31    15             failing  Ljava/util/concurrent/Future<Lorg/openjdk/jmh/results/BenchmarkTaskResult;>;
           37   49    15             waitFor  J
           38   49    17                  fr  Ljava/util/concurrent/Future<Lorg/openjdk/jmh/results/BenchmarkTaskResult;>;
           42   45    18                task  Lorg/openjdk/jmh/runner/BenchmarkHandler$BenchmarkTask;
           43   45    22              runner  Ljava/lang/Thread;
           51   52    15                  ex  Ljava/lang/InterruptedException;
           54   77    15              allOps  J
           55   77    17         measuredOps  J
           56   77    19              errors  Ljava/util/List<Ljava/lang/Throwable;>;
           58   70    20                  fr  Ljava/util/concurrent/Future<Lorg/openjdk/jmh/results/BenchmarkTaskResult;>;
           59   62    22                 btr  Lorg/openjdk/jmh/results/BenchmarkTaskResult;
           64   67    22                  ex  Ljava/util/concurrent/ExecutionException;
           65   67    23               cause  Ljava/lang/Throwable;
           69   70    22                  ex  Ljava/lang/InterruptedException;
           72   77    20              result  Lorg/openjdk/jmh/results/IterationResult;
      Exception table:
        from    to  target  type
          27    31      32  Class java.lang.InterruptedException
          36    49      50  Class java.lang.InterruptedException
          58    62      63  Class java.util.concurrent.ExecutionException
          58    62      68  Class java.lang.InterruptedException
    MethodParameters:
                 Name  Flags
      benchmarkParams  
      params           
      last             

  static int[] $SWITCH_TABLE$org$openjdk$jmh$annotations$Mode();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 49
            getstatic org.openjdk.jmh.runner.BenchmarkHandler.$SWITCH_TABLE$org$openjdk$jmh$annotations$Mode:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.openjdk.jmh.annotations.Mode.values:()[Lorg/openjdk/jmh/annotations/Mode;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.openjdk.jmh.annotations.Mode.All:Lorg/openjdk/jmh/annotations/Mode;
            invokevirtual org.openjdk.jmh.annotations.Mode.ordinal:()I
            iconst_5
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.openjdk.jmh.annotations.Mode.AverageTime:Lorg/openjdk/jmh/annotations/Mode;
            invokevirtual org.openjdk.jmh.annotations.Mode.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic org.openjdk.jmh.annotations.Mode.SampleTime:Lorg/openjdk/jmh/annotations/Mode;
            invokevirtual org.openjdk.jmh.annotations.Mode.ordinal:()I
            iconst_3
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic org.openjdk.jmh.annotations.Mode.SingleShotTime:Lorg/openjdk/jmh/annotations/Mode;
            invokevirtual org.openjdk.jmh.annotations.Mode.ordinal:()I
            iconst_4
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic org.openjdk.jmh.annotations.Mode.Throughput:Lorg/openjdk/jmh/annotations/Mode;
            invokevirtual org.openjdk.jmh.annotations.Mode.ordinal:()I
            iconst_1
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            dup
            putstatic org.openjdk.jmh.runner.BenchmarkHandler.$SWITCH_TABLE$org$openjdk$jmh$annotations$Mode:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
}
SourceFile: "BenchmarkHandler.java"
NestMembers:
  org.openjdk.jmh.runner.BenchmarkHandler$1  org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask  org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType  org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType$1  org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType$2  org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType$3  org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType$4  org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType$5  org.openjdk.jmh.runner.BenchmarkHandler$ThreadData
InnerClasses:
  org.openjdk.jmh.runner.BenchmarkHandler$1
  BenchmarkTask = org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask of org.openjdk.jmh.runner.BenchmarkHandler
  private abstract ExecutorType = org.openjdk.jmh.runner.BenchmarkHandler$ExecutorType of org.openjdk.jmh.runner.BenchmarkHandler
  private ThreadData = org.openjdk.jmh.runner.BenchmarkHandler$ThreadData of org.openjdk.jmh.runner.BenchmarkHandler