public class org.springframework.util.StopWatch
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.util.StopWatch
  super_class: java.lang.Object
{
  private final java.lang.String id;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean keepTaskList;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private final java.util.List<org.springframework.util.StopWatch$TaskInfo> taskList;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/springframework/util/StopWatch$TaskInfo;>;

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

  private java.lang.String currentTaskName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private org.springframework.util.StopWatch$TaskInfo lastTaskInfo;
    descriptor: Lorg/springframework/util/StopWatch$TaskInfo;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private int taskCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

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

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 81
            aload 0 /* this */
            ldc ""
            invokespecial org.springframework.util.StopWatch.<init>:(Ljava/lang/String;)V
         1: .line 82
            return
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/util/StopWatch;

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.util.StopWatch this
        start local 1 // java.lang.String id
         0: .line 91
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 56
            aload 0 /* this */
            iconst_1
            putfield org.springframework.util.StopWatch.keepTaskList:Z
         2: .line 58
            aload 0 /* this */
            new java.util.ArrayList
            dup
            iconst_1
            invokespecial java.util.ArrayList.<init>:(I)V
            putfield org.springframework.util.StopWatch.taskList:Ljava/util/List;
         3: .line 92
            aload 0 /* this */
            aload 1 /* id */
            putfield org.springframework.util.StopWatch.id:Ljava/lang/String;
         4: .line 93
            return
        end local 1 // java.lang.String id
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/util/StopWatch;
            0    5     1    id  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      id    

  public java.lang.String getId();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 103
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.id:Ljava/lang/String;
            areturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/util/StopWatch;

  public void setKeepTaskList(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.util.StopWatch this
        start local 1 // boolean keepTaskList
         0: .line 114
            aload 0 /* this */
            iload 1 /* keepTaskList */
            putfield org.springframework.util.StopWatch.keepTaskList:Z
         1: .line 115
            return
        end local 1 // boolean keepTaskList
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/springframework/util/StopWatch;
            0    2     1  keepTaskList  Z
    MethodParameters:
              Name  Flags
      keepTaskList  

  public void start();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 126
            aload 0 /* this */
            ldc ""
            invokevirtual org.springframework.util.StopWatch.start:(Ljava/lang/String;)V
         1: .line 127
            return
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/util/StopWatch;
    Exceptions:
      throws java.lang.IllegalStateException

  public void start(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.util.StopWatch this
        start local 1 // java.lang.String taskName
         0: .line 138
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.currentTaskName:Ljava/lang/String;
            ifnull 2
         1: .line 139
            new java.lang.IllegalStateException
            dup
            ldc "Can't start StopWatch: it's already running"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* taskName */
            putfield org.springframework.util.StopWatch.currentTaskName:Ljava/lang/String;
         3: .line 142
            aload 0 /* this */
            invokestatic java.lang.System.nanoTime:()J
            putfield org.springframework.util.StopWatch.startTimeNanos:J
         4: .line 143
            return
        end local 1 // java.lang.String taskName
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/springframework/util/StopWatch;
            0    5     1  taskName  Ljava/lang/String;
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
          Name  Flags
      taskName  

  public void stop();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 153
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.currentTaskName:Ljava/lang/String;
            ifnonnull 2
         1: .line 154
            new java.lang.IllegalStateException
            dup
            ldc "Can't stop StopWatch: it's not running"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 156
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.nanoTime:()J
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.startTimeNanos:J
            lsub
            lstore 1 /* lastTime */
        start local 1 // long lastTime
         3: .line 157
            aload 0 /* this */
            dup
            getfield org.springframework.util.StopWatch.totalTimeNanos:J
            lload 1 /* lastTime */
            ladd
            putfield org.springframework.util.StopWatch.totalTimeNanos:J
         4: .line 158
            aload 0 /* this */
            new org.springframework.util.StopWatch$TaskInfo
            dup
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.currentTaskName:Ljava/lang/String;
            lload 1 /* lastTime */
            invokespecial org.springframework.util.StopWatch$TaskInfo.<init>:(Ljava/lang/String;J)V
            putfield org.springframework.util.StopWatch.lastTaskInfo:Lorg/springframework/util/StopWatch$TaskInfo;
         5: .line 159
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.keepTaskList:Z
            ifeq 7
         6: .line 160
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.taskList:Ljava/util/List;
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.lastTaskInfo:Lorg/springframework/util/StopWatch$TaskInfo;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 162
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.springframework.util.StopWatch.taskCount:I
            iconst_1
            iadd
            putfield org.springframework.util.StopWatch.taskCount:I
         8: .line 163
            aload 0 /* this */
            aconst_null
            putfield org.springframework.util.StopWatch.currentTaskName:Ljava/lang/String;
         9: .line 164
            return
        end local 1 // long lastTime
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lorg/springframework/util/StopWatch;
            3   10     1  lastTime  J
    Exceptions:
      throws java.lang.IllegalStateException

  public boolean isRunning();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 171
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.currentTaskName:Ljava/lang/String;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/util/StopWatch;

  public java.lang.String currentTaskName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 181
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.currentTaskName:Ljava/lang/String;
            areturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/util/StopWatch;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public long getLastTaskTimeNanos();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 190
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.lastTaskInfo:Lorg/springframework/util/StopWatch$TaskInfo;
            ifnonnull 2
         1: .line 191
            new java.lang.IllegalStateException
            dup
            ldc "No tasks run: can't get last task interval"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 193
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.lastTaskInfo:Lorg/springframework/util/StopWatch$TaskInfo;
            invokevirtual org.springframework.util.StopWatch$TaskInfo.getTimeNanos:()J
            lreturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/util/StopWatch;
    Exceptions:
      throws java.lang.IllegalStateException

  public long getLastTaskTimeMillis();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 201
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.lastTaskInfo:Lorg/springframework/util/StopWatch$TaskInfo;
            ifnonnull 2
         1: .line 202
            new java.lang.IllegalStateException
            dup
            ldc "No tasks run: can't get last task interval"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 204
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.lastTaskInfo:Lorg/springframework/util/StopWatch$TaskInfo;
            invokevirtual org.springframework.util.StopWatch$TaskInfo.getTimeMillis:()J
            lreturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/util/StopWatch;
    Exceptions:
      throws java.lang.IllegalStateException

  public java.lang.String getLastTaskName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 211
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.lastTaskInfo:Lorg/springframework/util/StopWatch$TaskInfo;
            ifnonnull 2
         1: .line 212
            new java.lang.IllegalStateException
            dup
            ldc "No tasks run: can't get last task name"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 214
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.lastTaskInfo:Lorg/springframework/util/StopWatch$TaskInfo;
            invokevirtual org.springframework.util.StopWatch$TaskInfo.getTaskName:()Ljava/lang/String;
            areturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/util/StopWatch;
    Exceptions:
      throws java.lang.IllegalStateException

  public org.springframework.util.StopWatch$TaskInfo getLastTaskInfo();
    descriptor: ()Lorg/springframework/util/StopWatch$TaskInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 221
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.lastTaskInfo:Lorg/springframework/util/StopWatch$TaskInfo;
            ifnonnull 2
         1: .line 222
            new java.lang.IllegalStateException
            dup
            ldc "No tasks run: can't get last task info"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 224
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.lastTaskInfo:Lorg/springframework/util/StopWatch$TaskInfo;
            areturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/util/StopWatch;
    Exceptions:
      throws java.lang.IllegalStateException

  public long getTotalTimeNanos();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 235
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.totalTimeNanos:J
            lreturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/util/StopWatch;

  public long getTotalTimeMillis();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 244
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.totalTimeNanos:J
            invokestatic org.springframework.util.StopWatch.nanosToMillis:(J)J
            lreturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/util/StopWatch;

  public double getTotalTimeSeconds();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 253
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.totalTimeNanos:J
            invokestatic org.springframework.util.StopWatch.nanosToSeconds:(J)D
            dreturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/util/StopWatch;

  public int getTaskCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 260
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.taskCount:I
            ireturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/util/StopWatch;

  public org.springframework.util.StopWatch$TaskInfo[] getTaskInfo();
    descriptor: ()[Lorg/springframework/util/StopWatch$TaskInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 267
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.keepTaskList:Z
            ifne 2
         1: .line 268
            new java.lang.UnsupportedOperationException
            dup
            ldc "Task info is not being kept!"
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.taskList:Ljava/util/List;
            iconst_0
            anewarray org.springframework.util.StopWatch$TaskInfo
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast org.springframework.util.StopWatch$TaskInfo[]
            areturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/util/StopWatch;

  public java.lang.String shortSummary();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 278
            new java.lang.StringBuilder
            dup
            ldc "StopWatch '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.springframework.util.StopWatch.getId:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "': running time = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.springframework.util.StopWatch.getTotalTimeNanos:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " ns"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/util/StopWatch;

  public java.lang.String prettyPrint();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 287
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.springframework.util.StopWatch.shortSummary:()Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 288
            aload 1 /* sb */
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         2: .line 289
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.keepTaskList:Z
            ifne 5
         3: .line 290
            aload 1 /* sb */
            ldc "No task info kept"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         4: .line 291
            goto 21
         5: .line 293
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 1 /* sb */
            ldc "---------------------------------------------\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 294
            aload 1 /* sb */
            ldc "ns         %     Task name\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         7: .line 295
            aload 1 /* sb */
            ldc "---------------------------------------------\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 296
            invokestatic java.text.NumberFormat.getNumberInstance:()Ljava/text/NumberFormat;
            astore 2 /* nf */
        start local 2 // java.text.NumberFormat nf
         9: .line 297
            aload 2 /* nf */
            bipush 9
            invokevirtual java.text.NumberFormat.setMinimumIntegerDigits:(I)V
        10: .line 298
            aload 2 /* nf */
            iconst_0
            invokevirtual java.text.NumberFormat.setGroupingUsed:(Z)V
        11: .line 299
            invokestatic java.text.NumberFormat.getPercentInstance:()Ljava/text/NumberFormat;
            astore 3 /* pf */
        start local 3 // java.text.NumberFormat pf
        12: .line 300
            aload 3 /* pf */
            iconst_3
            invokevirtual java.text.NumberFormat.setMinimumIntegerDigits:(I)V
        13: .line 301
            aload 3 /* pf */
            iconst_0
            invokevirtual java.text.NumberFormat.setGroupingUsed:(Z)V
        14: .line 302
            aload 0 /* this */
            invokevirtual org.springframework.util.StopWatch.getTaskInfo:()[Lorg/springframework/util/StopWatch$TaskInfo;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 20
      StackMap locals: org.springframework.util.StopWatch java.lang.StringBuilder java.text.NumberFormat java.text.NumberFormat top int int org.springframework.util.StopWatch$TaskInfo[]
      StackMap stack:
        15: aload 7
            iload 5
            aaload
            astore 4 /* task */
        start local 4 // org.springframework.util.StopWatch$TaskInfo task
        16: .line 303
            aload 1 /* sb */
            aload 2 /* nf */
            aload 4 /* task */
            invokevirtual org.springframework.util.StopWatch$TaskInfo.getTimeNanos:()J
            invokevirtual java.text.NumberFormat.format:(J)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "  "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        17: .line 304
            aload 1 /* sb */
            aload 3 /* pf */
            aload 4 /* task */
            invokevirtual org.springframework.util.StopWatch$TaskInfo.getTimeNanos:()J
            l2d
            aload 0 /* this */
            invokevirtual org.springframework.util.StopWatch.getTotalTimeNanos:()J
            l2d
            ddiv
            invokevirtual java.text.NumberFormat.format:(D)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "  "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        18: .line 305
            aload 1 /* sb */
            aload 4 /* task */
            invokevirtual org.springframework.util.StopWatch$TaskInfo.getTaskName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 4 // org.springframework.util.StopWatch$TaskInfo task
        19: .line 302
            iinc 5 1
      StackMap locals:
      StackMap stack:
        20: iload 5
            iload 6
            if_icmplt 15
        end local 3 // java.text.NumberFormat pf
        end local 2 // java.text.NumberFormat nf
        21: .line 308
      StackMap locals: org.springframework.util.StopWatch java.lang.StringBuilder
      StackMap stack:
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   22     0  this  Lorg/springframework/util/StopWatch;
            1   22     1    sb  Ljava/lang/StringBuilder;
            9   21     2    nf  Ljava/text/NumberFormat;
           12   21     3    pf  Ljava/text/NumberFormat;
           16   19     4  task  Lorg/springframework/util/StopWatch$TaskInfo;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=1
        start local 0 // org.springframework.util.StopWatch this
         0: .line 318
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.springframework.util.StopWatch.shortSummary:()Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 319
            aload 0 /* this */
            getfield org.springframework.util.StopWatch.keepTaskList:Z
            ifeq 10
         2: .line 320
            aload 0 /* this */
            invokevirtual org.springframework.util.StopWatch.getTaskInfo:()[Lorg/springframework/util/StopWatch$TaskInfo;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 8
      StackMap locals: org.springframework.util.StopWatch java.lang.StringBuilder top int int org.springframework.util.StopWatch$TaskInfo[]
      StackMap stack:
         3: aload 5
            iload 3
            aaload
            astore 2 /* task */
        start local 2 // org.springframework.util.StopWatch$TaskInfo task
         4: .line 321
            aload 1 /* sb */
            ldc "; ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* task */
            invokevirtual org.springframework.util.StopWatch$TaskInfo.getTaskName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "] took "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* task */
            invokevirtual org.springframework.util.StopWatch$TaskInfo.getTimeNanos:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " ns"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 322
            ldc 100.0
            aload 2 /* task */
            invokevirtual org.springframework.util.StopWatch$TaskInfo.getTimeNanos:()J
            l2d
            dmul
            aload 0 /* this */
            invokevirtual org.springframework.util.StopWatch.getTotalTimeNanos:()J
            l2d
            ddiv
            invokestatic java.lang.Math.round:(D)J
            lstore 6 /* percent */
        start local 6 // long percent
         6: .line 323
            aload 1 /* sb */
            ldc " = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 6 /* percent */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc "%"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 6 // long percent
        end local 2 // org.springframework.util.StopWatch$TaskInfo task
         7: .line 320
            iinc 3 1
      StackMap locals:
      StackMap stack:
         8: iload 3
            iload 4
            if_icmplt 3
         9: .line 325
            goto 11
        10: .line 327
      StackMap locals: org.springframework.util.StopWatch java.lang.StringBuilder
      StackMap stack:
            aload 1 /* sb */
            ldc "; no task info kept"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        11: .line 329
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.springframework.util.StopWatch this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lorg/springframework/util/StopWatch;
            1   12     1       sb  Ljava/lang/StringBuilder;
            4    7     2     task  Lorg/springframework/util/StopWatch$TaskInfo;
            6    7     6  percent  J

  private static long nanosToMillis(long);
    descriptor: (J)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // long duration
         0: .line 334
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            lload 0 /* duration */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            lreturn
        end local 0 // long duration
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  duration  J
    MethodParameters:
          Name  Flags
      duration  

  private static double nanosToSeconds(long);
    descriptor: (J)D
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // long duration
         0: .line 338
            lload 0 /* duration */
            l2d
            ldc 1.0E9
            ddiv
            dreturn
        end local 0 // long duration
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  duration  J
    MethodParameters:
          Name  Flags
      duration  
}
SourceFile: "StopWatch.java"
NestMembers:
  org.springframework.util.StopWatch$TaskInfo
InnerClasses:
  public final TaskInfo = org.springframework.util.StopWatch$TaskInfo of org.springframework.util.StopWatch