public class org.openjdk.jmh.profile.PausesProfiler implements org.openjdk.jmh.profile.InternalProfiler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.openjdk.jmh.profile.PausesProfiler
  super_class: java.lang.Object
{
  private org.openjdk.jmh.profile.PausesProfiler$Ticker ticker;
    descriptor: Lorg/openjdk/jmh/profile/PausesProfiler$Ticker;
    flags: (0x0002) ACC_PRIVATE

  private org.openjdk.jmh.util.SampleBuffer buffer;
    descriptor: Lorg/openjdk/jmh/util/SampleBuffer;
    flags: (0x0002) ACC_PRIVATE

  private long expectedNs;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private long thresh;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  public java.lang.String getDescription();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.openjdk.jmh.profile.PausesProfiler this
         0: .line 53
            ldc "Pauses profiler"
            areturn
        end local 0 // org.openjdk.jmh.profile.PausesProfiler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/openjdk/jmh/profile/PausesProfiler;

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // org.openjdk.jmh.profile.PausesProfiler this
        start local 1 // java.lang.String initLine
         0: .line 56
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 57
            new joptsimple.OptionParser
            dup
            invokespecial joptsimple.OptionParser.<init>:()V
            astore 2 /* parser */
        start local 2 // joptsimple.OptionParser parser
         2: .line 58
            aload 2 /* parser */
            new org.openjdk.jmh.profile.ProfilerOptionFormatter
            dup
            ldc Lorg/openjdk/jmh/profile/PausesProfiler;
            invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
            invokespecial org.openjdk.jmh.profile.ProfilerOptionFormatter.<init>:(Ljava/lang/String;)V
            invokevirtual joptsimple.OptionParser.formatHelpWith:(Ljoptsimple/HelpFormatter;)V
         3: .line 60
            aload 2 /* parser */
            ldc "period"
            ldc "Sampling period, in us. Smaller values improve accuracy, at the expense of more profiling overhead."
            invokevirtual joptsimple.OptionParser.accepts:(Ljava/lang/String;Ljava/lang/String;)Ljoptsimple/OptionSpecBuilder;
         4: .line 62
            invokevirtual joptsimple.OptionSpecBuilder.withRequiredArg:()Ljoptsimple/ArgumentAcceptingOptionSpec;
            getstatic org.openjdk.jmh.runner.options.IntegerValueConverter.POSITIVE:Lorg/openjdk/jmh/runner/options/IntegerValueConverter;
            invokevirtual joptsimple.ArgumentAcceptingOptionSpec.withValuesConvertedBy:(Ljoptsimple/ValueConverter;)Ljoptsimple/ArgumentAcceptingOptionSpec;
            ldc "int"
            invokevirtual joptsimple.ArgumentAcceptingOptionSpec.describedAs:(Ljava/lang/String;)Ljoptsimple/ArgumentAcceptingOptionSpec;
            bipush 50
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_0
            anewarray java.lang.Integer
            invokevirtual joptsimple.ArgumentAcceptingOptionSpec.defaultsTo:(Ljava/lang/Object;[Ljava/lang/Object;)Ljoptsimple/ArgumentAcceptingOptionSpec;
         5: .line 60
            astore 3 /* optSamplePeriod */
        start local 3 // joptsimple.OptionSpec optSamplePeriod
         6: .line 64
            aload 2 /* parser */
            ldc "threshold"
            ldc "Threshold to filter pauses, in us. If unset, the threshold is figured during the initial calibration."
            invokevirtual joptsimple.OptionParser.accepts:(Ljava/lang/String;Ljava/lang/String;)Ljoptsimple/OptionSpecBuilder;
         7: .line 66
            invokevirtual joptsimple.OptionSpecBuilder.withRequiredArg:()Ljoptsimple/ArgumentAcceptingOptionSpec;
            getstatic org.openjdk.jmh.runner.options.IntegerValueConverter.POSITIVE:Lorg/openjdk/jmh/runner/options/IntegerValueConverter;
            invokevirtual joptsimple.ArgumentAcceptingOptionSpec.withValuesConvertedBy:(Ljoptsimple/ValueConverter;)Ljoptsimple/ArgumentAcceptingOptionSpec;
            ldc "int"
            invokevirtual joptsimple.ArgumentAcceptingOptionSpec.describedAs:(Ljava/lang/String;)Ljoptsimple/ArgumentAcceptingOptionSpec;
            iconst_m1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            iconst_0
            anewarray java.lang.Integer
            invokevirtual joptsimple.ArgumentAcceptingOptionSpec.defaultsTo:(Ljava/lang/Object;[Ljava/lang/Object;)Ljoptsimple/ArgumentAcceptingOptionSpec;
         8: .line 64
            astore 4 /* optThreshold */
        start local 4 // joptsimple.OptionSpec optThreshold
         9: .line 68
            aload 1 /* initLine */
            aload 2 /* parser */
            invokestatic org.openjdk.jmh.profile.ProfilerUtils.parseInitLine:(Ljava/lang/String;Ljoptsimple/OptionParser;)Ljoptsimple/OptionSet;
            astore 5 /* set */
        start local 5 // joptsimple.OptionSet set
        10: .line 71
            aload 0 /* this */
            getstatic java.util.concurrent.TimeUnit.MICROSECONDS:Ljava/util/concurrent/TimeUnit;
            aload 5 /* set */
            aload 3 /* optSamplePeriod */
            invokevirtual joptsimple.OptionSet.valueOf:(Ljoptsimple/OptionSpec;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            i2l
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            putfield org.openjdk.jmh.profile.PausesProfiler.expectedNs:J
        11: .line 72
            aload 5 /* set */
            aload 4 /* optThreshold */
            invokevirtual joptsimple.OptionSet.valueOf:(Ljoptsimple/OptionSpec;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            iconst_m1
            if_icmpeq 14
        12: .line 73
            aload 0 /* this */
            getstatic java.util.concurrent.TimeUnit.MICROSECONDS:Ljava/util/concurrent/TimeUnit;
            aload 5 /* set */
            aload 4 /* optThreshold */
            invokevirtual joptsimple.OptionSet.valueOf:(Ljoptsimple/OptionSpec;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            i2l
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            putfield org.openjdk.jmh.profile.PausesProfiler.thresh:J
        13: .line 74
            goto 18
        14: .line 75
      StackMap locals: org.openjdk.jmh.profile.PausesProfiler java.lang.String joptsimple.OptionParser joptsimple.OptionSpec joptsimple.OptionSpec joptsimple.OptionSet
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.openjdk.jmh.profile.PausesProfiler.calibrate:()J
            putfield org.openjdk.jmh.profile.PausesProfiler.thresh:J
        15: .line 77
            goto 18
      StackMap locals:
      StackMap stack: joptsimple.OptionException
        16: astore 6 /* e */
        start local 6 // joptsimple.OptionException e
        17: .line 78
            new org.openjdk.jmh.profile.ProfilerException
            dup
            aload 6 /* e */
            invokevirtual joptsimple.OptionException.getMessage:()Ljava/lang/String;
            invokespecial org.openjdk.jmh.profile.ProfilerException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // joptsimple.OptionException e
        18: .line 80
      StackMap locals:
      StackMap stack:
            return
        end local 5 // joptsimple.OptionSet set
        end local 4 // joptsimple.OptionSpec optThreshold
        end local 3 // joptsimple.OptionSpec optSamplePeriod
        end local 2 // joptsimple.OptionParser parser
        end local 1 // java.lang.String initLine
        end local 0 // org.openjdk.jmh.profile.PausesProfiler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   19     0             this  Lorg/openjdk/jmh/profile/PausesProfiler;
            0   19     1         initLine  Ljava/lang/String;
            2   19     2           parser  Ljoptsimple/OptionParser;
            6   19     3  optSamplePeriod  Ljoptsimple/OptionSpec<Ljava/lang/Integer;>;
            9   19     4     optThreshold  Ljoptsimple/OptionSpec<Ljava/lang/Integer;>;
           10   19     5              set  Ljoptsimple/OptionSet;
           17   18     6                e  Ljoptsimple/OptionException;
      Exception table:
        from    to  target  type
          10    15      16  Class joptsimple.OptionException
    Exceptions:
      throws org.openjdk.jmh.profile.ProfilerException
    MethodParameters:
          Name  Flags
      initLine  

  public void beforeIteration(org.openjdk.jmh.infra.BenchmarkParams, org.openjdk.jmh.infra.IterationParams);
    descriptor: (Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.openjdk.jmh.profile.PausesProfiler this
        start local 1 // org.openjdk.jmh.infra.BenchmarkParams benchmarkParams
        start local 2 // org.openjdk.jmh.infra.IterationParams iterationParams
         0: .line 84
            aload 0 /* this */
            new org.openjdk.jmh.util.SampleBuffer
            dup
            invokespecial org.openjdk.jmh.util.SampleBuffer.<init>:()V
            putfield org.openjdk.jmh.profile.PausesProfiler.buffer:Lorg/openjdk/jmh/util/SampleBuffer;
         1: .line 85
            aload 0 /* this */
            new org.openjdk.jmh.profile.PausesProfiler$Ticker
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield org.openjdk.jmh.profile.PausesProfiler.buffer:Lorg/openjdk/jmh/util/SampleBuffer;
            invokespecial org.openjdk.jmh.profile.PausesProfiler$Ticker.<init>:(Lorg/openjdk/jmh/profile/PausesProfiler;Lorg/openjdk/jmh/util/SampleBuffer;)V
            putfield org.openjdk.jmh.profile.PausesProfiler.ticker:Lorg/openjdk/jmh/profile/PausesProfiler$Ticker;
         2: .line 86
            aload 0 /* this */
            getfield org.openjdk.jmh.profile.PausesProfiler.ticker:Lorg/openjdk/jmh/profile/PausesProfiler$Ticker;
            invokevirtual org.openjdk.jmh.profile.PausesProfiler$Ticker.start:()V
         3: .line 87
            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.profile.PausesProfiler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0             this  Lorg/openjdk/jmh/profile/PausesProfiler;
            0    4     1  benchmarkParams  Lorg/openjdk/jmh/infra/BenchmarkParams;
            0    4     2  iterationParams  Lorg/openjdk/jmh/infra/IterationParams;
    MethodParameters:
                 Name  Flags
      benchmarkParams  
      iterationParams  

  public java.util.Collection<? extends org.openjdk.jmh.results.Result> afterIteration(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;)Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.openjdk.jmh.profile.PausesProfiler 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 result
         0: .line 91
            aload 0 /* this */
            getfield org.openjdk.jmh.profile.PausesProfiler.ticker:Lorg/openjdk/jmh/profile/PausesProfiler$Ticker;
            invokevirtual org.openjdk.jmh.profile.PausesProfiler$Ticker.interrupt:()V
         1: .line 93
            aload 0 /* this */
            getfield org.openjdk.jmh.profile.PausesProfiler.ticker:Lorg/openjdk/jmh/profile/PausesProfiler$Ticker;
            invokevirtual org.openjdk.jmh.profile.PausesProfiler$Ticker.join:()V
         2: .line 94
            goto 4
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         3: pop
         4: .line 98
      StackMap locals:
      StackMap stack:
            new org.openjdk.jmh.profile.PausesProfiler$PausesProfilerResult
            dup
            aload 0 /* this */
            getfield org.openjdk.jmh.profile.PausesProfiler.buffer:Lorg/openjdk/jmh/util/SampleBuffer;
            invokespecial org.openjdk.jmh.profile.PausesProfiler$PausesProfilerResult.<init>:(Lorg/openjdk/jmh/util/SampleBuffer;)V
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 3 // org.openjdk.jmh.results.IterationResult result
        end local 2 // org.openjdk.jmh.infra.IterationParams iterationParams
        end local 1 // org.openjdk.jmh.infra.BenchmarkParams benchmarkParams
        end local 0 // org.openjdk.jmh.profile.PausesProfiler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lorg/openjdk/jmh/profile/PausesProfiler;
            0    5     1  benchmarkParams  Lorg/openjdk/jmh/infra/BenchmarkParams;
            0    5     2  iterationParams  Lorg/openjdk/jmh/infra/IterationParams;
            0    5     3           result  Lorg/openjdk/jmh/results/IterationResult;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.InterruptedException
    Signature: (Lorg/openjdk/jmh/infra/BenchmarkParams;Lorg/openjdk/jmh/infra/IterationParams;Lorg/openjdk/jmh/results/IterationResult;)Ljava/util/Collection<+Lorg/openjdk/jmh/results/Result;>;
    MethodParameters:
                 Name  Flags
      benchmarkParams  
      iterationParams  
      result           

  private long calibrate();
    descriptor: ()J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=11, args_size=1
        start local 0 // org.openjdk.jmh.profile.PausesProfiler this
         0: .line 102
            new org.openjdk.jmh.util.SampleBuffer
            dup
            invokespecial org.openjdk.jmh.util.SampleBuffer.<init>:()V
            astore 1 /* buf */
        start local 1 // org.openjdk.jmh.util.SampleBuffer buf
         1: .line 104
            invokestatic java.lang.System.nanoTime:()J
            lstore 2 /* lastTime */
        start local 2 // long lastTime
         2: .line 105
            iconst_0
            istore 4 /* c */
        start local 4 // int c
         3: goto 12
         4: .line 106
      StackMap locals: org.openjdk.jmh.util.SampleBuffer long int
      StackMap stack:
            aload 0 /* this */
            getfield org.openjdk.jmh.profile.PausesProfiler.expectedNs:J
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(J)V
         5: .line 107
            invokestatic java.lang.System.nanoTime:()J
            lstore 5 /* time */
        start local 5 // long time
         6: .line 109
            lload 5 /* time */
            lload 2 /* lastTime */
            lsub
            lstore 7 /* actualNs */
        start local 7 // long actualNs
         7: .line 110
            lload 7 /* actualNs */
            aload 0 /* this */
            getfield org.openjdk.jmh.profile.PausesProfiler.expectedNs:J
            lsub
            lstore 9 /* delta */
        start local 9 // long delta
         8: .line 111
            lload 9 /* delta */
            lconst_0
            lcmp
            ifle 10
         9: .line 112
            aload 1 /* buf */
            lload 9 /* delta */
            invokevirtual org.openjdk.jmh.util.SampleBuffer.add:(J)V
        10: .line 114
      StackMap locals: long long long
      StackMap stack:
            lload 5 /* time */
            lstore 2 /* lastTime */
        end local 9 // long delta
        end local 7 // long actualNs
        end local 5 // long time
        11: .line 105
            iinc 4 /* c */ 1
      StackMap locals:
      StackMap stack:
        12: iload 4 /* c */
            sipush 10000
            if_icmplt 4
        end local 4 // int c
        13: .line 120
            aload 1 /* buf */
            dconst_1
            invokevirtual org.openjdk.jmh.util.SampleBuffer.getStatistics:(D)Lorg/openjdk/jmh/util/Statistics;
            astore 4 /* stat */
        start local 4 // org.openjdk.jmh.util.Statistics stat
        14: .line 121
            aload 4 /* stat */
            invokeinterface org.openjdk.jmh.util.Statistics.getMax:()D
            d2l
            lreturn
        end local 4 // org.openjdk.jmh.util.Statistics stat
        end local 2 // long lastTime
        end local 1 // org.openjdk.jmh.util.SampleBuffer buf
        end local 0 // org.openjdk.jmh.profile.PausesProfiler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Lorg/openjdk/jmh/profile/PausesProfiler;
            1   15     1       buf  Lorg/openjdk/jmh/util/SampleBuffer;
            2   15     2  lastTime  J
            3   13     4         c  I
            6   11     5      time  J
            7   11     7  actualNs  J
            8   11     9     delta  J
           14   15     4      stat  Lorg/openjdk/jmh/util/Statistics;
}
SourceFile: "PausesProfiler.java"
NestMembers:
  org.openjdk.jmh.profile.PausesProfiler$PausesProfilerResult  org.openjdk.jmh.profile.PausesProfiler$PausesProfilerResult$JoiningAggregator  org.openjdk.jmh.profile.PausesProfiler$Ticker
InnerClasses:
  PausesProfilerResult = org.openjdk.jmh.profile.PausesProfiler$PausesProfilerResult of org.openjdk.jmh.profile.PausesProfiler
  private Ticker = org.openjdk.jmh.profile.PausesProfiler$Ticker of org.openjdk.jmh.profile.PausesProfiler