final class com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl implements com.mongodb.session.ServerSession
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl
  super_class: java.lang.Object
{
  private final org.bson.BsonDocument identifier;
    descriptor: Lorg/bson/BsonDocument;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private long transactionNumber;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private volatile long lastUsedAtMillis;
    descriptor: J
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean closed;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile boolean dirty;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  final com.mongodb.internal.session.ServerSessionPool this$0;
    descriptor: Lcom/mongodb/internal/session/ServerSessionPool;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(com.mongodb.internal.session.ServerSessionPool, org.bson.BsonBinary);
    descriptor: (Lcom/mongodb/internal/session/ServerSessionPool;Lorg/bson/BsonBinary;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
        start local 2 // org.bson.BsonBinary identifier
         0: .line 193
            aload 0 /* this */
            aload 1
            putfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.this$0:Lcom/mongodb/internal/session/ServerSessionPool;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 188
            aload 0 /* this */
            lconst_0
            putfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.transactionNumber:J
         2: .line 189
            aload 0 /* this */
            aload 1
            getfield com.mongodb.internal.session.ServerSessionPool.clock:Lcom/mongodb/internal/session/ServerSessionPool$Clock;
            invokeinterface com.mongodb.internal.session.ServerSessionPool$Clock.millis:()J
            putfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.lastUsedAtMillis:J
         3: .line 191
            aload 0 /* this */
            iconst_0
            putfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.dirty:Z
         4: .line 194
            aload 0 /* this */
            new org.bson.BsonDocument
            dup
            ldc "id"
            aload 2 /* identifier */
            invokespecial org.bson.BsonDocument.<init>:(Ljava/lang/String;Lorg/bson/BsonValue;)V
            putfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.identifier:Lorg/bson/BsonDocument;
         5: .line 195
            return
        end local 2 // org.bson.BsonBinary identifier
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;
            0    6     2  identifier  Lorg/bson/BsonBinary;
    MethodParameters:
            Name  Flags
      this$0      final
      identifier  final

  void close();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
         0: .line 198
            aload 0 /* this */
            iconst_1
            putfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.closed:Z
         1: .line 199
            return
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;

  long getLastUsedAtMillis();
    descriptor: ()J
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
         0: .line 202
            aload 0 /* this */
            getfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.lastUsedAtMillis:J
            lreturn
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;

  public long getTransactionNumber();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
         0: .line 207
            aload 0 /* this */
            getfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.transactionNumber:J
            lreturn
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;

  public org.bson.BsonDocument getIdentifier();
    descriptor: ()Lorg/bson/BsonDocument;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
         0: .line 212
            aload 0 /* this */
            aload 0 /* this */
            getfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.this$0:Lcom/mongodb/internal/session/ServerSessionPool;
            getfield com.mongodb.internal.session.ServerSessionPool.clock:Lcom/mongodb/internal/session/ServerSessionPool$Clock;
            invokeinterface com.mongodb.internal.session.ServerSessionPool$Clock.millis:()J
            putfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.lastUsedAtMillis:J
         1: .line 213
            aload 0 /* this */
            getfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.identifier:Lorg/bson/BsonDocument;
            areturn
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;

  public long advanceTransactionNumber();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
         0: .line 218
            aload 0 /* this */
            dup
            getfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.transactionNumber:J
            lconst_1
            ladd
            putfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.transactionNumber:J
         1: .line 219
            aload 0 /* this */
            getfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.transactionNumber:J
            lreturn
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;

  public boolean isClosed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
         0: .line 224
            aload 0 /* this */
            getfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.closed:Z
            ireturn
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;

  public void markDirty();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
         0: .line 229
            aload 0 /* this */
            iconst_1
            putfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.dirty:Z
         1: .line 230
            return
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;

  public boolean isMarkedDirty();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
         0: .line 234
            aload 0 /* this */
            getfield com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.dirty:Z
            ireturn
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;
}
SourceFile: "ServerSessionPool.java"
NestHost: com.mongodb.internal.session.ServerSessionPool
InnerClasses:
  abstract Clock = com.mongodb.internal.session.ServerSessionPool$Clock of com.mongodb.internal.session.ServerSessionPool
  final ServerSessionImpl = com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl of com.mongodb.internal.session.ServerSessionPool