class com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor implements com.mongodb.client.internal.OperationExecutor
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor
  super_class: java.lang.Object
{
  final com.mongodb.client.internal.MongoClientDelegate this$0;
    descriptor: Lcom/mongodb/client/internal/MongoClientDelegate;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

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

  public <T> T execute(com.mongodb.operation.ReadOperation<T>, com.mongodb.ReadPreference, com.mongodb.ReadConcern);
    descriptor: (Lcom/mongodb/operation/ReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
        start local 1 // com.mongodb.operation.ReadOperation operation
        start local 2 // com.mongodb.ReadPreference readPreference
        start local 3 // com.mongodb.ReadConcern readConcern
         0: .line 175
            aload 0 /* this */
            aload 1 /* operation */
            aload 2 /* readPreference */
            aload 3 /* readConcern */
            aconst_null
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute:(Lcom/mongodb/operation/ReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;)Ljava/lang/Object;
            areturn
        end local 3 // com.mongodb.ReadConcern readConcern
        end local 2 // com.mongodb.ReadPreference readPreference
        end local 1 // com.mongodb.operation.ReadOperation operation
        end local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/mongodb/client/internal/MongoClientDelegate$DelegateOperationExecutor;
            0    1     1       operation  Lcom/mongodb/operation/ReadOperation<TT;>;
            0    1     2  readPreference  Lcom/mongodb/ReadPreference;
            0    1     3     readConcern  Lcom/mongodb/ReadConcern;
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/operation/ReadOperation<TT;>;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;)TT;
    MethodParameters:
                Name  Flags
      operation       final
      readPreference  final
      readConcern     final

  public <T> T execute(com.mongodb.operation.WriteOperation<T>, com.mongodb.ReadConcern);
    descriptor: (Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
        start local 1 // com.mongodb.operation.WriteOperation operation
        start local 2 // com.mongodb.ReadConcern readConcern
         0: .line 180
            aload 0 /* this */
            aload 1 /* operation */
            aload 2 /* readConcern */
            aconst_null
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute:(Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;)Ljava/lang/Object;
            areturn
        end local 2 // com.mongodb.ReadConcern readConcern
        end local 1 // com.mongodb.operation.WriteOperation operation
        end local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/mongodb/client/internal/MongoClientDelegate$DelegateOperationExecutor;
            0    1     1    operation  Lcom/mongodb/operation/WriteOperation<TT;>;
            0    1     2  readConcern  Lcom/mongodb/ReadConcern;
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/operation/WriteOperation<TT;>;Lcom/mongodb/ReadConcern;)TT;
    MethodParameters:
             Name  Flags
      operation    final
      readConcern  final

  public <T> T execute(com.mongodb.operation.ReadOperation<T>, com.mongodb.ReadPreference, com.mongodb.ReadConcern, com.mongodb.client.ClientSession);
    descriptor: (Lcom/mongodb/operation/ReadOperation;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=5
        start local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
        start local 1 // com.mongodb.operation.ReadOperation operation
        start local 2 // com.mongodb.ReadPreference readPreference
        start local 3 // com.mongodb.ReadConcern readConcern
        start local 4 // com.mongodb.client.ClientSession session
         0: .line 186
            aload 0 /* this */
            aload 4 /* session */
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getClientSession:(Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/ClientSession;
            astore 5 /* actualClientSession */
        start local 5 // com.mongodb.client.ClientSession actualClientSession
         1: .line 187
            aload 0 /* this */
            aload 2 /* readPreference */
            aload 3 /* readConcern */
            aload 5 /* actualClientSession */
         2: .line 188
            aload 4 /* session */
            ifnonnull 3
            aload 5 /* actualClientSession */
            ifnull 3
            iconst_1
            goto 4
      StackMap locals: com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor com.mongodb.operation.ReadOperation com.mongodb.ReadPreference com.mongodb.ReadConcern com.mongodb.client.ClientSession com.mongodb.client.ClientSession
      StackMap stack: com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor com.mongodb.ReadPreference com.mongodb.ReadConcern com.mongodb.client.ClientSession
         3: iconst_0
         4: .line 187
      StackMap locals: com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor com.mongodb.operation.ReadOperation com.mongodb.ReadPreference com.mongodb.ReadConcern com.mongodb.client.ClientSession com.mongodb.client.ClientSession
      StackMap stack: com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor com.mongodb.ReadPreference com.mongodb.ReadConcern com.mongodb.client.ClientSession int
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getReadBinding:(Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;Z)Lcom/mongodb/binding/ReadBinding;
            astore 6 /* binding */
        start local 6 // com.mongodb.binding.ReadBinding binding
         5: .line 191
            aload 4 /* session */
            ifnull 7
            aload 4 /* session */
            invokeinterface com.mongodb.client.ClientSession.hasActiveTransaction:()Z
            ifeq 7
            aload 6 /* binding */
            invokeinterface com.mongodb.binding.ReadBinding.getReadPreference:()Lcom/mongodb/ReadPreference;
            invokestatic com.mongodb.ReadPreference.primary:()Lcom/mongodb/ReadPreference;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 7
         6: .line 192
            new com.mongodb.MongoClientException
            dup
            ldc "Read preference in a transaction must be primary"
            invokespecial com.mongodb.MongoClientException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 194
      StackMap locals: com.mongodb.binding.ReadBinding
      StackMap stack:
            aload 1 /* operation */
            aload 6 /* binding */
            invokeinterface com.mongodb.operation.ReadOperation.execute:(Lcom/mongodb/binding/ReadBinding;)Ljava/lang/Object;
            astore 9
         8: .line 200
            aload 6 /* binding */
            invokeinterface com.mongodb.binding.ReadBinding.release:()V
         9: .line 194
            aload 9
            areturn
        10: .line 195
      StackMap locals:
      StackMap stack: com.mongodb.MongoException
            astore 7 /* e */
        start local 7 // com.mongodb.MongoException e
        11: .line 196
            aload 0 /* this */
            aload 4 /* session */
            aload 7 /* e */
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.labelException:(Lcom/mongodb/client/ClientSession;Lcom/mongodb/MongoException;)V
        12: .line 197
            aload 0 /* this */
            aload 4 /* session */
            aload 7 /* e */
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.unpinServerAddressOnTransientTransactionError:(Lcom/mongodb/client/ClientSession;Lcom/mongodb/MongoException;)V
        13: .line 198
            aload 7 /* e */
            athrow
        end local 7 // com.mongodb.MongoException e
        14: .line 199
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        15: .line 200
            aload 6 /* binding */
            invokeinterface com.mongodb.binding.ReadBinding.release:()V
        16: .line 201
            aload 8
            athrow
        end local 6 // com.mongodb.binding.ReadBinding binding
        end local 5 // com.mongodb.client.ClientSession actualClientSession
        end local 4 // com.mongodb.client.ClientSession session
        end local 3 // com.mongodb.ReadConcern readConcern
        end local 2 // com.mongodb.ReadPreference readPreference
        end local 1 // com.mongodb.operation.ReadOperation operation
        end local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   17     0                 this  Lcom/mongodb/client/internal/MongoClientDelegate$DelegateOperationExecutor;
            0   17     1            operation  Lcom/mongodb/operation/ReadOperation<TT;>;
            0   17     2       readPreference  Lcom/mongodb/ReadPreference;
            0   17     3          readConcern  Lcom/mongodb/ReadConcern;
            0   17     4              session  Lcom/mongodb/client/ClientSession;
            1   17     5  actualClientSession  Lcom/mongodb/client/ClientSession;
            5   17     6              binding  Lcom/mongodb/binding/ReadBinding;
           11   14     7                    e  Lcom/mongodb/MongoException;
      Exception table:
        from    to  target  type
           5     8      10  Class com.mongodb.MongoException
           5     8      14  any
          10    14      14  any
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/operation/ReadOperation<TT;>;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;)TT;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        com.mongodb.lang.Nullable()
    MethodParameters:
                Name  Flags
      operation       final
      readPreference  final
      readConcern     final
      session         final

  public <T> T execute(com.mongodb.operation.WriteOperation<T>, com.mongodb.ReadConcern, com.mongodb.client.ClientSession);
    descriptor: (Lcom/mongodb/operation/WriteOperation;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=4
        start local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
        start local 1 // com.mongodb.operation.WriteOperation operation
        start local 2 // com.mongodb.ReadConcern readConcern
        start local 3 // com.mongodb.client.ClientSession session
         0: .line 206
            aload 0 /* this */
            aload 3 /* session */
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getClientSession:(Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/ClientSession;
            astore 4 /* actualClientSession */
        start local 4 // com.mongodb.client.ClientSession actualClientSession
         1: .line 207
            aload 0 /* this */
            aload 2 /* readConcern */
            aload 4 /* actualClientSession */
         2: .line 208
            aload 3 /* session */
            ifnonnull 3
            aload 4 /* actualClientSession */
            ifnull 3
            iconst_1
            goto 4
      StackMap locals: com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor com.mongodb.operation.WriteOperation com.mongodb.ReadConcern com.mongodb.client.ClientSession com.mongodb.client.ClientSession
      StackMap stack: com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor com.mongodb.ReadConcern com.mongodb.client.ClientSession
         3: iconst_0
         4: .line 207
      StackMap locals: com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor com.mongodb.operation.WriteOperation com.mongodb.ReadConcern com.mongodb.client.ClientSession com.mongodb.client.ClientSession
      StackMap stack: com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor com.mongodb.ReadConcern com.mongodb.client.ClientSession int
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getWriteBinding:(Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;Z)Lcom/mongodb/binding/WriteBinding;
            astore 5 /* binding */
        start local 5 // com.mongodb.binding.WriteBinding binding
         5: .line 211
            aload 1 /* operation */
            aload 5 /* binding */
            invokeinterface com.mongodb.operation.WriteOperation.execute:(Lcom/mongodb/binding/WriteBinding;)Ljava/lang/Object;
            astore 8
         6: .line 217
            aload 5 /* binding */
            invokeinterface com.mongodb.binding.WriteBinding.release:()V
         7: .line 211
            aload 8
            areturn
         8: .line 212
      StackMap locals: com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor com.mongodb.operation.WriteOperation com.mongodb.ReadConcern com.mongodb.client.ClientSession com.mongodb.client.ClientSession com.mongodb.binding.WriteBinding
      StackMap stack: com.mongodb.MongoException
            astore 6 /* e */
        start local 6 // com.mongodb.MongoException e
         9: .line 213
            aload 0 /* this */
            aload 3 /* session */
            aload 6 /* e */
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.labelException:(Lcom/mongodb/client/ClientSession;Lcom/mongodb/MongoException;)V
        10: .line 214
            aload 0 /* this */
            aload 3 /* session */
            aload 6 /* e */
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.unpinServerAddressOnTransientTransactionError:(Lcom/mongodb/client/ClientSession;Lcom/mongodb/MongoException;)V
        11: .line 215
            aload 6 /* e */
            athrow
        end local 6 // com.mongodb.MongoException e
        12: .line 216
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7
        13: .line 217
            aload 5 /* binding */
            invokeinterface com.mongodb.binding.WriteBinding.release:()V
        14: .line 218
            aload 7
            athrow
        end local 5 // com.mongodb.binding.WriteBinding binding
        end local 4 // com.mongodb.client.ClientSession actualClientSession
        end local 3 // com.mongodb.client.ClientSession session
        end local 2 // com.mongodb.ReadConcern readConcern
        end local 1 // com.mongodb.operation.WriteOperation operation
        end local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   15     0                 this  Lcom/mongodb/client/internal/MongoClientDelegate$DelegateOperationExecutor;
            0   15     1            operation  Lcom/mongodb/operation/WriteOperation<TT;>;
            0   15     2          readConcern  Lcom/mongodb/ReadConcern;
            0   15     3              session  Lcom/mongodb/client/ClientSession;
            1   15     4  actualClientSession  Lcom/mongodb/client/ClientSession;
            5   15     5              binding  Lcom/mongodb/binding/WriteBinding;
            9   12     6                    e  Lcom/mongodb/MongoException;
      Exception table:
        from    to  target  type
           5     6       8  Class com.mongodb.MongoException
           5     6      12  any
           8    12      12  any
    Signature: <T:Ljava/lang/Object;>(Lcom/mongodb/operation/WriteOperation<TT;>;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;)TT;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        com.mongodb.lang.Nullable()
    MethodParameters:
             Name  Flags
      operation    final
      readConcern  final
      session      final

  com.mongodb.binding.WriteBinding getWriteBinding(com.mongodb.ReadConcern, com.mongodb.client.ClientSession, boolean);
    descriptor: (Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;Z)Lcom/mongodb/binding/WriteBinding;
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
        start local 1 // com.mongodb.ReadConcern readConcern
        start local 2 // com.mongodb.client.ClientSession session
        start local 3 // boolean ownsSession
         0: .line 222
            aload 0 /* this */
            invokestatic com.mongodb.ReadPreference.primary:()Lcom/mongodb/ReadPreference;
            aload 1 /* readConcern */
            aload 2 /* session */
            iload 3 /* ownsSession */
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getReadWriteBinding:(Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;Z)Lcom/mongodb/binding/ReadWriteBinding;
            areturn
        end local 3 // boolean ownsSession
        end local 2 // com.mongodb.client.ClientSession session
        end local 1 // com.mongodb.ReadConcern readConcern
        end local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/mongodb/client/internal/MongoClientDelegate$DelegateOperationExecutor;
            0    1     1  readConcern  Lcom/mongodb/ReadConcern;
            0    1     2      session  Lcom/mongodb/client/ClientSession;
            0    1     3  ownsSession  Z
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        com.mongodb.lang.Nullable()
      2:
    MethodParameters:
             Name  Flags
      readConcern  final
      session      final
      ownsSession  final

  com.mongodb.binding.ReadBinding getReadBinding(com.mongodb.ReadPreference, com.mongodb.ReadConcern, com.mongodb.client.ClientSession, boolean);
    descriptor: (Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;Z)Lcom/mongodb/binding/ReadBinding;
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
        start local 1 // com.mongodb.ReadPreference readPreference
        start local 2 // com.mongodb.ReadConcern readConcern
        start local 3 // com.mongodb.client.ClientSession session
        start local 4 // boolean ownsSession
         0: .line 227
            aload 0 /* this */
            aload 1 /* readPreference */
            aload 2 /* readConcern */
            aload 3 /* session */
            iload 4 /* ownsSession */
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getReadWriteBinding:(Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;Z)Lcom/mongodb/binding/ReadWriteBinding;
            areturn
        end local 4 // boolean ownsSession
        end local 3 // com.mongodb.client.ClientSession session
        end local 2 // com.mongodb.ReadConcern readConcern
        end local 1 // com.mongodb.ReadPreference readPreference
        end local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/mongodb/client/internal/MongoClientDelegate$DelegateOperationExecutor;
            0    1     1  readPreference  Lcom/mongodb/ReadPreference;
            0    1     2     readConcern  Lcom/mongodb/ReadConcern;
            0    1     3         session  Lcom/mongodb/client/ClientSession;
            0    1     4     ownsSession  Z
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        com.mongodb.lang.Nullable()
      3:
    MethodParameters:
                Name  Flags
      readPreference  final
      readConcern     final
      session         final
      ownsSession     final

  com.mongodb.binding.ReadWriteBinding getReadWriteBinding(com.mongodb.ReadPreference, com.mongodb.ReadConcern, com.mongodb.client.ClientSession, boolean);
    descriptor: (Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;Lcom/mongodb/client/ClientSession;Z)Lcom/mongodb/binding/ReadWriteBinding;
    flags: (0x0000) 
    Code:
      stack=6, locals=6, args_size=5
        start local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
        start local 1 // com.mongodb.ReadPreference readPreference
        start local 2 // com.mongodb.ReadConcern readConcern
        start local 3 // com.mongodb.client.ClientSession session
        start local 4 // boolean ownsSession
         0: .line 232
            new com.mongodb.binding.ClusterBinding
            dup
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.this$0:Lcom/mongodb/client/internal/MongoClientDelegate;
            getfield com.mongodb.client.internal.MongoClientDelegate.cluster:Lcom/mongodb/connection/Cluster;
         1: .line 233
            aload 0 /* this */
            aload 1 /* readPreference */
            aload 3 /* session */
            invokevirtual com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getReadPreferenceForBinding:(Lcom/mongodb/ReadPreference;Lcom/mongodb/client/ClientSession;)Lcom/mongodb/ReadPreference;
            aload 2 /* readConcern */
         2: .line 232
            invokespecial com.mongodb.binding.ClusterBinding.<init>:(Lcom/mongodb/connection/Cluster;Lcom/mongodb/ReadPreference;Lcom/mongodb/ReadConcern;)V
            astore 5 /* readWriteBinding */
        start local 5 // com.mongodb.internal.binding.ClusterAwareReadWriteBinding readWriteBinding
         3: .line 235
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.this$0:Lcom/mongodb/client/internal/MongoClientDelegate;
            getfield com.mongodb.client.internal.MongoClientDelegate.crypt:Lcom/mongodb/client/internal/Crypt;
            ifnull 5
         4: .line 236
            new com.mongodb.client.internal.CryptBinding
            dup
            aload 5 /* readWriteBinding */
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.this$0:Lcom/mongodb/client/internal/MongoClientDelegate;
            getfield com.mongodb.client.internal.MongoClientDelegate.crypt:Lcom/mongodb/client/internal/Crypt;
            invokespecial com.mongodb.client.internal.CryptBinding.<init>:(Lcom/mongodb/internal/binding/ClusterAwareReadWriteBinding;Lcom/mongodb/client/internal/Crypt;)V
            astore 5 /* readWriteBinding */
         5: .line 239
      StackMap locals: com.mongodb.internal.binding.ClusterAwareReadWriteBinding
      StackMap stack:
            aload 3 /* session */
            ifnull 7
         6: .line 240
            new com.mongodb.client.internal.ClientSessionBinding
            dup
            aload 3 /* session */
            iload 4 /* ownsSession */
            aload 5 /* readWriteBinding */
            invokespecial com.mongodb.client.internal.ClientSessionBinding.<init>:(Lcom/mongodb/client/ClientSession;ZLcom/mongodb/internal/binding/ClusterAwareReadWriteBinding;)V
            areturn
         7: .line 242
      StackMap locals:
      StackMap stack:
            aload 5 /* readWriteBinding */
            areturn
        end local 5 // com.mongodb.internal.binding.ClusterAwareReadWriteBinding readWriteBinding
        end local 4 // boolean ownsSession
        end local 3 // com.mongodb.client.ClientSession session
        end local 2 // com.mongodb.ReadConcern readConcern
        end local 1 // com.mongodb.ReadPreference readPreference
        end local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0              this  Lcom/mongodb/client/internal/MongoClientDelegate$DelegateOperationExecutor;
            0    8     1    readPreference  Lcom/mongodb/ReadPreference;
            0    8     2       readConcern  Lcom/mongodb/ReadConcern;
            0    8     3           session  Lcom/mongodb/client/ClientSession;
            0    8     4       ownsSession  Z
            3    8     5  readWriteBinding  Lcom/mongodb/internal/binding/ClusterAwareReadWriteBinding;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        com.mongodb.lang.Nullable()
      3:
    MethodParameters:
                Name  Flags
      readPreference  final
      readConcern     final
      session         final
      ownsSession     final

  private void labelException(com.mongodb.client.ClientSession, com.mongodb.MongoException);
    descriptor: (Lcom/mongodb/client/ClientSession;Lcom/mongodb/MongoException;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
        start local 1 // com.mongodb.client.ClientSession session
        start local 2 // com.mongodb.MongoException e
         0: .line 247
            aload 1 /* session */
            ifnull 5
            aload 1 /* session */
            invokeinterface com.mongodb.client.ClientSession.hasActiveTransaction:()Z
            ifeq 5
         1: .line 248
            aload 2 /* e */
            instanceof com.mongodb.MongoSocketException
            ifne 3
            aload 2 /* e */
            instanceof com.mongodb.MongoTimeoutException
            ifne 3
         2: .line 249
            aload 2 /* e */
            instanceof com.mongodb.MongoQueryException
            ifeq 5
            aload 2 /* e */
            invokevirtual com.mongodb.MongoException.getCode:()I
            bipush 91
            if_icmpne 5
         3: .line 250
      StackMap locals:
      StackMap stack:
            aload 2 /* e */
            ldc "UnknownTransactionCommitResult"
            invokevirtual com.mongodb.MongoException.hasErrorLabel:(Ljava/lang/String;)Z
            ifne 5
         4: .line 251
            aload 2 /* e */
            ldc "TransientTransactionError"
            invokevirtual com.mongodb.MongoException.addLabel:(Ljava/lang/String;)V
         5: .line 253
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.mongodb.MongoException e
        end local 1 // com.mongodb.client.ClientSession session
        end local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lcom/mongodb/client/internal/MongoClientDelegate$DelegateOperationExecutor;
            0    6     1  session  Lcom/mongodb/client/ClientSession;
            0    6     2        e  Lcom/mongodb/MongoException;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
    MethodParameters:
         Name  Flags
      session  final
      e        final

  private void unpinServerAddressOnTransientTransactionError(com.mongodb.client.ClientSession, com.mongodb.MongoException);
    descriptor: (Lcom/mongodb/client/ClientSession;Lcom/mongodb/MongoException;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
        start local 1 // com.mongodb.client.ClientSession session
        start local 2 // com.mongodb.MongoException e
         0: .line 256
            aload 1 /* session */
            ifnull 2
            aload 2 /* e */
            ldc "TransientTransactionError"
            invokevirtual com.mongodb.MongoException.hasErrorLabel:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 257
            aload 1 /* session */
            aconst_null
            invokeinterface com.mongodb.client.ClientSession.setPinnedServerAddress:(Lcom/mongodb/ServerAddress;)V
         2: .line 259
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.mongodb.MongoException e
        end local 1 // com.mongodb.client.ClientSession session
        end local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lcom/mongodb/client/internal/MongoClientDelegate$DelegateOperationExecutor;
            0    3     1  session  Lcom/mongodb/client/ClientSession;
            0    3     2        e  Lcom/mongodb/MongoException;
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
      1:
    MethodParameters:
         Name  Flags
      session  final
      e        final

  private com.mongodb.ReadPreference getReadPreferenceForBinding(com.mongodb.ReadPreference, com.mongodb.client.ClientSession);
    descriptor: (Lcom/mongodb/ReadPreference;Lcom/mongodb/client/ClientSession;)Lcom/mongodb/ReadPreference;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
        start local 1 // com.mongodb.ReadPreference readPreference
        start local 2 // com.mongodb.client.ClientSession session
         0: .line 262
            aload 2 /* session */
            ifnonnull 2
         1: .line 263
            aload 1 /* readPreference */
            areturn
         2: .line 265
      StackMap locals:
      StackMap stack:
            aload 2 /* session */
            invokeinterface com.mongodb.client.ClientSession.hasActiveTransaction:()Z
            ifeq 7
         3: .line 266
            aload 2 /* session */
            invokeinterface com.mongodb.client.ClientSession.getTransactionOptions:()Lcom/mongodb/TransactionOptions;
            invokevirtual com.mongodb.TransactionOptions.getReadPreference:()Lcom/mongodb/ReadPreference;
            astore 3 /* readPreferenceForBinding */
        start local 3 // com.mongodb.ReadPreference readPreferenceForBinding
         4: .line 267
            aload 3 /* readPreferenceForBinding */
            ifnonnull 6
         5: .line 268
            new com.mongodb.MongoInternalException
            dup
            ldc "Invariant violated.  Transaction options read preference can not be null"
            invokespecial com.mongodb.MongoInternalException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 270
      StackMap locals: com.mongodb.ReadPreference
      StackMap stack:
            aload 3 /* readPreferenceForBinding */
            areturn
        end local 3 // com.mongodb.ReadPreference readPreferenceForBinding
         7: .line 272
      StackMap locals:
      StackMap stack:
            aload 1 /* readPreference */
            areturn
        end local 2 // com.mongodb.client.ClientSession session
        end local 1 // com.mongodb.ReadPreference readPreference
        end local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    8     0                      this  Lcom/mongodb/client/internal/MongoClientDelegate$DelegateOperationExecutor;
            0    8     1            readPreference  Lcom/mongodb/ReadPreference;
            0    8     2                   session  Lcom/mongodb/client/ClientSession;
            4    7     3  readPreferenceForBinding  Lcom/mongodb/ReadPreference;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        com.mongodb.lang.Nullable()
    MethodParameters:
                Name  Flags
      readPreference  final
      session         final

  com.mongodb.client.ClientSession getClientSession(com.mongodb.client.ClientSession);
    descriptor: (Lcom/mongodb/client/ClientSession;)Lcom/mongodb/client/ClientSession;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
        start local 1 // com.mongodb.client.ClientSession clientSessionFromOperation
         0: .line 278
            aload 1 /* clientSessionFromOperation */
            ifnull 6
         1: .line 279
            ldc "ClientSession from same MongoClient"
            aload 1 /* clientSessionFromOperation */
            invokeinterface com.mongodb.client.ClientSession.getOriginator:()Ljava/lang/Object;
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.this$0:Lcom/mongodb/client/internal/MongoClientDelegate;
            getfield com.mongodb.client.internal.MongoClientDelegate.originator:Ljava/lang/Object;
            if_acmpne 2
            iconst_1
            goto 3
      StackMap locals:
      StackMap stack: java.lang.String
         2: iconst_0
      StackMap locals: com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor com.mongodb.client.ClientSession
      StackMap stack: java.lang.String int
         3: invokestatic com.mongodb.assertions.Assertions.isTrue:(Ljava/lang/String;Z)V
         4: .line 280
            aload 1 /* clientSessionFromOperation */
            astore 2 /* session */
        start local 2 // com.mongodb.client.ClientSession session
         5: .line 281
            goto 9
        end local 2 // com.mongodb.client.ClientSession session
         6: .line 282
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.this$0:Lcom/mongodb/client/internal/MongoClientDelegate;
            invokestatic com.mongodb.ClientSessionOptions.builder:()Lcom/mongodb/ClientSessionOptions$Builder;
            iconst_0
            invokevirtual com.mongodb.ClientSessionOptions$Builder.causallyConsistent:(Z)Lcom/mongodb/ClientSessionOptions$Builder;
            invokevirtual com.mongodb.ClientSessionOptions$Builder.build:()Lcom/mongodb/ClientSessionOptions;
            getstatic com.mongodb.ReadConcern.DEFAULT:Lcom/mongodb/ReadConcern;
         7: .line 283
            getstatic com.mongodb.WriteConcern.ACKNOWLEDGED:Lcom/mongodb/WriteConcern;
            invokestatic com.mongodb.ReadPreference.primary:()Lcom/mongodb/ReadPreference;
         8: .line 282
            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 /* session */
        start local 2 // com.mongodb.client.ClientSession session
         9: .line 285
      StackMap locals: com.mongodb.client.ClientSession
      StackMap stack:
            aload 2 /* session */
            areturn
        end local 2 // com.mongodb.client.ClientSession session
        end local 1 // com.mongodb.client.ClientSession clientSessionFromOperation
        end local 0 // com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   10     0                        this  Lcom/mongodb/client/internal/MongoClientDelegate$DelegateOperationExecutor;
            0   10     1  clientSessionFromOperation  Lcom/mongodb/client/ClientSession;
            5    6     2                     session  Lcom/mongodb/client/ClientSession;
            9   10     2                     session  Lcom/mongodb/client/ClientSession;
    RuntimeVisibleAnnotations: 
      com.mongodb.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        com.mongodb.lang.Nullable()
    MethodParameters:
                            Name  Flags
      clientSessionFromOperation  final
}
SourceFile: "MongoClientDelegate.java"
NestHost: com.mongodb.client.internal.MongoClientDelegate
InnerClasses:
  public final Builder = com.mongodb.ClientSessionOptions$Builder of com.mongodb.ClientSessionOptions
  private DelegateOperationExecutor = com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor of com.mongodb.client.internal.MongoClientDelegate