public abstract class org.xnio.AutomaticReference<T> extends java.lang.ref.PhantomReference<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.xnio.AutomaticReference
  super_class: java.lang.ref.PhantomReference
{
  static final java.lang.Object PERMIT;
    descriptor: Ljava/lang/Object;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private static final java.util.Set<org.xnio.AutomaticReference<?>> LIVE_SET;
    descriptor: Ljava/util/Set;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Lorg/xnio/AutomaticReference<*>;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 43
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic org.xnio.AutomaticReference.PERMIT:Ljava/lang/Object;
         1: .line 46
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            invokestatic java.util.Collections.newSetFromMap:(Ljava/util/Map;)Ljava/util/Set;
            invokestatic java.util.Collections.synchronizedSet:(Ljava/util/Set;)Ljava/util/Set;
            putstatic org.xnio.AutomaticReference.LIVE_SET:Ljava/util/Set;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.lang.Object getPermit();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=0
         0: .line 55
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 0 /* sm */
        start local 0 // java.lang.SecurityManager sm
         1: .line 56
            aload 0 /* sm */
            ifnull 3
         2: .line 57
            aload 0 /* sm */
            new java.lang.RuntimePermission
            dup
            ldc "createAutomaticReference"
            invokespecial java.lang.RuntimePermission.<init>:(Ljava/lang/String;)V
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         3: .line 59
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            getstatic org.xnio.AutomaticReference.PERMIT:Ljava/lang/Object;
            areturn
        end local 0 // java.lang.SecurityManager sm
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    4     0    sm  Ljava/lang/SecurityManager;

  private static java.lang.ref.ReferenceQueue<java.lang.Object> checkPermit();
    descriptor: (Ljava/lang/Object;)Ljava/lang/ref/ReferenceQueue;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.Object permit
         0: .line 63
            aload 0 /* permit */
            getstatic org.xnio.AutomaticReference.PERMIT:Ljava/lang/Object;
            if_acmpne 2
         1: .line 65
            getstatic org.xnio.AutomaticReference$Cleaner.QUEUE:Ljava/lang/ref/ReferenceQueue;
            areturn
         2: .line 67
      StackMap locals:
      StackMap stack:
            new java.lang.SecurityException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unauthorized subclass of "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc Lorg/xnio/AutomaticReference;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.Object permit
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  permit  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;
    MethodParameters:
        Name  Flags
      permit  

  public final T get();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.AutomaticReference this
         0: .line 77
            aconst_null
            areturn
        end local 0 // org.xnio.AutomaticReference this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/AutomaticReference<TT;>;
    Signature: ()TT;

  public final void clear();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.xnio.AutomaticReference this
         0: .line 86
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 0 // org.xnio.AutomaticReference this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/AutomaticReference<TT;>;

  public final boolean isEnqueued();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.AutomaticReference this
         0: .line 95
            aload 0 /* this */
            invokespecial java.lang.ref.PhantomReference.isEnqueued:()Z
            ireturn
        end local 0 // org.xnio.AutomaticReference this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/AutomaticReference<TT;>;

  public final boolean enqueue();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.xnio.AutomaticReference this
         0: .line 105
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 0 // org.xnio.AutomaticReference this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/AutomaticReference<TT;>;

  protected void <init>(T, );
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.xnio.AutomaticReference this
        start local 1 // java.lang.Object referent
        start local 2 // java.lang.Object permit
         0: .line 116
            aload 0 /* this */
            aload 1 /* referent */
            aload 2 /* permit */
            invokestatic org.xnio.AutomaticReference.checkPermit:(Ljava/lang/Object;)Ljava/lang/ref/ReferenceQueue;
            invokespecial java.lang.ref.PhantomReference.<init>:(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
         1: .line 117
            getstatic org.xnio.AutomaticReference.LIVE_SET:Ljava/util/Set;
            aload 0 /* this */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         2: .line 118
            return
        end local 2 // java.lang.Object permit
        end local 1 // java.lang.Object referent
        end local 0 // org.xnio.AutomaticReference this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/xnio/AutomaticReference<TT;>;
            0    3     1  referent  TT;
            0    3     2    permit  Ljava/lang/Object;
    Signature: (TT;Ljava/lang/Object;)V
    MethodParameters:
          Name  Flags
      referent  final
      permit    final

  protected abstract void free();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/ref/PhantomReference<TT;>;
SourceFile: "AutomaticReference.java"
NestMembers:
  org.xnio.AutomaticReference$Cleaner  org.xnio.AutomaticReference$Cleaner$1
InnerClasses:
  Cleaner = org.xnio.AutomaticReference$Cleaner of org.xnio.AutomaticReference
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()