public abstract class com.mongodb.internal.binding.AbstractReferenceCounted implements com.mongodb.binding.ReferenceCounted
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.mongodb.internal.binding.AbstractReferenceCounted
  super_class: java.lang.Object
{
  private final java.util.concurrent.atomic.AtomicInteger referenceCount;
    descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.mongodb.internal.binding.AbstractReferenceCounted this
         0: .line 23
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 24
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicInteger
            dup
            iconst_1
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
            putfield com.mongodb.internal.binding.AbstractReferenceCounted.referenceCount:Ljava/util/concurrent/atomic/AtomicInteger;
         2: .line 23
            return
        end local 0 // com.mongodb.internal.binding.AbstractReferenceCounted this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/internal/binding/AbstractReferenceCounted;

  public int getCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.internal.binding.AbstractReferenceCounted this
         0: .line 27
            aload 0 /* this */
            getfield com.mongodb.internal.binding.AbstractReferenceCounted.referenceCount:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            ireturn
        end local 0 // com.mongodb.internal.binding.AbstractReferenceCounted this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/internal/binding/AbstractReferenceCounted;

  public com.mongodb.binding.ReferenceCounted retain();
    descriptor: ()Lcom/mongodb/binding/ReferenceCounted;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.internal.binding.AbstractReferenceCounted this
         0: .line 32
            aload 0 /* this */
            getfield com.mongodb.internal.binding.AbstractReferenceCounted.referenceCount:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            iconst_1
            if_icmpne 2
         1: .line 33
            new java.lang.IllegalStateException
            dup
            ldc "Attempted to increment the reference count when it is already 0"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 35
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 0 // com.mongodb.internal.binding.AbstractReferenceCounted this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/internal/binding/AbstractReferenceCounted;

  public void release();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.internal.binding.AbstractReferenceCounted this
         0: .line 40
            aload 0 /* this */
            getfield com.mongodb.internal.binding.AbstractReferenceCounted.referenceCount:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.decrementAndGet:()I
            ifge 2
         1: .line 41
            new java.lang.IllegalStateException
            dup
            ldc "Attempted to decrement the reference count below 0"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 43
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.mongodb.internal.binding.AbstractReferenceCounted this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/internal/binding/AbstractReferenceCounted;
}
SourceFile: "AbstractReferenceCounted.java"