final class com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory implements com.mongodb.internal.connection.ConcurrentPool$ItemFactory<com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl>
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory
  super_class: java.lang.Object
{
  final com.mongodb.internal.session.ServerSessionPool this$0;
    descriptor: Lcom/mongodb/internal/session/ServerSessionPool;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private void <init>(com.mongodb.internal.session.ServerSessionPool);
    descriptor: (Lcom/mongodb/internal/session/ServerSessionPool;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory this
         0: .line 238
            aload 0 /* this */
            aload 1
            putfield com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory.this$0:Lcom/mongodb/internal/session/ServerSessionPool;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionItemFactory;
    MethodParameters:
        Name  Flags
      this$0  final

  public com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl create(boolean);
    descriptor: (Z)Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory this
        start local 1 // boolean initialize
         0: .line 241
            new com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl
            dup
            aload 0 /* this */
            getfield com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory.this$0:Lcom/mongodb/internal/session/ServerSessionPool;
            aload 0 /* this */
            invokevirtual com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory.createNewServerSessionIdentifier:()Lorg/bson/BsonBinary;
            invokespecial com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl.<init>:(Lcom/mongodb/internal/session/ServerSessionPool;Lorg/bson/BsonBinary;)V
            areturn
        end local 1 // boolean initialize
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionItemFactory;
            0    1     1  initialize  Z
    MethodParameters:
            Name  Flags
      initialize  final

  public void close(com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl);
    descriptor: (Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory this
        start local 1 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl serverSession
         0: .line 246
            aload 0 /* this */
            getfield com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory.this$0:Lcom/mongodb/internal/session/ServerSessionPool;
            aload 1 /* serverSession */
            invokevirtual com.mongodb.internal.session.ServerSessionPool.closeSession:(Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;)V
         1: .line 247
            return
        end local 1 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl serverSession
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionItemFactory;
            0    2     1  serverSession  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;
    MethodParameters:
               Name  Flags
      serverSession  final

  public com.mongodb.internal.connection.ConcurrentPool$Prune shouldPrune(com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl);
    descriptor: (Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;)Lcom/mongodb/internal/connection/ConcurrentPool$Prune;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory this
        start local 1 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl serverSession
         0: .line 251
            aload 0 /* this */
            getfield com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory.this$0:Lcom/mongodb/internal/session/ServerSessionPool;
            aload 1 /* serverSession */
            invokevirtual com.mongodb.internal.session.ServerSessionPool.shouldPrune:(Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;)Z
            ifeq 1
            getstatic com.mongodb.internal.connection.ConcurrentPool$Prune.YES:Lcom/mongodb/internal/connection/ConcurrentPool$Prune;
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic com.mongodb.internal.connection.ConcurrentPool$Prune.STOP:Lcom/mongodb/internal/connection/ConcurrentPool$Prune;
      StackMap locals:
      StackMap stack: com.mongodb.internal.connection.ConcurrentPool$Prune
         2: areturn
        end local 1 // com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl serverSession
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionItemFactory;
            0    3     1  serverSession  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;
    Signature: (Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;)Lcom/mongodb/internal/connection/ConcurrentPool$Prune;
    MethodParameters:
               Name  Flags
      serverSession  final

  private org.bson.BsonBinary createNewServerSessionIdentifier();
    descriptor: ()Lorg/bson/BsonBinary;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory this
         0: .line 255
            new org.bson.codecs.UuidCodec
            dup
            getstatic org.bson.UuidRepresentation.STANDARD:Lorg/bson/UuidRepresentation;
            invokespecial org.bson.codecs.UuidCodec.<init>:(Lorg/bson/UuidRepresentation;)V
            astore 1 /* uuidCodec */
        start local 1 // org.bson.codecs.UuidCodec uuidCodec
         1: .line 256
            new org.bson.BsonDocument
            dup
            invokespecial org.bson.BsonDocument.<init>:()V
            astore 2 /* holder */
        start local 2 // org.bson.BsonDocument holder
         2: .line 257
            new org.bson.BsonDocumentWriter
            dup
            aload 2 /* holder */
            invokespecial org.bson.BsonDocumentWriter.<init>:(Lorg/bson/BsonDocument;)V
            astore 3 /* bsonDocumentWriter */
        start local 3 // org.bson.BsonDocumentWriter bsonDocumentWriter
         3: .line 258
            aload 3 /* bsonDocumentWriter */
            invokevirtual org.bson.BsonDocumentWriter.writeStartDocument:()V
         4: .line 259
            aload 3 /* bsonDocumentWriter */
            ldc "id"
            invokevirtual org.bson.BsonDocumentWriter.writeName:(Ljava/lang/String;)V
         5: .line 260
            aload 1 /* uuidCodec */
            aload 3 /* bsonDocumentWriter */
            invokestatic java.util.UUID.randomUUID:()Ljava/util/UUID;
            invokestatic org.bson.codecs.EncoderContext.builder:()Lorg/bson/codecs/EncoderContext$Builder;
            invokevirtual org.bson.codecs.EncoderContext$Builder.build:()Lorg/bson/codecs/EncoderContext;
            invokevirtual org.bson.codecs.UuidCodec.encode:(Lorg/bson/BsonWriter;Ljava/util/UUID;Lorg/bson/codecs/EncoderContext;)V
         6: .line 261
            aload 3 /* bsonDocumentWriter */
            invokevirtual org.bson.BsonDocumentWriter.writeEndDocument:()V
         7: .line 262
            aload 2 /* holder */
            ldc "id"
            invokevirtual org.bson.BsonDocument.getBinary:(Ljava/lang/Object;)Lorg/bson/BsonBinary;
            areturn
        end local 3 // org.bson.BsonDocumentWriter bsonDocumentWriter
        end local 2 // org.bson.BsonDocument holder
        end local 1 // org.bson.codecs.UuidCodec uuidCodec
        end local 0 // com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    8     0                this  Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionItemFactory;
            1    8     1           uuidCodec  Lorg/bson/codecs/UuidCodec;
            2    8     2              holder  Lorg/bson/BsonDocument;
            3    8     3  bsonDocumentWriter  Lorg/bson/BsonDocumentWriter;

  public java.lang.Object create(boolean);
    descriptor: (Z)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            iload 1
            invokevirtual com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory.create:(Z)Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void close(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl
            invokevirtual com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory.close:(Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public com.mongodb.internal.connection.ConcurrentPool$Prune shouldPrune(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/mongodb/internal/connection/ConcurrentPool$Prune;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl
            invokevirtual com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory.shouldPrune:(Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;)Lcom/mongodb/internal/connection/ConcurrentPool$Prune;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Ljava/lang/Object;Lcom/mongodb/internal/connection/ConcurrentPool$ItemFactory<Lcom/mongodb/internal/session/ServerSessionPool$ServerSessionImpl;>;
SourceFile: "ServerSessionPool.java"
NestHost: com.mongodb.internal.session.ServerSessionPool
InnerClasses:
  public abstract ItemFactory = com.mongodb.internal.connection.ConcurrentPool$ItemFactory of com.mongodb.internal.connection.ConcurrentPool
  public final Prune = com.mongodb.internal.connection.ConcurrentPool$Prune of com.mongodb.internal.connection.ConcurrentPool
  final ServerSessionImpl = com.mongodb.internal.session.ServerSessionPool$ServerSessionImpl of com.mongodb.internal.session.ServerSessionPool
  private final ServerSessionItemFactory = com.mongodb.internal.session.ServerSessionPool$ServerSessionItemFactory of com.mongodb.internal.session.ServerSessionPool
  public final Builder = org.bson.codecs.EncoderContext$Builder of org.bson.codecs.EncoderContext