class io.netty.util.internal.ObjectCleaner$1 implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: io.netty.util.internal.ObjectCleaner$1
  super_class: java.lang.Object
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.util.internal.ObjectCleaner$1 this
         0: .line 44
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // io.netty.util.internal.ObjectCleaner$1 this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/util/internal/ObjectCleaner$1;

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // io.netty.util.internal.ObjectCleaner$1 this
         0: .line 47
            iconst_0
            istore 1 /* interrupted */
        start local 1 // boolean interrupted
         1: .line 51
            goto 12
         2: .line 54
      StackMap locals: int
      StackMap stack:
            getstatic io.netty.util.internal.ObjectCleaner.REFERENCE_QUEUE:Ljava/lang/ref/ReferenceQueue;
            getstatic io.netty.util.internal.ObjectCleaner.REFERENCE_QUEUE_POLL_TIMEOUT_MS:I
            i2l
            invokevirtual java.lang.ref.ReferenceQueue.remove:(J)Ljava/lang/ref/Reference;
            checkcast io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference
            astore 2 /* reference */
        start local 2 // io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference reference
         3: .line 55
            goto 7
        end local 2 // io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference reference
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         4: pop
         5: .line 57
            iconst_1
            istore 1 /* interrupted */
         6: .line 58
            goto 12
        start local 2 // io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference reference
         7: .line 60
      StackMap locals: io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference
      StackMap stack:
            aload 2 /* reference */
            ifnull 12
         8: .line 62
            aload 2 /* reference */
            invokevirtual io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference.cleanup:()V
         9: .line 63
            goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: pop
        11: .line 67
      StackMap locals:
      StackMap stack:
            getstatic io.netty.util.internal.ObjectCleaner.LIVE_SET:Ljava/util/Set;
            aload 2 /* reference */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        end local 2 // io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference reference
        12: .line 51
      StackMap locals:
      StackMap stack:
            getstatic io.netty.util.internal.ObjectCleaner.LIVE_SET:Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifeq 2
        13: .line 70
            getstatic io.netty.util.internal.ObjectCleaner.CLEANER_RUNNING:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.set:(Z)V
        14: .line 74
            getstatic io.netty.util.internal.ObjectCleaner.LIVE_SET:Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 17
            getstatic io.netty.util.internal.ObjectCleaner.CLEANER_RUNNING:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_0
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
            ifne 16
        15: .line 77
            goto 17
        16: .line 48
      StackMap locals:
      StackMap stack:
            goto 12
        17: .line 80
      StackMap locals:
      StackMap stack:
            iload 1 /* interrupted */
            ifeq 19
        18: .line 82
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        19: .line 84
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean interrupted
        end local 0 // io.netty.util.internal.ObjectCleaner$1 this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   20     0         this  Lio/netty/util/internal/ObjectCleaner$1;
            1   20     1  interrupted  Z
            3    4     2    reference  Lio/netty/util/internal/ObjectCleaner$AutomaticCleanerReference;
            7   12     2    reference  Lio/netty/util/internal/ObjectCleaner$AutomaticCleanerReference;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.InterruptedException
           8     9      10  Class java.lang.Throwable
}
SourceFile: "ObjectCleaner.java"
EnclosingMethod: io.netty.util.internal.ObjectCleaner
NestHost: io.netty.util.internal.ObjectCleaner
InnerClasses:
  io.netty.util.internal.ObjectCleaner$1
  private final AutomaticCleanerReference = io.netty.util.internal.ObjectCleaner$AutomaticCleanerReference of io.netty.util.internal.ObjectCleaner