class com.mongodb.internal.connection.SendMessageCallback<T> implements com.mongodb.async.SingleResultCallback<java.lang.Void>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.mongodb.internal.connection.SendMessageCallback
  super_class: java.lang.Object
{
  private final org.bson.io.OutputBuffer buffer;
    descriptor: Lorg/bson/io/OutputBuffer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final com.mongodb.async.SingleResultCallback<com.mongodb.internal.connection.ResponseBuffers> receiveMessageCallback;
    descriptor: Lcom/mongodb/async/SingleResultCallback;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/internal/connection/ResponseBuffers;>;

  private final int requestId;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final com.mongodb.event.CommandListener commandListener;
    descriptor: Lcom/mongodb/event/CommandListener;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long startTimeNanos;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.mongodb.async.SingleResultCallback<T> callback;
    descriptor: Lcom/mongodb/async/SingleResultCallback;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/mongodb/async/SingleResultCallback<TT;>;

  private final java.lang.String commandName;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(com.mongodb.internal.connection.InternalConnection, org.bson.io.OutputBuffer, com.mongodb.internal.connection.RequestMessage, java.lang.String, long, com.mongodb.event.CommandListener, com.mongodb.async.SingleResultCallback<T>, com.mongodb.async.SingleResultCallback<com.mongodb.internal.connection.ResponseBuffers>);
    descriptor: (Lcom/mongodb/internal/connection/InternalConnection;Lorg/bson/io/OutputBuffer;Lcom/mongodb/internal/connection/RequestMessage;Ljava/lang/String;JLcom/mongodb/event/CommandListener;Lcom/mongodb/async/SingleResultCallback;Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0000) 
    Code:
      stack=11, locals=10, args_size=9
        start local 0 // com.mongodb.internal.connection.SendMessageCallback this
        start local 1 // com.mongodb.internal.connection.InternalConnection connection
        start local 2 // org.bson.io.OutputBuffer buffer
        start local 3 // com.mongodb.internal.connection.RequestMessage message
        start local 4 // java.lang.String commandName
        start local 5 // long startTimeNanos
        start local 7 // com.mongodb.event.CommandListener commandListener
        start local 8 // com.mongodb.async.SingleResultCallback callback
        start local 9 // com.mongodb.async.SingleResultCallback receiveMessageCallback
         0: .line 39
            aload 0 /* this */
            aload 1 /* connection */
            aload 2 /* buffer */
            aload 3 /* message */
            aload 3 /* message */
            invokevirtual com.mongodb.internal.connection.RequestMessage.getId:()I
            aload 4 /* commandName */
            lload 5 /* startTimeNanos */
            aload 7 /* commandListener */
            aload 8 /* callback */
            aload 9 /* receiveMessageCallback */
            invokespecial com.mongodb.internal.connection.SendMessageCallback.<init>:(Lcom/mongodb/internal/connection/InternalConnection;Lorg/bson/io/OutputBuffer;Lcom/mongodb/internal/connection/RequestMessage;ILjava/lang/String;JLcom/mongodb/event/CommandListener;Lcom/mongodb/async/SingleResultCallback;Lcom/mongodb/async/SingleResultCallback;)V
         1: .line 40
            return
        end local 9 // com.mongodb.async.SingleResultCallback receiveMessageCallback
        end local 8 // com.mongodb.async.SingleResultCallback callback
        end local 7 // com.mongodb.event.CommandListener commandListener
        end local 5 // long startTimeNanos
        end local 4 // java.lang.String commandName
        end local 3 // com.mongodb.internal.connection.RequestMessage message
        end local 2 // org.bson.io.OutputBuffer buffer
        end local 1 // com.mongodb.internal.connection.InternalConnection connection
        end local 0 // com.mongodb.internal.connection.SendMessageCallback this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lcom/mongodb/internal/connection/SendMessageCallback<TT;>;
            0    2     1              connection  Lcom/mongodb/internal/connection/InternalConnection;
            0    2     2                  buffer  Lorg/bson/io/OutputBuffer;
            0    2     3                 message  Lcom/mongodb/internal/connection/RequestMessage;
            0    2     4             commandName  Ljava/lang/String;
            0    2     5          startTimeNanos  J
            0    2     7         commandListener  Lcom/mongodb/event/CommandListener;
            0    2     8                callback  Lcom/mongodb/async/SingleResultCallback<TT;>;
            0    2     9  receiveMessageCallback  Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/internal/connection/ResponseBuffers;>;
    Signature: (Lcom/mongodb/internal/connection/InternalConnection;Lorg/bson/io/OutputBuffer;Lcom/mongodb/internal/connection/RequestMessage;Ljava/lang/String;JLcom/mongodb/event/CommandListener;Lcom/mongodb/async/SingleResultCallback<TT;>;Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/internal/connection/ResponseBuffers;>;)V
    MethodParameters:
                        Name  Flags
      connection              final
      buffer                  final
      message                 final
      commandName             final
      startTimeNanos          final
      commandListener         final
      callback                final
      receiveMessageCallback  final

  void <init>(com.mongodb.internal.connection.InternalConnection, org.bson.io.OutputBuffer, com.mongodb.internal.connection.RequestMessage, int, java.lang.String, long, com.mongodb.event.CommandListener, com.mongodb.async.SingleResultCallback<T>, com.mongodb.async.SingleResultCallback<com.mongodb.internal.connection.ResponseBuffers>);
    descriptor: (Lcom/mongodb/internal/connection/InternalConnection;Lorg/bson/io/OutputBuffer;Lcom/mongodb/internal/connection/RequestMessage;ILjava/lang/String;JLcom/mongodb/event/CommandListener;Lcom/mongodb/async/SingleResultCallback;Lcom/mongodb/async/SingleResultCallback;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=11, args_size=10
        start local 0 // com.mongodb.internal.connection.SendMessageCallback this
        start local 1 // com.mongodb.internal.connection.InternalConnection connection
        start local 2 // org.bson.io.OutputBuffer buffer
        start local 3 // com.mongodb.internal.connection.RequestMessage message
        start local 4 // int requestId
        start local 5 // java.lang.String commandName
        start local 6 // long startTimeNanos
        start local 8 // com.mongodb.event.CommandListener commandListener
        start local 9 // com.mongodb.async.SingleResultCallback callback
        start local 10 // com.mongodb.async.SingleResultCallback receiveMessageCallback
         0: .line 42
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 45
            aload 0 /* this */
            aload 2 /* buffer */
            putfield com.mongodb.internal.connection.SendMessageCallback.buffer:Lorg/bson/io/OutputBuffer;
         2: .line 46
            aload 0 /* this */
            aload 1 /* connection */
            putfield com.mongodb.internal.connection.SendMessageCallback.connection:Lcom/mongodb/internal/connection/InternalConnection;
         3: .line 47
            aload 0 /* this */
            aload 3 /* message */
            putfield com.mongodb.internal.connection.SendMessageCallback.message:Lcom/mongodb/internal/connection/RequestMessage;
         4: .line 48
            aload 0 /* this */
            aload 5 /* commandName */
            putfield com.mongodb.internal.connection.SendMessageCallback.commandName:Ljava/lang/String;
         5: .line 49
            aload 0 /* this */
            aload 8 /* commandListener */
            putfield com.mongodb.internal.connection.SendMessageCallback.commandListener:Lcom/mongodb/event/CommandListener;
         6: .line 50
            aload 0 /* this */
            lload 6 /* startTimeNanos */
            putfield com.mongodb.internal.connection.SendMessageCallback.startTimeNanos:J
         7: .line 51
            aload 0 /* this */
            aload 9 /* callback */
            putfield com.mongodb.internal.connection.SendMessageCallback.callback:Lcom/mongodb/async/SingleResultCallback;
         8: .line 52
            aload 0 /* this */
            aload 10 /* receiveMessageCallback */
            putfield com.mongodb.internal.connection.SendMessageCallback.receiveMessageCallback:Lcom/mongodb/async/SingleResultCallback;
         9: .line 53
            aload 0 /* this */
            iload 4 /* requestId */
            putfield com.mongodb.internal.connection.SendMessageCallback.requestId:I
        10: .line 54
            return
        end local 10 // com.mongodb.async.SingleResultCallback receiveMessageCallback
        end local 9 // com.mongodb.async.SingleResultCallback callback
        end local 8 // com.mongodb.event.CommandListener commandListener
        end local 6 // long startTimeNanos
        end local 5 // java.lang.String commandName
        end local 4 // int requestId
        end local 3 // com.mongodb.internal.connection.RequestMessage message
        end local 2 // org.bson.io.OutputBuffer buffer
        end local 1 // com.mongodb.internal.connection.InternalConnection connection
        end local 0 // com.mongodb.internal.connection.SendMessageCallback this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   11     0                    this  Lcom/mongodb/internal/connection/SendMessageCallback<TT;>;
            0   11     1              connection  Lcom/mongodb/internal/connection/InternalConnection;
            0   11     2                  buffer  Lorg/bson/io/OutputBuffer;
            0   11     3                 message  Lcom/mongodb/internal/connection/RequestMessage;
            0   11     4               requestId  I
            0   11     5             commandName  Ljava/lang/String;
            0   11     6          startTimeNanos  J
            0   11     8         commandListener  Lcom/mongodb/event/CommandListener;
            0   11     9                callback  Lcom/mongodb/async/SingleResultCallback<TT;>;
            0   11    10  receiveMessageCallback  Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/internal/connection/ResponseBuffers;>;
    Signature: (Lcom/mongodb/internal/connection/InternalConnection;Lorg/bson/io/OutputBuffer;Lcom/mongodb/internal/connection/RequestMessage;ILjava/lang/String;JLcom/mongodb/event/CommandListener;Lcom/mongodb/async/SingleResultCallback<TT;>;Lcom/mongodb/async/SingleResultCallback<Lcom/mongodb/internal/connection/ResponseBuffers;>;)V
    MethodParameters:
                        Name  Flags
      connection              final
      buffer                  final
      message                 final
      requestId               final
      commandName             final
      startTimeNanos          final
      commandListener         final
      callback                final
      receiveMessageCallback  final

  public void onResult(java.lang.Void, java.lang.Throwable);
    descriptor: (Ljava/lang/Void;Ljava/lang/Throwable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // com.mongodb.internal.connection.SendMessageCallback this
        start local 1 // java.lang.Void result
        start local 2 // java.lang.Throwable t
         0: .line 58
            aload 0 /* this */
            getfield com.mongodb.internal.connection.SendMessageCallback.buffer:Lorg/bson/io/OutputBuffer;
            invokevirtual org.bson.io.OutputBuffer.close:()V
         1: .line 59
            aload 2 /* t */
            ifnull 8
         2: .line 60
            aload 0 /* this */
            getfield com.mongodb.internal.connection.SendMessageCallback.commandListener:Lcom/mongodb/event/CommandListener;
            ifnull 6
         3: .line 61
            aload 0 /* this */
            getfield com.mongodb.internal.connection.SendMessageCallback.message:Lcom/mongodb/internal/connection/RequestMessage;
            aload 0 /* this */
            getfield com.mongodb.internal.connection.SendMessageCallback.commandName:Ljava/lang/String;
            aload 0 /* this */
            getfield com.mongodb.internal.connection.SendMessageCallback.connection:Lcom/mongodb/internal/connection/InternalConnection;
            invokeinterface com.mongodb.internal.connection.InternalConnection.getDescription:()Lcom/mongodb/connection/ConnectionDescription;
            invokestatic java.lang.System.nanoTime:()J
            aload 0 /* this */
            getfield com.mongodb.internal.connection.SendMessageCallback.startTimeNanos:J
            lsub
            aload 2 /* t */
         4: .line 62
            aload 0 /* this */
            getfield com.mongodb.internal.connection.SendMessageCallback.commandListener:Lcom/mongodb/event/CommandListener;
         5: .line 61
            invokestatic com.mongodb.internal.connection.ProtocolHelper.sendCommandFailedEvent:(Lcom/mongodb/internal/connection/RequestMessage;Ljava/lang/String;Lcom/mongodb/connection/ConnectionDescription;JLjava/lang/Throwable;Lcom/mongodb/event/CommandListener;)V
         6: .line 64
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.internal.connection.SendMessageCallback.callback:Lcom/mongodb/async/SingleResultCallback;
            aconst_null
            aload 2 /* t */
            invokeinterface com.mongodb.async.SingleResultCallback.onResult:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         7: .line 65
            goto 9
         8: .line 66
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.mongodb.internal.connection.SendMessageCallback.connection:Lcom/mongodb/internal/connection/InternalConnection;
            aload 0 /* this */
            getfield com.mongodb.internal.connection.SendMessageCallback.requestId:I
            aload 0 /* this */
            getfield com.mongodb.internal.connection.SendMessageCallback.receiveMessageCallback:Lcom/mongodb/async/SingleResultCallback;
            invokeinterface com.mongodb.internal.connection.InternalConnection.receiveMessageAsync:(ILcom/mongodb/async/SingleResultCallback;)V
         9: .line 68
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Throwable t
        end local 1 // java.lang.Void result
        end local 0 // com.mongodb.internal.connection.SendMessageCallback this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Lcom/mongodb/internal/connection/SendMessageCallback<TT;>;
            0   10     1  result  Ljava/lang/Void;
            0   10     2       t  Ljava/lang/Throwable;
    MethodParameters:
        Name  Flags
      result  final
      t       final

  public void onResult(java.lang.Object, java.lang.Throwable);
    descriptor: (Ljava/lang/Object;Ljava/lang/Throwable;)V
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            checkcast java.lang.Void
            aload 2
            invokevirtual com.mongodb.internal.connection.SendMessageCallback.onResult:(Ljava/lang/Void;Ljava/lang/Throwable;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Lcom/mongodb/async/SingleResultCallback<Ljava/lang/Void;>;
SourceFile: "SendMessageCallback.java"