public class org.apache.lucene.util.RefCount<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.lucene.util.RefCount
  super_class: java.lang.Object
{
  private final java.util.concurrent.atomic.AtomicInteger refCount;
    descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected final T object;
    descriptor: Ljava/lang/Object;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: TT;

  public void <init>();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.lucene.util.RefCount this
        start local 1 // java.lang.Object object
         0: .line 33
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 29
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicInteger
            dup
            iconst_1
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
            putfield org.apache.lucene.util.RefCount.refCount:Ljava/util/concurrent/atomic/AtomicInteger;
         2: .line 34
            aload 0 /* this */
            aload 1 /* object */
            putfield org.apache.lucene.util.RefCount.object:Ljava/lang/Object;
         3: .line 35
            return
        end local 1 // java.lang.Object object
        end local 0 // org.apache.lucene.util.RefCount this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/apache/lucene/util/RefCount<TT;>;
            0    4     1  object  TT;
    Signature: (TT;)V
    MethodParameters:
        Name  Flags
      object  

  protected void release();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.apache.lucene.util.RefCount this
         0: .line 42
            return
        end local 0 // org.apache.lucene.util.RefCount this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/util/RefCount<TT;>;
    Exceptions:
      throws java.io.IOException

  public final void decRef();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // org.apache.lucene.util.RefCount this
         0: .line 49
            aload 0 /* this */
            getfield org.apache.lucene.util.RefCount.refCount:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.decrementAndGet:()I
            istore 1 /* rc */
        start local 1 // int rc
         1: .line 50
            iload 1 /* rc */
            ifne 13
         2: .line 51
            iconst_0
            istore 2 /* success */
        start local 2 // boolean success
         3: .line 53
            aload 0 /* this */
            invokevirtual org.apache.lucene.util.RefCount.release:()V
         4: .line 54
            iconst_1
            istore 2 /* success */
         5: .line 55
            goto 10
      StackMap locals: org.apache.lucene.util.RefCount int int
      StackMap stack: java.lang.Throwable
         6: astore 3
         7: .line 56
            iload 2 /* success */
            ifne 9
         8: .line 58
            aload 0 /* this */
            getfield org.apache.lucene.util.RefCount.refCount:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            pop
         9: .line 60
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 3
            athrow
        10: .line 56
      StackMap locals:
      StackMap stack:
            iload 2 /* success */
            ifne 15
        11: .line 58
            aload 0 /* this */
            getfield org.apache.lucene.util.RefCount.refCount:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            pop
        end local 2 // boolean success
        12: .line 61
            goto 15
      StackMap locals:
      StackMap stack:
        13: iload 1 /* rc */
            ifge 15
        14: .line 62
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "too many decRef calls: refCount is "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* rc */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " after decrement"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 64
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int rc
        end local 0 // org.apache.lucene.util.RefCount this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0     this  Lorg/apache/lucene/util/RefCount<TT;>;
            1   16     1       rc  I
            3   12     2  success  Z
      Exception table:
        from    to  target  type
           3     6       6  any
    Exceptions:
      throws java.io.IOException

  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.apache.lucene.util.RefCount this
         0: .line 67
            aload 0 /* this */
            getfield org.apache.lucene.util.RefCount.object:Ljava/lang/Object;
            areturn
        end local 0 // org.apache.lucene.util.RefCount this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/util/RefCount<TT;>;
    Signature: ()TT;

  public final int getRefCount();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.lucene.util.RefCount this
         0: .line 72
            aload 0 /* this */
            getfield org.apache.lucene.util.RefCount.refCount:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            ireturn
        end local 0 // org.apache.lucene.util.RefCount this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/util/RefCount<TT;>;

  public final void incRef();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.lucene.util.RefCount this
         0: .line 80
            aload 0 /* this */
            getfield org.apache.lucene.util.RefCount.refCount:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            pop
         1: .line 81
            return
        end local 0 // org.apache.lucene.util.RefCount this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/lucene/util/RefCount<TT;>;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "RefCount.java"