final class jdk.management.jfr.DownLoadThread extends java.lang.Thread
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: jdk.management.jfr.DownLoadThread
  super_class: java.lang.Thread
{
  private final jdk.management.jfr.RemoteRecordingStream stream;
    descriptor: Ljdk/management/jfr/RemoteRecordingStream;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.time.Instant startTime;
    descriptor: Ljava/time/Instant;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.time.Instant endTime;
    descriptor: Ljava/time/Instant;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.management.jfr.DiskRepository diskRepository;
    descriptor: Ljdk/management/jfr/DiskRepository;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(jdk.management.jfr.RemoteRecordingStream, java.lang.String);
    descriptor: (Ljdk/management/jfr/RemoteRecordingStream;Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // jdk.management.jfr.DownLoadThread this
        start local 1 // jdk.management.jfr.RemoteRecordingStream stream
        start local 2 // java.lang.String name
         0: .line 41
            aload 0 /* this */
            aload 2 /* name */
            invokespecial java.lang.Thread.<init>:(Ljava/lang/String;)V
         1: .line 42
            aload 0 /* this */
            aload 1 /* stream */
            putfield jdk.management.jfr.DownLoadThread.stream:Ljdk/management/jfr/RemoteRecordingStream;
         2: .line 43
            aload 0 /* this */
            aload 1 /* stream */
            getfield jdk.management.jfr.RemoteRecordingStream.startTime:Ljava/time/Instant;
            putfield jdk.management.jfr.DownLoadThread.startTime:Ljava/time/Instant;
         3: .line 44
            aload 0 /* this */
            aload 1 /* stream */
            getfield jdk.management.jfr.RemoteRecordingStream.endTime:Ljava/time/Instant;
            putfield jdk.management.jfr.DownLoadThread.endTime:Ljava/time/Instant;
         4: .line 45
            aload 0 /* this */
            aload 1 /* stream */
            getfield jdk.management.jfr.RemoteRecordingStream.repository:Ljdk/management/jfr/DiskRepository;
            putfield jdk.management.jfr.DownLoadThread.diskRepository:Ljdk/management/jfr/DiskRepository;
         5: .line 46
            return
        end local 2 // java.lang.String name
        end local 1 // jdk.management.jfr.RemoteRecordingStream stream
        end local 0 // jdk.management.jfr.DownLoadThread this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Ljdk/management/jfr/DownLoadThread;
            0    6     1  stream  Ljdk/management/jfr/RemoteRecordingStream;
            0    6     2    name  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      stream  
      name    

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // jdk.management.jfr.DownLoadThread this
         0: .line 50
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 1 /* options */
        start local 1 // java.util.Map options
         1: .line 51
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.startTime:Ljava/time/Instant;
            ifnull 3
         2: .line 52
            aload 1 /* options */
            ldc "startTime"
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.startTime:Ljava/time/Instant;
            invokevirtual java.time.Instant.toString:()Ljava/lang/String;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 54
      StackMap locals: java.util.Map
      StackMap stack:
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.endTime:Ljava/time/Instant;
            ifnull 5
         4: .line 55
            aload 1 /* options */
            ldc "endTime"
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.endTime:Ljava/time/Instant;
            invokevirtual java.time.Instant.toString:()Ljava/lang/String;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 57
      StackMap locals:
      StackMap stack:
            aload 1 /* options */
            ldc "streamVersion"
            ldc "1.0"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 58
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.stream:Ljdk/management/jfr/RemoteRecordingStream;
            getfield jdk.management.jfr.RemoteRecordingStream.mbean:Ljdk/management/jfr/FlightRecorderMXBean;
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.stream:Ljdk/management/jfr/RemoteRecordingStream;
            getfield jdk.management.jfr.RemoteRecordingStream.recordingId:J
            aload 1 /* options */
            invokeinterface jdk.management.jfr.FlightRecorderMXBean.openStream:(JLjava/util/Map;)J
            lstore 2 /* streamId */
        start local 2 // long streamId
         7: .line 59
            goto 16
         8: .line 60
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.stream:Ljdk/management/jfr/RemoteRecordingStream;
            getfield jdk.management.jfr.RemoteRecordingStream.mbean:Ljdk/management/jfr/FlightRecorderMXBean;
            lload 2 /* streamId */
            invokeinterface jdk.management.jfr.FlightRecorderMXBean.readStream:(J)[B
            astore 4 /* bytes */
        start local 4 // byte[] bytes
         9: .line 61
            aload 4 /* bytes */
            ifnonnull 12
        10: .line 73
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.diskRepository:Ljdk/management/jfr/DiskRepository;
            invokevirtual jdk.management.jfr.DiskRepository.complete:()V
        11: .line 62
            return
        12: .line 64
      StackMap locals: byte[]
      StackMap stack:
            aload 4 /* bytes */
            arraylength
            ifeq 15
        13: .line 65
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.diskRepository:Ljdk/management/jfr/DiskRepository;
            aload 4 /* bytes */
            invokevirtual jdk.management.jfr.DiskRepository.write:([B)V
        14: .line 66
            goto 16
        15: .line 67
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual jdk.management.jfr.DownLoadThread.takeNap:()V
        end local 4 // byte[] bytes
        16: .line 59
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.stream:Ljdk/management/jfr/RemoteRecordingStream;
            invokevirtual jdk.management.jfr.RemoteRecordingStream.isClosed:()Z
            ifeq 8
        end local 2 // long streamId
        end local 1 // java.util.Map options
        17: .line 70
            goto 24
      StackMap locals: jdk.management.jfr.DownLoadThread
      StackMap stack: java.io.IOException
        18: astore 1 /* ioe */
        start local 1 // java.io.IOException ioe
        19: .line 71
            aload 1 /* ioe */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokestatic jdk.jfr.internal.management.ManagementSupport.logDebug:(Ljava/lang/String;)V
        end local 1 // java.io.IOException ioe
        20: .line 73
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.diskRepository:Ljdk/management/jfr/DiskRepository;
            invokevirtual jdk.management.jfr.DiskRepository.complete:()V
            goto 25
        21: .line 72
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        22: .line 73
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.diskRepository:Ljdk/management/jfr/DiskRepository;
            invokevirtual jdk.management.jfr.DiskRepository.complete:()V
        23: .line 74
            aload 5
            athrow
        24: .line 73
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.management.jfr.DownLoadThread.diskRepository:Ljdk/management/jfr/DiskRepository;
            invokevirtual jdk.management.jfr.DiskRepository.complete:()V
        25: .line 75
      StackMap locals:
      StackMap stack:
            return
        end local 0 // jdk.management.jfr.DownLoadThread this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   26     0      this  Ljdk/management/jfr/DownLoadThread;
            1   17     1   options  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            7   17     2  streamId  J
            9   16     4     bytes  [B
           19   20     1       ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0    10      18  Class java.io.IOException
          12    17      18  Class java.io.IOException
           0    10      21  any
          12    20      21  any

  private void takeNap();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.management.jfr.DownLoadThread this
         0: .line 79
            ldc 1000
            invokestatic java.lang.Thread.sleep:(J)V
         1: .line 80
            goto 3
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         2: pop
         3: .line 83
      StackMap locals:
      StackMap stack:
            return
        end local 0 // jdk.management.jfr.DownLoadThread this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljdk/management/jfr/DownLoadThread;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.InterruptedException
}
SourceFile: "DownLoadThread.java"