class com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback<T> implements com.mongodb.async.SingleResultCallback<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback
  super_class: java.lang.Object
{
  private final com.mongodb.async.SingleResultCallback<T> wrapped;
    descriptor: Lcom/mongodb/async/SingleResultCallback;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/mongodb/async/SingleResultCallback<TT;>;

  private final com.mongodb.binding.AsyncConnectionSource source;
    descriptor: Lcom/mongodb/binding/AsyncConnectionSource;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  void <init>(com.mongodb.async.SingleResultCallback<T>, com.mongodb.binding.AsyncConnectionSource, com.mongodb.connection.AsyncConnection);
    descriptor: (Lcom/mongodb/async/SingleResultCallback;Lcom/mongodb/binding/AsyncConnectionSource;Lcom/mongodb/connection/AsyncConnection;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback this
        start local 1 // com.mongodb.async.SingleResultCallback wrapped
        start local 2 // com.mongodb.binding.AsyncConnectionSource source
        start local 3 // com.mongodb.connection.AsyncConnection connection
         0: .line 421
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 423
            aload 0 /* this */
            aload 1 /* wrapped */
            putfield com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback.wrapped:Lcom/mongodb/async/SingleResultCallback;
         2: .line 424
            aload 0 /* this */
            ldc "source"
            aload 2 /* source */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.binding.AsyncConnectionSource
            putfield com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback.source:Lcom/mongodb/binding/AsyncConnectionSource;
         3: .line 425
            aload 0 /* this */
            ldc "connection"
            aload 3 /* connection */
            invokestatic com.mongodb.assertions.Assertions.notNull:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.mongodb.connection.AsyncConnection
            putfield com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback.connection:Lcom/mongodb/connection/AsyncConnection;
         4: .line 426
            return
        end local 3 // com.mongodb.connection.AsyncConnection connection
        end local 2 // com.mongodb.binding.AsyncConnectionSource source
        end local 1 // com.mongodb.async.SingleResultCallback wrapped
        end local 0 // com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/mongodb/operation/OperationHelper$ConnectionReleasingWrappedCallback<TT;>;
            0    5     1     wrapped  Lcom/mongodb/async/SingleResultCallback<TT;>;
            0    5     2      source  Lcom/mongodb/binding/AsyncConnectionSource;
            0    5     3  connection  Lcom/mongodb/connection/AsyncConnection;
    Signature: (Lcom/mongodb/async/SingleResultCallback<TT;>;Lcom/mongodb/binding/AsyncConnectionSource;Lcom/mongodb/connection/AsyncConnection;)V
    MethodParameters:
            Name  Flags
      wrapped     final
      source      final
      connection  final

  public void onResult(T, java.lang.Throwable);
    descriptor: (Ljava/lang/Object;Ljava/lang/Throwable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback this
        start local 1 // java.lang.Object result
        start local 2 // java.lang.Throwable t
         0: .line 430
            aload 0 /* this */
            getfield com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback.connection:Lcom/mongodb/connection/AsyncConnection;
            invokeinterface com.mongodb.connection.AsyncConnection.release:()V
         1: .line 431
            aload 0 /* this */
            getfield com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback.source:Lcom/mongodb/binding/AsyncConnectionSource;
            invokeinterface com.mongodb.binding.AsyncConnectionSource.release:()V
         2: .line 432
            aload 0 /* this */
            getfield com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback.wrapped:Lcom/mongodb/async/SingleResultCallback;
            aload 1 /* result */
            aload 2 /* t */
            invokeinterface com.mongodb.async.SingleResultCallback.onResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         3: .line 433
            return
        end local 2 // java.lang.Throwable t
        end local 1 // java.lang.Object result
        end local 0 // com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/mongodb/operation/OperationHelper$ConnectionReleasingWrappedCallback<TT;>;
            0    4     1  result  TT;
            0    4     2       t  Ljava/lang/Throwable;
    Signature: (TT;Ljava/lang/Throwable;)V
    MethodParameters:
        Name  Flags
      result  final
      t       final

  public com.mongodb.async.SingleResultCallback<T> releaseConnectionAndGetWrapped();
    descriptor: ()Lcom/mongodb/async/SingleResultCallback;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback this
         0: .line 436
            aload 0 /* this */
            getfield com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback.connection:Lcom/mongodb/connection/AsyncConnection;
            invokeinterface com.mongodb.connection.AsyncConnection.release:()V
         1: .line 437
            aload 0 /* this */
            getfield com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback.source:Lcom/mongodb/binding/AsyncConnectionSource;
            invokeinterface com.mongodb.binding.AsyncConnectionSource.release:()V
         2: .line 438
            aload 0 /* this */
            getfield com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback.wrapped:Lcom/mongodb/async/SingleResultCallback;
            areturn
        end local 0 // com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/mongodb/operation/OperationHelper$ConnectionReleasingWrappedCallback<TT;>;
    Signature: ()Lcom/mongodb/async/SingleResultCallback<TT;>;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Lcom/mongodb/async/SingleResultCallback<TT;>;
SourceFile: "OperationHelper.java"
NestHost: com.mongodb.operation.OperationHelper
InnerClasses:
  ConnectionReleasingWrappedCallback = com.mongodb.operation.OperationHelper$ConnectionReleasingWrappedCallback of com.mongodb.operation.OperationHelper