public class jdk.internal.net.http.common.SSLFlowDelegate$Monitor extends java.lang.Thread
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.internal.net.http.common.SSLFlowDelegate$Monitor
  super_class: java.lang.Thread
{
  final java.util.List<java.lang.ref.WeakReference<jdk.internal.net.http.common.SSLFlowDelegate$Monitorable>> list;
    descriptor: Ljava/util/List;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/ref/WeakReference<Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;>;

  final java.util.List<jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable> finalList;
    descriptor: Ljava/util/List;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/List<Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor$FinalMonitorable;>;

  final java.lang.ref.ReferenceQueue<jdk.internal.net.http.common.SSLFlowDelegate$Monitorable> queue;
    descriptor: Ljava/lang/ref/ReferenceQueue;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/lang/ref/ReferenceQueue<Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;

  static jdk.internal.net.http.common.SSLFlowDelegate$Monitor themon;
    descriptor: Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
    flags: (0x0008) ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 538
            new jdk.internal.net.http.common.SSLFlowDelegate$Monitor
            dup
            invokespecial jdk.internal.net.http.common.SSLFlowDelegate$Monitor.<init>:()V
            putstatic jdk.internal.net.http.common.SSLFlowDelegate$Monitor.themon:Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
         1: .line 539
            getstatic jdk.internal.net.http.common.SSLFlowDelegate$Monitor.themon:Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
            invokevirtual jdk.internal.net.http.common.SSLFlowDelegate$Monitor.start:()V
         2: .line 540
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitor this
         0: .line 562
            aload 0 /* this */
            ldc "Monitor"
            invokespecial java.lang.Thread.<init>:(Ljava/lang/String;)V
         1: .line 534
            aload 0 /* this */
            new java.lang.ref.ReferenceQueue
            dup
            invokespecial java.lang.ref.ReferenceQueue.<init>:()V
            putfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.queue:Ljava/lang/ref/ReferenceQueue;
         2: .line 563
            aload 0 /* this */
            iconst_1
            invokevirtual jdk.internal.net.http.common.SSLFlowDelegate$Monitor.setDaemon:(Z)V
         3: .line 564
            aload 0 /* this */
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            invokestatic java.util.Collections.synchronizedList:(Ljava/util/List;)Ljava/util/List;
            putfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
         4: .line 565
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.finalList:Ljava/util/List;
         5: .line 566
            return
        end local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;

  void addTarget(jdk.internal.net.http.common.SSLFlowDelegate$Monitorable);
    descriptor: (Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitor this
        start local 1 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable o
         0: .line 569
            aload 0 /* this */
            getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
            new java.lang.ref.WeakReference
            dup
            aload 1 /* o */
            aload 0 /* this */
            getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.queue:Ljava/lang/ref/ReferenceQueue;
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 570
            return
        end local 1 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable o
        end local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
            0    2     1     o  Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
    MethodParameters:
      Name  Flags
      o     

  void removeTarget(jdk.internal.net.http.common.SSLFlowDelegate$Monitorable);
    descriptor: (Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitor this
        start local 1 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable o
         0: .line 575
            aload 0 /* this */
            getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
            dup
            astore 2
            monitorenter
         1: .line 576
            aload 0 /* this */
            getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3 /* it */
        start local 3 // java.util.Iterator it
         2: .line 577
            goto 8
         3: .line 578
      StackMap locals: java.util.List java.util.Iterator
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.ref.WeakReference
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            checkcast jdk.internal.net.http.common.SSLFlowDelegate$Monitorable
            astore 4 /* m */
        start local 4 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable m
         4: .line 579
            aload 4 /* m */
            ifnonnull 5
            aload 3 /* it */
            invokeinterface java.util.Iterator.remove:()V
         5: .line 580
      StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitorable
      StackMap stack:
            aload 1 /* o */
            aload 4 /* m */
            if_acmpne 8
         6: .line 581
            aload 3 /* it */
            invokeinterface java.util.Iterator.remove:()V
         7: .line 582
            goto 9
        end local 4 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable m
         8: .line 577
      StackMap locals:
      StackMap stack:
            aload 3 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         9: .line 585
      StackMap locals:
      StackMap stack:
            new jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable
            dup
            aload 0 /* this */
            aload 1 /* o */
            invokespecial jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable.<init>:(Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
            astore 4 /* m */
        start local 4 // jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable m
        10: .line 586
            aload 0 /* this */
            aload 4 /* m */
            invokevirtual jdk.internal.net.http.common.SSLFlowDelegate$Monitor.addTarget:(Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
        11: .line 587
            aload 4 /* m */
            invokestatic java.lang.ref.Reference.reachabilityFence:(Ljava/lang/Object;)V
        end local 4 // jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable m
        end local 3 // java.util.Iterator it
        12: .line 575
            aload 2
            monitorexit
        13: goto 16
      StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitor jdk.internal.net.http.common.SSLFlowDelegate$Monitorable java.util.List
      StackMap stack: java.lang.Throwable
        14: aload 2
            monitorexit
        15: athrow
        16: .line 589
      StackMap locals:
      StackMap stack:
            return
        end local 1 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable o
        end local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
            0   17     1     o  Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
            2   12     3    it  Ljava/util/Iterator<Ljava/lang/ref/WeakReference<Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;>;
            4    8     4     m  Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
           10   12     4     m  Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor$FinalMonitorable;
      Exception table:
        from    to  target  type
           1    13      14  any
          14    15      14  any
    MethodParameters:
      Name  Flags
      o     

  public static void add(jdk.internal.net.http.common.SSLFlowDelegate$Monitorable);
    descriptor: (Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable o
         0: .line 592
            getstatic jdk.internal.net.http.common.SSLFlowDelegate$Monitor.themon:Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
            aload 0 /* o */
            invokevirtual jdk.internal.net.http.common.SSLFlowDelegate$Monitor.addTarget:(Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
         1: .line 593
            return
        end local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     o  Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
    MethodParameters:
      Name  Flags
      o     

  public static void remove(jdk.internal.net.http.common.SSLFlowDelegate$Monitorable);
    descriptor: (Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable o
         0: .line 595
            getstatic jdk.internal.net.http.common.SSLFlowDelegate$Monitor.themon:Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
            aload 0 /* o */
            invokevirtual jdk.internal.net.http.common.SSLFlowDelegate$Monitor.removeTarget:(Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;)V
         1: .line 596
            return
        end local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     o  Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
    MethodParameters:
      Name  Flags
      o     

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitor this
         0: .line 600
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Monitor starting"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 603
      StackMap locals:
      StackMap stack:
            ldc 20000
            invokestatic java.lang.Thread.sleep:(J)V
         2: .line 604
            aload 0 /* this */
            getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
            dup
            astore 1
            monitorenter
         3: .line 606
            goto 5
        start local 2 // java.lang.ref.Reference expired
      StackMap locals: java.util.List java.lang.ref.Reference
      StackMap stack:
         4: aload 0 /* this */
            getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
            aload 2 /* expired */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
        end local 2 // java.lang.ref.Reference expired
      StackMap locals:
      StackMap stack:
         5: aload 0 /* this */
            getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.queue:Ljava/lang/ref/ReferenceQueue;
            invokevirtual java.lang.ref.ReferenceQueue.poll:()Ljava/lang/ref/Reference;
            dup
            astore 2 /* expired */
        start local 2 // java.lang.ref.Reference expired
         6: ifnonnull 4
         7: .line 607
            aload 0 /* this */
            getfield jdk.internal.net.http.common.SSLFlowDelegate$Monitor.list:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 15
      StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitor java.util.List java.lang.ref.Reference top java.util.Iterator
      StackMap stack:
         8: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.ref.WeakReference
            astore 3 /* ref */
        start local 3 // java.lang.ref.WeakReference ref
         9: .line 608
            aload 3 /* ref */
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            checkcast jdk.internal.net.http.common.SSLFlowDelegate$Monitorable
            astore 5 /* o */
        start local 5 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable o
        10: .line 609
            aload 5 /* o */
            ifnonnull 11
            goto 15
        11: .line 610
      StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitor java.util.List java.lang.ref.Reference java.lang.ref.WeakReference java.util.Iterator jdk.internal.net.http.common.SSLFlowDelegate$Monitorable
      StackMap stack:
            aload 5 /* o */
            instanceof jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable
            ifeq 13
        12: .line 611
            aload 3 /* ref */
            invokevirtual java.lang.ref.WeakReference.enqueue:()Z
            pop
        13: .line 613
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            aload 5 /* o */
            invokeinterface jdk.internal.net.http.common.SSLFlowDelegate$Monitorable.getInfo:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        14: .line 614
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "-------------------------"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 5 // jdk.internal.net.http.common.SSLFlowDelegate$Monitorable o
        end local 3 // java.lang.ref.WeakReference ref
        15: .line 607
      StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitor java.util.List java.lang.ref.Reference top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        end local 2 // java.lang.ref.Reference expired
        16: .line 604
            aload 1
            monitorexit
        17: goto 20
      StackMap locals: jdk.internal.net.http.common.SSLFlowDelegate$Monitor java.util.List
      StackMap stack: java.lang.Throwable
        18: aload 1
            monitorexit
        19: athrow
        20: .line 617
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "--o-o-o-o-o-o-o-o-o-o-o-o-o-o-"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        21: .line 602
            goto 1
        22: .line 619
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            astore 1 /* e */
        start local 1 // java.lang.InterruptedException e
        23: .line 620
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Monitor exiting with "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 1 // java.lang.InterruptedException e
        24: .line 622
            return
        end local 0 // jdk.internal.net.http.common.SSLFlowDelegate$Monitor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   25     0     this  Ljdk/internal/net/http/common/SSLFlowDelegate$Monitor;
            4    5     2  expired  Ljava/lang/ref/Reference<+Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;
            6   16     2  expired  Ljava/lang/ref/Reference<+Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;
            9   15     3      ref  Ljava/lang/ref/WeakReference<Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;>;
           10   15     5        o  Ljdk/internal/net/http/common/SSLFlowDelegate$Monitorable;
           23   24     1        e  Ljava/lang/InterruptedException;
      Exception table:
        from    to  target  type
           3    17      18  any
          18    19      18  any
           1    22      22  Class java.lang.InterruptedException
}
SourceFile: "SSLFlowDelegate.java"
NestHost: jdk.internal.net.http.common.SSLFlowDelegate
InnerClasses:
  public Monitor = jdk.internal.net.http.common.SSLFlowDelegate$Monitor of jdk.internal.net.http.common.SSLFlowDelegate
  final FinalMonitorable = jdk.internal.net.http.common.SSLFlowDelegate$Monitor$FinalMonitorable of jdk.internal.net.http.common.SSLFlowDelegate$Monitor
  public abstract Monitorable = jdk.internal.net.http.common.SSLFlowDelegate$Monitorable of jdk.internal.net.http.common.SSLFlowDelegate