public final class com.mongodb.client.internal.MongoClientImpl implements com.mongodb.client.MongoClient
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.mongodb.client.internal.MongoClientImpl
  super_class: java.lang.Object
{
  private final com.mongodb.MongoClientSettings settings;
    descriptor: Lcom/mongodb/MongoClientSettings;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.mongodb.client.internal.MongoClientDelegate delegate;
    descriptor: Lcom/mongodb/client/internal/MongoClientDelegate;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(com.mongodb.MongoClientSettings, com.mongodb.MongoDriverInformation);
    descriptor: (Lcom/mongodb/MongoClientSettings;Lcom/mongodb/MongoDriverInformation;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.MongoClientSettings settings
        start local 2 // com.mongodb.MongoDriverInformation mongoDriverInformation
         0: .line 63
            aload 0 /* this */
            aload 1 /* settings */
            aload 2 /* mongoDriverInformation */
            invokestatic com.mongodb.client.internal.MongoClientImpl.createCluster:(Lcom/mongodb/MongoClientSettings;Lcom/mongodb/MongoDriverInformation;)Lcom/mongodb/connection/Cluster;
            aload 1 /* settings */
            aconst_null
            invokespecial com.mongodb.client.internal.MongoClientImpl.<init>:(Lcom/mongodb/connection/Cluster;Lcom/mongodb/MongoClientSettings;Lcom/mongodb/client/internal/OperationExecutor;)V
         1: .line 64
            return
        end local 2 // com.mongodb.MongoDriverInformation mongoDriverInformation
        end local 1 // com.mongodb.MongoClientSettings settings
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    2     1                settings  Lcom/mongodb/MongoClientSettings;
            0    2     2  mongoDriverInformation  Lcom/mongodb/MongoDriverInformation;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        com.mongodb.lang.Nullable()
    MethodParameters:
                        Name  Flags
      settings                final
      mongoDriverInformation  final

  public void <init>(com.mongodb.connection.Cluster, com.mongodb.MongoClientSettings, com.mongodb.client.internal.OperationExecutor);
    descriptor: (Lcom/mongodb/connection/Cluster;Lcom/mongodb/MongoClientSettings;Lcom/mongodb/client/internal/OperationExecutor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=5, args_size=4
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.connection.Cluster cluster
        start local 2 // com.mongodb.MongoClientSettings settings
        start local 3 // com.mongodb.client.internal.OperationExecutor operationExecutor
         0: .line 66
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 68
            aload 0 /* this */
            ldc "settings"
            aload 2 /* settings */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.MongoClientSettings
            putfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
         2: .line 69
            aload 2 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getAutoEncryptionSettings:()Lcom/mongodb/AutoEncryptionSettings;
            astore 4 /* autoEncryptionSettings */
        start local 4 // com.mongodb.AutoEncryptionSettings autoEncryptionSettings
         3: .line 70
            aload 0 /* this */
         4: new com.mongodb.client.internal.MongoClientDelegate
            dup
            ldc "cluster"
            aload 1 /* cluster */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.connection.Cluster
         5: .line 71
            aload 2 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getCodecRegistry:()Lorg/bson/codecs/configuration/CodecRegistry;
            aload 2 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getUuidRepresentation:()Lorg/bson/UuidRepresentation;
            invokestatic org.bson.internal.CodecRegistryHelper.createRegistry:(Lorg/bson/codecs/configuration/CodecRegistry;Lorg/bson/UuidRepresentation;)Lorg/bson/codecs/configuration/CodecRegistry;
         6: .line 72
            aload 2 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getCredential:()Lcom/mongodb/MongoCredential;
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            aload 0 /* this */
            aload 3 /* operationExecutor */
         7: .line 73
            aload 4 /* autoEncryptionSettings */
            ifnonnull 8
            aconst_null
            goto 9
      StackMap locals: com.mongodb.client.internal.MongoClientImpl com.mongodb.connection.Cluster com.mongodb.MongoClientSettings com.mongodb.client.internal.OperationExecutor com.mongodb.AutoEncryptionSettings
      StackMap stack: com.mongodb.client.internal.MongoClientImpl new 4 new 4 com.mongodb.connection.Cluster org.bson.codecs.configuration.CodecRegistry java.util.List com.mongodb.client.internal.MongoClientImpl com.mongodb.client.internal.OperationExecutor
         8: aload 0 /* this */
            invokestatic com.mongodb.client.internal.SimpleMongoClients.create:(Lcom/mongodb/client/MongoClient;)Lcom/mongodb/client/internal/SimpleMongoClient;
            aload 4 /* autoEncryptionSettings */
            invokestatic com.mongodb.client.internal.Crypts.createCrypt:(Lcom/mongodb/client/internal/SimpleMongoClient;Lcom/mongodb/AutoEncryptionSettings;)Lcom/mongodb/client/internal/Crypt;
      StackMap locals: com.mongodb.client.internal.MongoClientImpl com.mongodb.connection.Cluster com.mongodb.MongoClientSettings com.mongodb.client.internal.OperationExecutor com.mongodb.AutoEncryptionSettings
      StackMap stack: com.mongodb.client.internal.MongoClientImpl new 4 new 4 com.mongodb.connection.Cluster org.bson.codecs.configuration.CodecRegistry java.util.List com.mongodb.client.internal.MongoClientImpl com.mongodb.client.internal.OperationExecutor com.mongodb.client.internal.Crypt
         9: invokespecial com.mongodb.client.internal.MongoClientDelegate.<init>:(Lcom/mongodb/connection/Cluster;Lorg/bson/codecs/configuration/CodecRegistry;Ljava/util/List;Ljava/lang/Object;Lcom/mongodb/client/internal/OperationExecutor;Lcom/mongodb/client/internal/Crypt;)V
        10: .line 70
            putfield com.mongodb.client.internal.MongoClientImpl.delegate:Lcom/mongodb/client/internal/MongoClientDelegate;
        11: .line 74
            return
        end local 4 // com.mongodb.AutoEncryptionSettings autoEncryptionSettings
        end local 3 // com.mongodb.client.internal.OperationExecutor operationExecutor
        end local 2 // com.mongodb.MongoClientSettings settings
        end local 1 // com.mongodb.connection.Cluster cluster
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   12     0                    this  Lcom/mongodb/client/internal/MongoClientImpl;
            0   12     1                 cluster  Lcom/mongodb/connection/Cluster;
            0   12     2                settings  Lcom/mongodb/MongoClientSettings;
            0   12     3       operationExecutor  Lcom/mongodb/client/internal/OperationExecutor;
            3   12     4  autoEncryptionSettings  Lcom/mongodb/AutoEncryptionSettings;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        com.mongodb.lang.Nullable()
    MethodParameters:
                   Name  Flags
      cluster            final
      settings           final
      operationExecutor  final

  public com.mongodb.client.MongoDatabase getDatabase(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/mongodb/client/MongoDatabase;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=11, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // java.lang.String databaseName
         0: .line 78
            new com.mongodb.client.internal.MongoDatabaseImpl
            dup
            aload 1 /* databaseName */
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.delegate:Lcom/mongodb/client/internal/MongoClientDelegate;
            invokevirtual com.mongodb.client.internal.MongoClientDelegate.getCodecRegistry:()Lorg/bson/codecs/configuration/CodecRegistry;
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getReadPreference:()Lcom/mongodb/ReadPreference;
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getWriteConcern:()Lcom/mongodb/WriteConcern;
         1: .line 79
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getRetryWrites:()Z
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getRetryReads:()Z
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getReadConcern:()Lcom/mongodb/ReadConcern;
         2: .line 80
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getUuidRepresentation:()Lorg/bson/UuidRepresentation;
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.delegate:Lcom/mongodb/client/internal/MongoClientDelegate;
            invokevirtual com.mongodb.client.internal.MongoClientDelegate.getOperationExecutor:()Lcom/mongodb/client/internal/OperationExecutor;
         3: .line 78
            invokespecial com.mongodb.client.internal.MongoDatabaseImpl.<init>:(Ljava/lang/String;Lorg/bson/codecs/configuration/CodecRegistry;Lcom/mongodb/ReadPreference;Lcom/mongodb/WriteConcern;ZZLcom/mongodb/ReadConcern;Lorg/bson/UuidRepresentation;Lcom/mongodb/client/internal/OperationExecutor;)V
            areturn
        end local 1 // java.lang.String databaseName
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    4     1  databaseName  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      databaseName  final

  public com.mongodb.client.MongoIterable<java.lang.String> listDatabaseNames();
    descriptor: ()Lcom/mongodb/client/MongoIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
         0: .line 85
            aload 0 /* this */
            aconst_null
            invokevirtual com.mongodb.client.internal.MongoClientImpl.createListDatabaseNamesIterable:(Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/MongoIterable;
            areturn
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/client/internal/MongoClientImpl;
    Signature: ()Lcom/mongodb/client/MongoIterable<Ljava/lang/String;>;

  public com.mongodb.client.MongoIterable<java.lang.String> listDatabaseNames(com.mongodb.client.ClientSession);
    descriptor: (Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/MongoIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.client.ClientSession clientSession
         0: .line 90
            ldc "clientSession"
            aload 1 /* clientSession */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 91
            aload 0 /* this */
            aload 1 /* clientSession */
            invokevirtual com.mongodb.client.internal.MongoClientImpl.createListDatabaseNamesIterable:(Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/MongoIterable;
            areturn
        end local 1 // com.mongodb.client.ClientSession clientSession
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    2     1  clientSession  Lcom/mongodb/client/ClientSession;
    Signature: (Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/MongoIterable<Ljava/lang/String;>;
    MethodParameters:
               Name  Flags
      clientSession  final

  public com.mongodb.client.ListDatabasesIterable<org.bson.Document> listDatabases();
    descriptor: ()Lcom/mongodb/client/ListDatabasesIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
         0: .line 96
            aload 0 /* this */
            ldc Lorg/bson/Document;
            invokevirtual com.mongodb.client.internal.MongoClientImpl.listDatabases:(Ljava/lang/Class;)Lcom/mongodb/client/ListDatabasesIterable;
            areturn
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/client/internal/MongoClientImpl;
    Signature: ()Lcom/mongodb/client/ListDatabasesIterable<Lorg/bson/Document;>;

  public <T> com.mongodb.client.ListDatabasesIterable<T> listDatabases(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Lcom/mongodb/client/ListDatabasesIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // java.lang.Class clazz
         0: .line 101
            aload 0 /* this */
            aconst_null
            aload 1 /* clazz */
            invokevirtual com.mongodb.client.internal.MongoClientImpl.createListDatabasesIterable:(Lcom/mongodb/client/ClientSession;Ljava/lang/Class;)Lcom/mongodb/client/ListDatabasesIterable;
            areturn
        end local 1 // java.lang.Class clazz
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    1     1  clazz  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Lcom/mongodb/client/ListDatabasesIterable<TT;>;
    MethodParameters:
       Name  Flags
      clazz  final

  public com.mongodb.client.ListDatabasesIterable<org.bson.Document> listDatabases(com.mongodb.client.ClientSession);
    descriptor: (Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/ListDatabasesIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.client.ClientSession clientSession
         0: .line 106
            aload 0 /* this */
            aload 1 /* clientSession */
            ldc Lorg/bson/Document;
            invokevirtual com.mongodb.client.internal.MongoClientImpl.listDatabases:(Lcom/mongodb/client/ClientSession;Ljava/lang/Class;)Lcom/mongodb/client/ListDatabasesIterable;
            areturn
        end local 1 // com.mongodb.client.ClientSession clientSession
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    1     1  clientSession  Lcom/mongodb/client/ClientSession;
    Signature: (Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/ListDatabasesIterable<Lorg/bson/Document;>;
    MethodParameters:
               Name  Flags
      clientSession  final

  public <T> com.mongodb.client.ListDatabasesIterable<T> listDatabases(com.mongodb.client.ClientSession, java.lang.Class<T>);
    descriptor: (Lcom/mongodb/client/ClientSession;Ljava/lang/Class;)Lcom/mongodb/client/ListDatabasesIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.client.ClientSession clientSession
        start local 2 // java.lang.Class clazz
         0: .line 111
            ldc "clientSession"
            aload 1 /* clientSession */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 112
            aload 0 /* this */
            aload 1 /* clientSession */
            aload 2 /* clazz */
            invokevirtual com.mongodb.client.internal.MongoClientImpl.createListDatabasesIterable:(Lcom/mongodb/client/ClientSession;Ljava/lang/Class;)Lcom/mongodb/client/ListDatabasesIterable;
            areturn
        end local 2 // java.lang.Class clazz
        end local 1 // com.mongodb.client.ClientSession clientSession
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    2     1  clientSession  Lcom/mongodb/client/ClientSession;
            0    2     2          clazz  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/client/ClientSession;Ljava/lang/Class<TT;>;)Lcom/mongodb/client/ListDatabasesIterable<TT;>;
    MethodParameters:
               Name  Flags
      clientSession  final
      clazz          final

  public com.mongodb.client.ClientSession startSession();
    descriptor: ()Lcom/mongodb/client/ClientSession;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
         0: .line 117
            aload 0 /* this */
         1: .line 118
            invokestatic com.mongodb.ClientSessionOptions.builder:()Lcom/mongodb/ClientSessionOptions$Builder;
         2: .line 119
            invokestatic com.mongodb.TransactionOptions.builder:()Lcom/mongodb/TransactionOptions$Builder;
         3: .line 120
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getReadConcern:()Lcom/mongodb/ReadConcern;
            invokevirtual com.mongodb.TransactionOptions$Builder.readConcern:(Lcom/mongodb/ReadConcern;)Lcom/mongodb/TransactionOptions$Builder;
         4: .line 121
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getWriteConcern:()Lcom/mongodb/WriteConcern;
            invokevirtual com.mongodb.TransactionOptions$Builder.writeConcern:(Lcom/mongodb/WriteConcern;)Lcom/mongodb/TransactionOptions$Builder;
         5: .line 122
            invokevirtual com.mongodb.TransactionOptions$Builder.build:()Lcom/mongodb/TransactionOptions;
         6: .line 119
            invokevirtual com.mongodb.ClientSessionOptions$Builder.defaultTransactionOptions:(Lcom/mongodb/TransactionOptions;)Lcom/mongodb/ClientSessionOptions$Builder;
         7: .line 123
            invokevirtual com.mongodb.ClientSessionOptions$Builder.build:()Lcom/mongodb/ClientSessionOptions;
         8: .line 117
            invokevirtual com.mongodb.client.internal.MongoClientImpl.startSession:(Lcom/mongodb/ClientSessionOptions;)Lcom/mongodb/client/ClientSession;
            areturn
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/mongodb/client/internal/MongoClientImpl;

  public com.mongodb.client.ClientSession startSession(com.mongodb.ClientSessionOptions);
    descriptor: (Lcom/mongodb/ClientSessionOptions;)Lcom/mongodb/client/ClientSession;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.ClientSessionOptions options
         0: .line 128
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.delegate:Lcom/mongodb/client/internal/MongoClientDelegate;
            ldc "options"
            aload 1 /* options */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.ClientSessionOptions
         1: .line 129
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getReadConcern:()Lcom/mongodb/ReadConcern;
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getWriteConcern:()Lcom/mongodb/WriteConcern;
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getReadPreference:()Lcom/mongodb/ReadPreference;
         2: .line 128
            invokevirtual com.mongodb.client.internal.MongoClientDelegate.createClientSession:(Lcom/mongodb/ClientSessionOptions;Lcom/mongodb/ReadConcern;Lcom/mongodb/WriteConcern;Lcom/mongodb/ReadPreference;)Lcom/mongodb/client/ClientSession;
            astore 2 /* clientSession */
        start local 2 // com.mongodb.client.ClientSession clientSession
         3: .line 130
            aload 2 /* clientSession */
            ifnonnull 5
         4: .line 131
            new com.mongodb.MongoClientException
            dup
            ldc "Sessions are not supported by the MongoDB cluster to which this client is connected"
            invokespecial com.mongodb.MongoClientException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 133
      StackMap locals: com.mongodb.client.ClientSession
      StackMap stack:
            aload 2 /* clientSession */
            areturn
        end local 2 // com.mongodb.client.ClientSession clientSession
        end local 1 // com.mongodb.ClientSessionOptions options
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    6     1        options  Lcom/mongodb/ClientSessionOptions;
            3    6     2  clientSession  Lcom/mongodb/client/ClientSession;
    MethodParameters:
         Name  Flags
      options  final

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
         0: .line 138
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.delegate:Lcom/mongodb/client/internal/MongoClientDelegate;
            invokevirtual com.mongodb.client.internal.MongoClientDelegate.close:()V
         1: .line 139
            return
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/mongodb/client/internal/MongoClientImpl;

  public com.mongodb.client.ChangeStreamIterable<org.bson.Document> watch();
    descriptor: ()Lcom/mongodb/client/ChangeStreamIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
         0: .line 143
            aload 0 /* this */
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            invokevirtual com.mongodb.client.internal.MongoClientImpl.watch:(Ljava/util/List;)Lcom/mongodb/client/ChangeStreamIterable;
            areturn
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/client/internal/MongoClientImpl;
    Signature: ()Lcom/mongodb/client/ChangeStreamIterable<Lorg/bson/Document;>;

  public <TResult> com.mongodb.client.ChangeStreamIterable<TResult> watch(java.lang.Class<TResult>);
    descriptor: (Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // java.lang.Class resultClass
         0: .line 148
            aload 0 /* this */
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            aload 1 /* resultClass */
            invokevirtual com.mongodb.client.internal.MongoClientImpl.watch:(Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
            areturn
        end local 1 // java.lang.Class resultClass
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    1     1  resultClass  Ljava/lang/Class<TTResult;>;
    Signature: <TResult:Ljava/lang/Object;>(Ljava/lang/Class<TTResult;>;)Lcom/mongodb/client/ChangeStreamIterable<TTResult;>;
    MethodParameters:
             Name  Flags
      resultClass  final

  public com.mongodb.client.ChangeStreamIterable<org.bson.Document> watch(java.util.List<? extends org.bson.conversions.Bson>);
    descriptor: (Ljava/util/List;)Lcom/mongodb/client/ChangeStreamIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // java.util.List pipeline
         0: .line 153
            aload 0 /* this */
            aload 1 /* pipeline */
            ldc Lorg/bson/Document;
            invokevirtual com.mongodb.client.internal.MongoClientImpl.watch:(Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
            areturn
        end local 1 // java.util.List pipeline
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    1     1  pipeline  Ljava/util/List<+Lorg/bson/conversions/Bson;>;
    Signature: (Ljava/util/List<+Lorg/bson/conversions/Bson;>;)Lcom/mongodb/client/ChangeStreamIterable<Lorg/bson/Document;>;
    MethodParameters:
          Name  Flags
      pipeline  final

  public <TResult> com.mongodb.client.ChangeStreamIterable<TResult> watch(java.util.List<? extends org.bson.conversions.Bson>, java.lang.Class<TResult>);
    descriptor: (Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // java.util.List pipeline
        start local 2 // java.lang.Class resultClass
         0: .line 158
            aload 0 /* this */
            aconst_null
            aload 1 /* pipeline */
            aload 2 /* resultClass */
            invokevirtual com.mongodb.client.internal.MongoClientImpl.createChangeStreamIterable:(Lcom/mongodb/client/ClientSession;Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
            areturn
        end local 2 // java.lang.Class resultClass
        end local 1 // java.util.List pipeline
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    1     1     pipeline  Ljava/util/List<+Lorg/bson/conversions/Bson;>;
            0    1     2  resultClass  Ljava/lang/Class<TTResult;>;
    Signature: <TResult:Ljava/lang/Object;>(Ljava/util/List<+Lorg/bson/conversions/Bson;>;Ljava/lang/Class<TTResult;>;)Lcom/mongodb/client/ChangeStreamIterable<TTResult;>;
    MethodParameters:
             Name  Flags
      pipeline     final
      resultClass  final

  public com.mongodb.client.ChangeStreamIterable<org.bson.Document> watch(com.mongodb.client.ClientSession);
    descriptor: (Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/ChangeStreamIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.client.ClientSession clientSession
         0: .line 163
            aload 0 /* this */
            aload 1 /* clientSession */
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            ldc Lorg/bson/Document;
            invokevirtual com.mongodb.client.internal.MongoClientImpl.watch:(Lcom/mongodb/client/ClientSession;Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
            areturn
        end local 1 // com.mongodb.client.ClientSession clientSession
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    1     1  clientSession  Lcom/mongodb/client/ClientSession;
    Signature: (Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/ChangeStreamIterable<Lorg/bson/Document;>;
    MethodParameters:
               Name  Flags
      clientSession  final

  public <TResult> com.mongodb.client.ChangeStreamIterable<TResult> watch(com.mongodb.client.ClientSession, java.lang.Class<TResult>);
    descriptor: (Lcom/mongodb/client/ClientSession;Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.client.ClientSession clientSession
        start local 2 // java.lang.Class resultClass
         0: .line 168
            aload 0 /* this */
            aload 1 /* clientSession */
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            aload 2 /* resultClass */
            invokevirtual com.mongodb.client.internal.MongoClientImpl.watch:(Lcom/mongodb/client/ClientSession;Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
            areturn
        end local 2 // java.lang.Class resultClass
        end local 1 // com.mongodb.client.ClientSession clientSession
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    1     1  clientSession  Lcom/mongodb/client/ClientSession;
            0    1     2    resultClass  Ljava/lang/Class<TTResult;>;
    Signature: <TResult:Ljava/lang/Object;>(Lcom/mongodb/client/ClientSession;Ljava/lang/Class<TTResult;>;)Lcom/mongodb/client/ChangeStreamIterable<TTResult;>;
    MethodParameters:
               Name  Flags
      clientSession  final
      resultClass    final

  public com.mongodb.client.ChangeStreamIterable<org.bson.Document> watch(com.mongodb.client.ClientSession, java.util.List<? extends org.bson.conversions.Bson>);
    descriptor: (Lcom/mongodb/client/ClientSession;Ljava/util/List;)Lcom/mongodb/client/ChangeStreamIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.client.ClientSession clientSession
        start local 2 // java.util.List pipeline
         0: .line 173
            aload 0 /* this */
            aload 1 /* clientSession */
            aload 2 /* pipeline */
            ldc Lorg/bson/Document;
            invokevirtual com.mongodb.client.internal.MongoClientImpl.watch:(Lcom/mongodb/client/ClientSession;Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
            areturn
        end local 2 // java.util.List pipeline
        end local 1 // com.mongodb.client.ClientSession clientSession
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    1     1  clientSession  Lcom/mongodb/client/ClientSession;
            0    1     2       pipeline  Ljava/util/List<+Lorg/bson/conversions/Bson;>;
    Signature: (Lcom/mongodb/client/ClientSession;Ljava/util/List<+Lorg/bson/conversions/Bson;>;)Lcom/mongodb/client/ChangeStreamIterable<Lorg/bson/Document;>;
    MethodParameters:
               Name  Flags
      clientSession  final
      pipeline       final

  public <TResult> com.mongodb.client.ChangeStreamIterable<TResult> watch(com.mongodb.client.ClientSession, java.util.List<? extends org.bson.conversions.Bson>, java.lang.Class<TResult>);
    descriptor: (Lcom/mongodb/client/ClientSession;Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.client.ClientSession clientSession
        start local 2 // java.util.List pipeline
        start local 3 // java.lang.Class resultClass
         0: .line 179
            ldc "clientSession"
            aload 1 /* clientSession */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 180
            aload 0 /* this */
            aload 1 /* clientSession */
            aload 2 /* pipeline */
            aload 3 /* resultClass */
            invokevirtual com.mongodb.client.internal.MongoClientImpl.createChangeStreamIterable:(Lcom/mongodb/client/ClientSession;Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
            areturn
        end local 3 // java.lang.Class resultClass
        end local 2 // java.util.List pipeline
        end local 1 // com.mongodb.client.ClientSession clientSession
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    2     1  clientSession  Lcom/mongodb/client/ClientSession;
            0    2     2       pipeline  Ljava/util/List<+Lorg/bson/conversions/Bson;>;
            0    2     3    resultClass  Ljava/lang/Class<TTResult;>;
    Signature: <TResult:Ljava/lang/Object;>(Lcom/mongodb/client/ClientSession;Ljava/util/List<+Lorg/bson/conversions/Bson;>;Ljava/lang/Class<TTResult;>;)Lcom/mongodb/client/ChangeStreamIterable<TTResult;>;
    MethodParameters:
               Name  Flags
      clientSession  final
      pipeline       final
      resultClass    final

  public com.mongodb.connection.ClusterDescription getClusterDescription();
    descriptor: ()Lcom/mongodb/connection/ClusterDescription;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
         0: .line 185
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.delegate:Lcom/mongodb/client/internal/MongoClientDelegate;
            invokevirtual com.mongodb.client.internal.MongoClientDelegate.getCluster:()Lcom/mongodb/connection/Cluster;
            invokeinterface com.mongodb.connection.Cluster.getCurrentDescription:()Lcom/mongodb/connection/ClusterDescription;
            areturn
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/client/internal/MongoClientImpl;

  private <TResult> com.mongodb.client.ChangeStreamIterable<TResult> createChangeStreamIterable(com.mongodb.client.ClientSession, java.util.List<? extends org.bson.conversions.Bson>, java.lang.Class<TResult>);
    descriptor: (Lcom/mongodb/client/ClientSession;Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/client/ChangeStreamIterable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=4, args_size=4
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.client.ClientSession clientSession
        start local 2 // java.util.List pipeline
        start local 3 // java.lang.Class resultClass
         0: .line 191
            aload 1 /* clientSession */
            ldc "admin"
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getCodecRegistry:()Lorg/bson/codecs/configuration/CodecRegistry;
         1: .line 192
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getReadPreference:()Lcom/mongodb/ReadPreference;
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getReadConcern:()Lcom/mongodb/ReadConcern;
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.delegate:Lcom/mongodb/client/internal/MongoClientDelegate;
            invokevirtual com.mongodb.client.internal.MongoClientDelegate.getOperationExecutor:()Lcom/mongodb/client/internal/OperationExecutor;
            aload 2 /* pipeline */
            aload 3 /* resultClass */
         2: .line 193
            getstatic com.mongodb.client.model.changestream.ChangeStreamLevel.CLIENT:Lcom/mongodb/client/model/changestream/ChangeStreamLevel;
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getRetryReads:()Z
         3: .line 191
            invokestatic com.mongodb.client.internal.MongoIterables.changeStreamOf:(Lcom/mongodb/client/ClientSession;Ljava/lang/String;Lorg/bson/codecs/configuration/CodecRegistry;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/internal/OperationExecutor;Ljava/util/List;Ljava/lang/Class;Lcom/mongodb/client/model/changestream/ChangeStreamLevel;Z)Lcom/mongodb/client/ChangeStreamIterable;
            areturn
        end local 3 // java.lang.Class resultClass
        end local 2 // java.util.List pipeline
        end local 1 // com.mongodb.client.ClientSession clientSession
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    4     1  clientSession  Lcom/mongodb/client/ClientSession;
            0    4     2       pipeline  Ljava/util/List<+Lorg/bson/conversions/Bson;>;
            0    4     3    resultClass  Ljava/lang/Class<TTResult;>;
    Signature: <TResult:Ljava/lang/Object;>(Lcom/mongodb/client/ClientSession;Ljava/util/List<+Lorg/bson/conversions/Bson;>;Ljava/lang/Class<TTResult;>;)Lcom/mongodb/client/ChangeStreamIterable<TTResult;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
      2:
    MethodParameters:
               Name  Flags
      clientSession  final
      pipeline       final
      resultClass    final

  public com.mongodb.connection.Cluster getCluster();
    descriptor: ()Lcom/mongodb/connection/Cluster;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
         0: .line 197
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.delegate:Lcom/mongodb/client/internal/MongoClientDelegate;
            invokevirtual com.mongodb.client.internal.MongoClientDelegate.getCluster:()Lcom/mongodb/connection/Cluster;
            areturn
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/client/internal/MongoClientImpl;

  public org.bson.codecs.configuration.CodecRegistry getCodecRegistry();
    descriptor: ()Lorg/bson/codecs/configuration/CodecRegistry;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
         0: .line 201
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.delegate:Lcom/mongodb/client/internal/MongoClientDelegate;
            invokevirtual com.mongodb.client.internal.MongoClientDelegate.getCodecRegistry:()Lorg/bson/codecs/configuration/CodecRegistry;
            areturn
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/client/internal/MongoClientImpl;

  private static com.mongodb.connection.Cluster createCluster(com.mongodb.MongoClientSettings, com.mongodb.MongoDriverInformation);
    descriptor: (Lcom/mongodb/MongoClientSettings;Lcom/mongodb/MongoDriverInformation;)Lcom/mongodb/connection/Cluster;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=11, locals=3, args_size=2
        start local 0 // com.mongodb.MongoClientSettings settings
        start local 1 // com.mongodb.MongoDriverInformation mongoDriverInformation
         0: .line 206
            ldc "settings"
            aload 0 /* settings */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 207
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getCredential:()Lcom/mongodb/MongoCredential;
            ifnull 2
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getCredential:()Lcom/mongodb/MongoCredential;
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            goto 3
         2: .line 208
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
         3: .line 207
      StackMap locals:
      StackMap stack: java.util.List
            astore 2 /* credentialList */
        start local 2 // java.util.List credentialList
         4: .line 209
            new com.mongodb.connection.DefaultClusterFactory
            dup
            invokespecial com.mongodb.connection.DefaultClusterFactory.<init>:()V
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getClusterSettings:()Lcom/mongodb/connection/ClusterSettings;
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getServerSettings:()Lcom/mongodb/connection/ServerSettings;
         5: .line 210
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getConnectionPoolSettings:()Lcom/mongodb/connection/ConnectionPoolSettings;
            aload 0 /* settings */
            iconst_0
            invokestatic com.mongodb.client.internal.MongoClientImpl.getStreamFactory:(Lcom/mongodb/MongoClientSettings;Z)Lcom/mongodb/connection/StreamFactory;
            aload 0 /* settings */
            iconst_1
            invokestatic com.mongodb.client.internal.MongoClientImpl.getStreamFactory:(Lcom/mongodb/MongoClientSettings;Z)Lcom/mongodb/connection/StreamFactory;
            aload 2 /* credentialList */
         6: .line 211
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getCommandListeners:()Ljava/util/List;
            invokestatic com.mongodb.internal.event.EventListenerHelper.getCommandListener:(Ljava/util/List;)Lcom/mongodb/event/CommandListener;
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getApplicationName:()Ljava/lang/String;
            aload 1 /* mongoDriverInformation */
         7: .line 212
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getCompressorList:()Ljava/util/List;
         8: .line 209
            invokevirtual com.mongodb.connection.DefaultClusterFactory.createCluster:(Lcom/mongodb/connection/ClusterSettings;Lcom/mongodb/connection/ServerSettings;Lcom/mongodb/connection/ConnectionPoolSettings;Lcom/mongodb/connection/StreamFactory;Lcom/mongodb/connection/StreamFactory;Ljava/util/List;Lcom/mongodb/event/CommandListener;Ljava/lang/String;Lcom/mongodb/MongoDriverInformation;Ljava/util/List;)Lcom/mongodb/connection/Cluster;
            areturn
        end local 2 // java.util.List credentialList
        end local 1 // com.mongodb.MongoDriverInformation mongoDriverInformation
        end local 0 // com.mongodb.MongoClientSettings settings
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    9     0                settings  Lcom/mongodb/MongoClientSettings;
            0    9     1  mongoDriverInformation  Lcom/mongodb/MongoDriverInformation;
            4    9     2          credentialList  Ljava/util/List<Lcom/mongodb/MongoCredential;>;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        com.mongodb.lang.Nullable()
    MethodParameters:
                        Name  Flags
      settings                final
      mongoDriverInformation  final

  private static com.mongodb.connection.StreamFactory getStreamFactory(com.mongodb.MongoClientSettings, boolean);
    descriptor: (Lcom/mongodb/MongoClientSettings;Z)Lcom/mongodb/connection/StreamFactory;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.mongodb.MongoClientSettings settings
        start local 1 // boolean isHeartbeat
         0: .line 216
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getStreamFactoryFactory:()Lcom/mongodb/connection/StreamFactoryFactory;
            astore 2 /* streamFactoryFactory */
        start local 2 // com.mongodb.connection.StreamFactoryFactory streamFactoryFactory
         1: .line 217
            iload 1 /* isHeartbeat */
            ifeq 2
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getHeartbeatSocketSettings:()Lcom/mongodb/connection/SocketSettings;
            goto 3
      StackMap locals: com.mongodb.connection.StreamFactoryFactory
      StackMap stack:
         2: aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getSocketSettings:()Lcom/mongodb/connection/SocketSettings;
      StackMap locals:
      StackMap stack: com.mongodb.connection.SocketSettings
         3: astore 3 /* socketSettings */
        start local 3 // com.mongodb.connection.SocketSettings socketSettings
         4: .line 218
            aload 2 /* streamFactoryFactory */
            ifnonnull 6
         5: .line 219
            new com.mongodb.connection.SocketStreamFactory
            dup
            aload 3 /* socketSettings */
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getSslSettings:()Lcom/mongodb/connection/SslSettings;
            invokespecial com.mongodb.connection.SocketStreamFactory.<init>:(Lcom/mongodb/connection/SocketSettings;Lcom/mongodb/connection/SslSettings;)V
            areturn
         6: .line 221
      StackMap locals: com.mongodb.connection.SocketSettings
      StackMap stack:
            aload 2 /* streamFactoryFactory */
            aload 3 /* socketSettings */
            aload 0 /* settings */
            invokevirtual com.mongodb.MongoClientSettings.getSslSettings:()Lcom/mongodb/connection/SslSettings;
            invokeinterface com.mongodb.connection.StreamFactoryFactory.create:(Lcom/mongodb/connection/SocketSettings;Lcom/mongodb/connection/SslSettings;)Lcom/mongodb/connection/StreamFactory;
            areturn
        end local 3 // com.mongodb.connection.SocketSettings socketSettings
        end local 2 // com.mongodb.connection.StreamFactoryFactory streamFactoryFactory
        end local 1 // boolean isHeartbeat
        end local 0 // com.mongodb.MongoClientSettings settings
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    7     0              settings  Lcom/mongodb/MongoClientSettings;
            0    7     1           isHeartbeat  Z
            1    7     2  streamFactoryFactory  Lcom/mongodb/connection/StreamFactoryFactory;
            4    7     3        socketSettings  Lcom/mongodb/connection/SocketSettings;
    MethodParameters:
             Name  Flags
      settings     final
      isHeartbeat  final

  private <T> com.mongodb.client.ListDatabasesIterable<T> createListDatabasesIterable(com.mongodb.client.ClientSession, java.lang.Class<T>);
    descriptor: (Lcom/mongodb/client/ClientSession;Ljava/lang/Class;)Lcom/mongodb/client/ListDatabasesIterable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.client.ClientSession clientSession
        start local 2 // java.lang.Class clazz
         0: .line 226
            aload 1 /* clientSession */
            aload 2 /* clazz */
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.delegate:Lcom/mongodb/client/internal/MongoClientDelegate;
            invokevirtual com.mongodb.client.internal.MongoClientDelegate.getCodecRegistry:()Lorg/bson/codecs/configuration/CodecRegistry;
         1: .line 227
            invokestatic com.mongodb.ReadPreference.primary:()Lcom/mongodb/ReadPreference;
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.delegate:Lcom/mongodb/client/internal/MongoClientDelegate;
            invokevirtual com.mongodb.client.internal.MongoClientDelegate.getOperationExecutor:()Lcom/mongodb/client/internal/OperationExecutor;
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientImpl.settings:Lcom/mongodb/MongoClientSettings;
            invokevirtual com.mongodb.MongoClientSettings.getRetryReads:()Z
         2: .line 226
            invokestatic com.mongodb.client.internal.MongoIterables.listDatabasesOf:(Lcom/mongodb/client/ClientSession;Ljava/lang/Class;Lorg/bson/codecs/configuration/CodecRegistry;Lcom/mongodb/ReadPreference;Lcom/mongodb/client/internal/OperationExecutor;Z)Lcom/mongodb/client/ListDatabasesIterable;
            areturn
        end local 2 // java.lang.Class clazz
        end local 1 // com.mongodb.client.ClientSession clientSession
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    3     1  clientSession  Lcom/mongodb/client/ClientSession;
            0    3     2          clazz  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/client/ClientSession;Ljava/lang/Class<TT;>;)Lcom/mongodb/client/ListDatabasesIterable<TT;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
    MethodParameters:
               Name  Flags
      clientSession  final
      clazz          final

  private com.mongodb.client.MongoIterable<java.lang.String> createListDatabaseNamesIterable(com.mongodb.client.ClientSession);
    descriptor: (Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/MongoIterable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.mongodb.client.internal.MongoClientImpl this
        start local 1 // com.mongodb.client.ClientSession clientSession
         0: .line 231
            aload 0 /* this */
            aload 1 /* clientSession */
            ldc Lorg/bson/BsonDocument;
            invokevirtual com.mongodb.client.internal.MongoClientImpl.createListDatabasesIterable:(Lcom/mongodb/client/ClientSession;Ljava/lang/Class;)Lcom/mongodb/client/ListDatabasesIterable;
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokeinterface com.mongodb.client.ListDatabasesIterable.nameOnly:(Ljava/lang/Boolean;)Lcom/mongodb/client/ListDatabasesIterable;
            new com.mongodb.client.internal.MongoClientImpl$1
            dup
            aload 0 /* this */
            invokespecial com.mongodb.client.internal.MongoClientImpl$1.<init>:(Lcom/mongodb/client/internal/MongoClientImpl;)V
            invokeinterface com.mongodb.client.ListDatabasesIterable.map:(Lcom/mongodb/Function;)Lcom/mongodb/client/MongoIterable;
            areturn
        end local 1 // com.mongodb.client.ClientSession clientSession
        end local 0 // com.mongodb.client.internal.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/mongodb/client/internal/MongoClientImpl;
            0    1     1  clientSession  Lcom/mongodb/client/ClientSession;
    Signature: (Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/MongoIterable<Ljava/lang/String;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
    MethodParameters:
               Name  Flags
      clientSession  final
}
SourceFile: "MongoClientImpl.java"
NestMembers:
  com.mongodb.client.internal.MongoClientImpl$1
InnerClasses:
  public final Builder = com.mongodb.ClientSessionOptions$Builder of com.mongodb.ClientSessionOptions
  public final Builder = com.mongodb.TransactionOptions$Builder of com.mongodb.TransactionOptions
  com.mongodb.client.internal.MongoClientImpl$1