class com.mongodb.async.client.MongoClientImpl implements com.mongodb.async.client.MongoClient
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.mongodb.async.client.MongoClientImpl
  super_class: java.lang.Object
{
  private static final com.mongodb.diagnostics.logging.Logger LOGGER;
    descriptor: Lcom/mongodb/diagnostics/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final com.mongodb.connection.Cluster cluster;
    descriptor: Lcom/mongodb/connection/Cluster;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.mongodb.async.client.MongoClientSettings settings;
    descriptor: Lcom/mongodb/async/client/MongoClientSettings;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.mongodb.async.client.OperationExecutor executor;
    descriptor: Lcom/mongodb/async/client/OperationExecutor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.io.Closeable externalResourceCloser;
    descriptor: Ljava/io/Closeable;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.mongodb.internal.session.ServerSessionPool serverSessionPool;
    descriptor: Lcom/mongodb/internal/session/ServerSessionPool;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.mongodb.async.client.ClientSessionHelper clientSessionHelper;
    descriptor: Lcom/mongodb/async/client/ClientSessionHelper;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 47
            ldc "client"
            invokestatic com.mongodb.diagnostics.logging.Loggers.getLogger:(Ljava/lang/String;)Lcom/mongodb/diagnostics/logging/Logger;
            putstatic com.mongodb.async.client.MongoClientImpl.LOGGER:Lcom/mongodb/diagnostics/logging/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(com.mongodb.async.client.MongoClientSettings, com.mongodb.connection.Cluster, java.io.Closeable);
    descriptor: (Lcom/mongodb/async/client/MongoClientSettings;Lcom/mongodb/connection/Cluster;Ljava/io/Closeable;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.mongodb.async.client.MongoClientImpl this
        start local 1 // com.mongodb.async.client.MongoClientSettings settings
        start local 2 // com.mongodb.connection.Cluster cluster
        start local 3 // java.io.Closeable externalResourceCloser
         0: .line 57
            aload 0 /* this */
            aload 1 /* settings */
            aload 2 /* cluster */
            aconst_null
            aload 3 /* externalResourceCloser */
            invokespecial com.mongodb.async.client.MongoClientImpl.<init>:(Lcom/mongodb/async/client/MongoClientSettings;Lcom/mongodb/connection/Cluster;Lcom/mongodb/async/client/OperationExecutor;Ljava/io/Closeable;)V
         1: .line 58
            return
        end local 3 // java.io.Closeable externalResourceCloser
        end local 2 // com.mongodb.connection.Cluster cluster
        end local 1 // com.mongodb.async.client.MongoClientSettings settings
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lcom/mongodb/async/client/MongoClientImpl;
            0    2     1                settings  Lcom/mongodb/async/client/MongoClientSettings;
            0    2     2                 cluster  Lcom/mongodb/connection/Cluster;
            0    2     3  externalResourceCloser  Ljava/io/Closeable;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        com.mongodb.lang.Nullable()
    MethodParameters:
                        Name  Flags
      settings                final
      cluster                 final
      externalResourceCloser  final

  void <init>(com.mongodb.async.client.MongoClientSettings, com.mongodb.connection.Cluster, com.mongodb.async.client.OperationExecutor);
    descriptor: (Lcom/mongodb/async/client/MongoClientSettings;Lcom/mongodb/connection/Cluster;Lcom/mongodb/async/client/OperationExecutor;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.mongodb.async.client.MongoClientImpl this
        start local 1 // com.mongodb.async.client.MongoClientSettings settings
        start local 2 // com.mongodb.connection.Cluster cluster
        start local 3 // com.mongodb.async.client.OperationExecutor executor
         0: .line 61
            aload 0 /* this */
            aload 1 /* settings */
            aload 2 /* cluster */
            aload 3 /* executor */
            aconst_null
            invokespecial com.mongodb.async.client.MongoClientImpl.<init>:(Lcom/mongodb/async/client/MongoClientSettings;Lcom/mongodb/connection/Cluster;Lcom/mongodb/async/client/OperationExecutor;Ljava/io/Closeable;)V
         1: .line 62
            return
        end local 3 // com.mongodb.async.client.OperationExecutor executor
        end local 2 // com.mongodb.connection.Cluster cluster
        end local 1 // com.mongodb.async.client.MongoClientSettings settings
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/mongodb/async/client/MongoClientImpl;
            0    2     1  settings  Lcom/mongodb/async/client/MongoClientSettings;
            0    2     2   cluster  Lcom/mongodb/connection/Cluster;
            0    2     3  executor  Lcom/mongodb/async/client/OperationExecutor;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        com.mongodb.lang.Nullable()
    MethodParameters:
          Name  Flags
      settings  final
      cluster   final
      executor  final

  private void <init>(com.mongodb.async.client.MongoClientSettings, com.mongodb.connection.Cluster, com.mongodb.async.client.OperationExecutor, java.io.Closeable);
    descriptor: (Lcom/mongodb/async/client/MongoClientSettings;Lcom/mongodb/connection/Cluster;Lcom/mongodb/async/client/OperationExecutor;Ljava/io/Closeable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=5
        start local 0 // com.mongodb.async.client.MongoClientImpl this
        start local 1 // com.mongodb.async.client.MongoClientSettings settings
        start local 2 // com.mongodb.connection.Cluster cluster
        start local 3 // com.mongodb.async.client.OperationExecutor executor
        start local 4 // java.io.Closeable externalResourceCloser
         0: .line 64
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 66
            aload 0 /* this */
            ldc "settings"
            aload 1 /* settings */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.async.client.MongoClientSettings
            putfield com.mongodb.async.client.MongoClientImpl.settings:Lcom/mongodb/async/client/MongoClientSettings;
         2: .line 67
            aload 0 /* this */
            ldc "cluster"
            aload 2 /* cluster */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.connection.Cluster
            putfield com.mongodb.async.client.MongoClientImpl.cluster:Lcom/mongodb/connection/Cluster;
         3: .line 68
            aload 0 /* this */
            new com.mongodb.internal.session.ServerSessionPool
            dup
            aload 2 /* cluster */
            invokespecial com.mongodb.internal.session.ServerSessionPool.<init>:(Lcom/mongodb/connection/Cluster;)V
            putfield com.mongodb.async.client.MongoClientImpl.serverSessionPool:Lcom/mongodb/internal/session/ServerSessionPool;
         4: .line 69
            aload 0 /* this */
            new com.mongodb.async.client.ClientSessionHelper
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.serverSessionPool:Lcom/mongodb/internal/session/ServerSessionPool;
            invokespecial com.mongodb.async.client.ClientSessionHelper.<init>:(Lcom/mongodb/async/client/MongoClientImpl;Lcom/mongodb/internal/session/ServerSessionPool;)V
            putfield com.mongodb.async.client.MongoClientImpl.clientSessionHelper:Lcom/mongodb/async/client/ClientSessionHelper;
         5: .line 70
            aload 1 /* settings */
            invokevirtual com.mongodb.async.client.MongoClientSettings.getAutoEncryptionSettings:()Lcom/mongodb/AutoEncryptionSettings;
            astore 5 /* autoEncryptSettings */
        start local 5 // com.mongodb.AutoEncryptionSettings autoEncryptSettings
         6: .line 71
            aload 0 /* this */
            aload 5 /* autoEncryptSettings */
            ifnull 7
            aload 0 /* this */
            aload 5 /* autoEncryptSettings */
            invokestatic com.mongodb.async.client.internal.Crypts.createCrypt:(Lcom/mongodb/async/client/MongoClient;Lcom/mongodb/AutoEncryptionSettings;)Lcom/mongodb/async/client/internal/Crypt;
            goto 8
      StackMap locals: com.mongodb.async.client.MongoClientImpl com.mongodb.async.client.MongoClientSettings com.mongodb.connection.Cluster com.mongodb.async.client.OperationExecutor java.io.Closeable com.mongodb.AutoEncryptionSettings
      StackMap stack: com.mongodb.async.client.MongoClientImpl
         7: aconst_null
      StackMap locals: com.mongodb.async.client.MongoClientImpl com.mongodb.async.client.MongoClientSettings com.mongodb.connection.Cluster com.mongodb.async.client.OperationExecutor java.io.Closeable com.mongodb.AutoEncryptionSettings
      StackMap stack: com.mongodb.async.client.MongoClientImpl com.mongodb.async.client.internal.Crypt
         8: putfield com.mongodb.async.client.MongoClientImpl.crypt:Lcom/mongodb/async/client/internal/Crypt;
         9: .line 72
            aload 3 /* executor */
            ifnonnull 12
        10: .line 73
            aload 0 /* this */
            new com.mongodb.async.client.OperationExecutorImpl
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.clientSessionHelper:Lcom/mongodb/async/client/ClientSessionHelper;
            invokespecial com.mongodb.async.client.OperationExecutorImpl.<init>:(Lcom/mongodb/async/client/MongoClientImpl;Lcom/mongodb/async/client/ClientSessionHelper;)V
            putfield com.mongodb.async.client.MongoClientImpl.executor:Lcom/mongodb/async/client/OperationExecutor;
        11: .line 74
            goto 13
        12: .line 75
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* executor */
            putfield com.mongodb.async.client.MongoClientImpl.executor:Lcom/mongodb/async/client/OperationExecutor;
        13: .line 77
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* externalResourceCloser */
            putfield com.mongodb.async.client.MongoClientImpl.externalResourceCloser:Ljava/io/Closeable;
        14: .line 78
            return
        end local 5 // com.mongodb.AutoEncryptionSettings autoEncryptSettings
        end local 4 // java.io.Closeable externalResourceCloser
        end local 3 // com.mongodb.async.client.OperationExecutor executor
        end local 2 // com.mongodb.connection.Cluster cluster
        end local 1 // com.mongodb.async.client.MongoClientSettings settings
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   15     0                    this  Lcom/mongodb/async/client/MongoClientImpl;
            0   15     1                settings  Lcom/mongodb/async/client/MongoClientSettings;
            0   15     2                 cluster  Lcom/mongodb/connection/Cluster;
            0   15     3                executor  Lcom/mongodb/async/client/OperationExecutor;
            0   15     4  externalResourceCloser  Ljava/io/Closeable;
            6   15     5     autoEncryptSettings  Lcom/mongodb/AutoEncryptionSettings;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        com.mongodb.lang.Nullable()
      3:
        com.mongodb.lang.Nullable()
    MethodParameters:
                        Name  Flags
      settings                final
      cluster                 final
      executor                final
      externalResourceCloser  final

  public void startSession(com.mongodb.async.SingleResultCallback<com.mongodb.async.client.ClientSession>);
    descriptor: (Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.mongodb.async.client.MongoClientImpl this
        start local 1 // com.mongodb.async.SingleResultCallback callback
         0: .line 82
            aload 0 /* this */
            invokestatic com.mongodb.ClientSessionOptions.builder:()Lcom/mongodb/ClientSessionOptions$Builder;
            invokevirtual com.mongodb.ClientSessionOptions$Builder.build:()Lcom/mongodb/ClientSessionOptions;
            aload 1 /* callback */
            invokevirtual com.mongodb.async.client.MongoClientImpl.startSession:(Lcom/mongodb/ClientSessionOptions;Lcom/mongodb/async/SingleResultCallback;)V
         1: .line 83
            return
        end local 1 // com.mongodb.async.SingleResultCallback callback
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/mongodb/async/client/MongoClientImpl;
            0    2     1  callback  Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/async/client/ClientSession;>;
    Signature: (Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/async/client/ClientSession;>;)V
    MethodParameters:
          Name  Flags
      callback  final

  public void startSession(com.mongodb.ClientSessionOptions, com.mongodb.async.SingleResultCallback<com.mongodb.async.client.ClientSession>);
    descriptor: (Lcom/mongodb/ClientSessionOptions;Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // com.mongodb.async.client.MongoClientImpl this
        start local 1 // com.mongodb.ClientSessionOptions options
        start local 2 // com.mongodb.async.SingleResultCallback callback
         0: .line 87
            ldc "callback"
            aload 2 /* callback */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 88
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.clientSessionHelper:Lcom/mongodb/async/client/ClientSessionHelper;
            ldc "options"
            aload 1 /* options */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.ClientSessionOptions
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.executor:Lcom/mongodb/async/client/OperationExecutor;
            new com.mongodb.async.client.MongoClientImpl$1
            dup
            aload 0 /* this */
            aload 2 /* callback */
            invokespecial com.mongodb.async.client.MongoClientImpl$1.<init>:(Lcom/mongodb/async/client/MongoClientImpl;Lcom/mongodb/async/SingleResultCallback;)V
            invokevirtual com.mongodb.async.client.ClientSessionHelper.createClientSession:(Lcom/mongodb/ClientSessionOptions;Lcom/mongodb/async/client/OperationExecutor;Lcom/mongodb/async/SingleResultCallback;)V
         2: .line 102
            return
        end local 2 // com.mongodb.async.SingleResultCallback callback
        end local 1 // com.mongodb.ClientSessionOptions options
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/mongodb/async/client/MongoClientImpl;
            0    3     1   options  Lcom/mongodb/ClientSessionOptions;
            0    3     2  callback  Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/async/client/ClientSession;>;
    Signature: (Lcom/mongodb/ClientSessionOptions;Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/async/client/ClientSession;>;)V
    MethodParameters:
          Name  Flags
      options   final
      callback  final

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

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.mongodb.async.client.MongoClientImpl this
         0: .line 112
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.crypt:Lcom/mongodb/async/client/internal/Crypt;
            ifnull 2
         1: .line 113
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.crypt:Lcom/mongodb/async/client/internal/Crypt;
            invokevirtual com.mongodb.async.client.internal.Crypt.close:()V
         2: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.serverSessionPool:Lcom/mongodb/internal/session/ServerSessionPool;
            invokevirtual com.mongodb.internal.session.ServerSessionPool.close:()V
         3: .line 116
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.cluster:Lcom/mongodb/connection/Cluster;
            invokeinterface com.mongodb.connection.Cluster.close:()V
         4: .line 117
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.externalResourceCloser:Ljava/io/Closeable;
            ifnull 9
         5: .line 119
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.externalResourceCloser:Ljava/io/Closeable;
            invokeinterface java.io.Closeable.close:()V
         6: .line 120
            goto 9
      StackMap locals:
      StackMap stack: java.io.IOException
         7: astore 1 /* e */
        start local 1 // java.io.IOException e
         8: .line 121
            getstatic com.mongodb.async.client.MongoClientImpl.LOGGER:Lcom/mongodb/diagnostics/logging/Logger;
            ldc "Exception closing resource"
            aload 1 /* e */
            invokeinterface com.mongodb.diagnostics.logging.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 1 // java.io.IOException e
         9: .line 124
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lcom/mongodb/async/client/MongoClientImpl;
            8    9     1     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           5     6       7  Class java.io.IOException

  public com.mongodb.async.client.MongoClientSettings getSettings();
    descriptor: ()Lcom/mongodb/async/client/MongoClientSettings;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.async.client.MongoClientImpl this
         0: .line 128
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.settings:Lcom/mongodb/async/client/MongoClientSettings;
            areturn
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/async/client/MongoClientImpl;

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

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

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

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

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

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

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

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

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

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

  public <TResult> com.mongodb.async.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/async/client/ChangeStreamIterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.async.client.MongoClientImpl this
        start local 1 // java.util.List pipeline
        start local 2 // java.lang.Class resultClass
         0: .line 190
            aload 0 /* this */
            aconst_null
            aload 1 /* pipeline */
            aload 2 /* resultClass */
            invokevirtual com.mongodb.async.client.MongoClientImpl.createChangeStreamIterable:(Lcom/mongodb/async/client/ClientSession;Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/async/client/ChangeStreamIterable;
            areturn
        end local 2 // java.lang.Class resultClass
        end local 1 // java.util.List pipeline
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/mongodb/async/client/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/async/client/ChangeStreamIterable<TTResult;>;
    MethodParameters:
             Name  Flags
      pipeline     final
      resultClass  final

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

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

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

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

  private <TResult> com.mongodb.async.client.ChangeStreamIterable<TResult> createChangeStreamIterable(com.mongodb.async.client.ClientSession, java.util.List<? extends org.bson.conversions.Bson>, java.lang.Class<TResult>);
    descriptor: (Lcom/mongodb/async/client/ClientSession;Ljava/util/List;Ljava/lang/Class;)Lcom/mongodb/async/client/ChangeStreamIterable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=12, locals=4, args_size=4
        start local 0 // com.mongodb.async.client.MongoClientImpl this
        start local 1 // com.mongodb.async.client.ClientSession clientSession
        start local 2 // java.util.List pipeline
        start local 3 // java.lang.Class resultClass
         0: .line 218
            new com.mongodb.async.client.ChangeStreamIterableImpl
            dup
            aload 1 /* clientSession */
            ldc "admin"
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.settings:Lcom/mongodb/async/client/MongoClientSettings;
            invokevirtual com.mongodb.async.client.MongoClientSettings.getCodecRegistry:()Lorg/bson/codecs/configuration/CodecRegistry;
         1: .line 219
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.settings:Lcom/mongodb/async/client/MongoClientSettings;
            invokevirtual com.mongodb.async.client.MongoClientSettings.getReadPreference:()Lcom/mongodb/ReadPreference;
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.settings:Lcom/mongodb/async/client/MongoClientSettings;
            invokevirtual com.mongodb.async.client.MongoClientSettings.getReadConcern:()Lcom/mongodb/ReadConcern;
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.executor:Lcom/mongodb/async/client/OperationExecutor;
            aload 2 /* pipeline */
            aload 3 /* resultClass */
            getstatic com.mongodb.client.model.changestream.ChangeStreamLevel.CLIENT:Lcom/mongodb/client/model/changestream/ChangeStreamLevel;
         2: .line 220
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.settings:Lcom/mongodb/async/client/MongoClientSettings;
            invokevirtual com.mongodb.async.client.MongoClientSettings.getRetryReads:()Z
         3: .line 218
            invokespecial com.mongodb.async.client.ChangeStreamIterableImpl.<init>:(Lcom/mongodb/async/client/ClientSession;Ljava/lang/String;Lorg/bson/codecs/configuration/CodecRegistry;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;Lcom/mongodb/async/client/OperationExecutor;Ljava/util/List;Ljava/lang/Class;Lcom/mongodb/client/model/changestream/ChangeStreamLevel;Z)V
            areturn
        end local 3 // java.lang.Class resultClass
        end local 2 // java.util.List pipeline
        end local 1 // com.mongodb.async.client.ClientSession clientSession
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/mongodb/async/client/MongoClientImpl;
            0    4     1  clientSession  Lcom/mongodb/async/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/async/client/ClientSession;Ljava/util/List<+Lorg/bson/conversions/Bson;>;Ljava/lang/Class<TTResult;>;)Lcom/mongodb/async/client/ChangeStreamIterable<TTResult;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
      2:
    MethodParameters:
               Name  Flags
      clientSession  final
      pipeline       final
      resultClass    final

  private <T> com.mongodb.async.client.ListDatabasesIterable<T> createListDatabasesIterable(com.mongodb.async.client.ClientSession, java.lang.Class<T>);
    descriptor: (Lcom/mongodb/async/client/ClientSession;Ljava/lang/Class;)Lcom/mongodb/async/client/ListDatabasesIterable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // com.mongodb.async.client.MongoClientImpl this
        start local 1 // com.mongodb.async.client.ClientSession clientSession
        start local 2 // java.lang.Class clazz
         0: .line 224
            new com.mongodb.async.client.ListDatabasesIterableImpl
            dup
            aload 1 /* clientSession */
            aload 2 /* clazz */
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.settings:Lcom/mongodb/async/client/MongoClientSettings;
            invokevirtual com.mongodb.async.client.MongoClientSettings.getCodecRegistry:()Lorg/bson/codecs/configuration/CodecRegistry;
         1: .line 225
            invokestatic com.mongodb.ReadPreference.primary:()Lcom/mongodb/ReadPreference;
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.executor:Lcom/mongodb/async/client/OperationExecutor;
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.settings:Lcom/mongodb/async/client/MongoClientSettings;
            invokevirtual com.mongodb.async.client.MongoClientSettings.getRetryReads:()Z
         2: .line 224
            invokespecial com.mongodb.async.client.ListDatabasesIterableImpl.<init>:(Lcom/mongodb/async/client/ClientSession;Ljava/lang/Class;Lorg/bson/codecs/configuration/CodecRegistry;Lcom/mongodb/ReadPreference;Lcom/mongodb/async/client/OperationExecutor;Z)V
            areturn
        end local 2 // java.lang.Class clazz
        end local 1 // com.mongodb.async.client.ClientSession clientSession
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lcom/mongodb/async/client/MongoClientImpl;
            0    3     1  clientSession  Lcom/mongodb/async/client/ClientSession;
            0    3     2          clazz  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/async/client/ClientSession;Ljava/lang/Class<TT;>;)Lcom/mongodb/async/client/ListDatabasesIterable<TT;>;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
    MethodParameters:
               Name  Flags
      clientSession  final
      clazz          final

  com.mongodb.connection.Cluster getCluster();
    descriptor: ()Lcom/mongodb/connection/Cluster;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.async.client.MongoClientImpl this
         0: .line 229
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.cluster:Lcom/mongodb/connection/Cluster;
            areturn
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/async/client/MongoClientImpl;

  com.mongodb.internal.session.ServerSessionPool getServerSessionPool();
    descriptor: ()Lcom/mongodb/internal/session/ServerSessionPool;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.async.client.MongoClientImpl this
         0: .line 233
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.serverSessionPool:Lcom/mongodb/internal/session/ServerSessionPool;
            areturn
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/async/client/MongoClientImpl;

  com.mongodb.async.client.internal.Crypt getCrypt();
    descriptor: ()Lcom/mongodb/async/client/internal/Crypt;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.async.client.MongoClientImpl this
         0: .line 237
            aload 0 /* this */
            getfield com.mongodb.async.client.MongoClientImpl.crypt:Lcom/mongodb/async/client/internal/Crypt;
            areturn
        end local 0 // com.mongodb.async.client.MongoClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/mongodb/async/client/MongoClientImpl;
}
SourceFile: "MongoClientImpl.java"
NestMembers:
  com.mongodb.async.client.MongoClientImpl$1  com.mongodb.async.client.MongoClientImpl$2
InnerClasses:
  public final Builder = com.mongodb.ClientSessionOptions$Builder of com.mongodb.ClientSessionOptions
  com.mongodb.async.client.MongoClientImpl$1
  com.mongodb.async.client.MongoClientImpl$2