public class io.vertx.core.eventbus.impl.MessageProducerImpl<T> implements io.vertx.core.eventbus.MessageProducer<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.core.eventbus.impl.MessageProducerImpl
  super_class: java.lang.Object
{
  private final io.vertx.core.Vertx vertx;
    descriptor: Lio/vertx/core/Vertx;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.vertx.core.eventbus.impl.EventBusImpl bus;
    descriptor: Lio/vertx/core/eventbus/impl/EventBusImpl;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean send;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private io.vertx.core.eventbus.DeliveryOptions options;
    descriptor: Lio/vertx/core/eventbus/DeliveryOptions;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(io.vertx.core.Vertx, java.lang.String, boolean, io.vertx.core.eventbus.DeliveryOptions);
    descriptor: (Lio/vertx/core/Vertx;Ljava/lang/String;ZLio/vertx/core/eventbus/DeliveryOptions;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
        start local 1 // io.vertx.core.Vertx vertx
        start local 2 // java.lang.String address
        start local 3 // boolean send
        start local 4 // io.vertx.core.eventbus.DeliveryOptions options
         0: .line 34
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 35
            aload 0 /* this */
            aload 1 /* vertx */
            putfield io.vertx.core.eventbus.impl.MessageProducerImpl.vertx:Lio/vertx/core/Vertx;
         2: .line 36
            aload 0 /* this */
            aload 1 /* vertx */
            invokeinterface io.vertx.core.Vertx.eventBus:()Lio/vertx/core/eventbus/EventBus;
            checkcast io.vertx.core.eventbus.impl.EventBusImpl
            putfield io.vertx.core.eventbus.impl.MessageProducerImpl.bus:Lio/vertx/core/eventbus/impl/EventBusImpl;
         3: .line 37
            aload 0 /* this */
            aload 2 /* address */
            putfield io.vertx.core.eventbus.impl.MessageProducerImpl.address:Ljava/lang/String;
         4: .line 38
            aload 0 /* this */
            iload 3 /* send */
            putfield io.vertx.core.eventbus.impl.MessageProducerImpl.send:Z
         5: .line 39
            aload 0 /* this */
            aload 4 /* options */
            putfield io.vertx.core.eventbus.impl.MessageProducerImpl.options:Lio/vertx/core/eventbus/DeliveryOptions;
         6: .line 40
            return
        end local 4 // io.vertx.core.eventbus.DeliveryOptions options
        end local 3 // boolean send
        end local 2 // java.lang.String address
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lio/vertx/core/eventbus/impl/MessageProducerImpl<TT;>;
            0    7     1    vertx  Lio/vertx/core/Vertx;
            0    7     2  address  Ljava/lang/String;
            0    7     3     send  Z
            0    7     4  options  Lio/vertx/core/eventbus/DeliveryOptions;
    MethodParameters:
         Name  Flags
      vertx    
      address  
      send     
      options  

  public synchronized io.vertx.core.eventbus.MessageProducer<T> deliveryOptions(io.vertx.core.eventbus.DeliveryOptions);
    descriptor: (Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/MessageProducer;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
        start local 1 // io.vertx.core.eventbus.DeliveryOptions options
         0: .line 44
            aload 0 /* this */
            aload 1 /* options */
            putfield io.vertx.core.eventbus.impl.MessageProducerImpl.options:Lio/vertx/core/eventbus/DeliveryOptions;
         1: .line 45
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.eventbus.DeliveryOptions options
        end local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/core/eventbus/impl/MessageProducerImpl<TT;>;
            0    2     1  options  Lio/vertx/core/eventbus/DeliveryOptions;
    Signature: (Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/MessageProducer<TT;>;
    MethodParameters:
         Name  Flags
      options  

  public io.vertx.core.Future<java.lang.Void> write(T);
    descriptor: (Ljava/lang/Object;)Lio/vertx/core/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
        start local 1 // java.lang.Object body
         0: .line 50
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.MessageProducerImpl.vertx:Lio/vertx/core/Vertx;
            checkcast io.vertx.core.impl.VertxInternal
            invokeinterface io.vertx.core.impl.VertxInternal.getOrCreateContext:()Lio/vertx/core/impl/ContextInternal;
            invokeinterface io.vertx.core.impl.ContextInternal.promise:()Lio/vertx/core/impl/future/PromiseInternal;
            astore 2 /* promise */
        start local 2 // io.vertx.core.Promise promise
         1: .line 51
            aload 0 /* this */
            aload 1 /* body */
            aload 2 /* promise */
            invokevirtual io.vertx.core.eventbus.impl.MessageProducerImpl.write:(Ljava/lang/Object;Lio/vertx/core/Promise;)V
         2: .line 52
            aload 2 /* promise */
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            areturn
        end local 2 // io.vertx.core.Promise promise
        end local 1 // java.lang.Object body
        end local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lio/vertx/core/eventbus/impl/MessageProducerImpl<TT;>;
            0    3     1     body  TT;
            1    3     2  promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
    Signature: (TT;)Lio/vertx/core/Future<Ljava/lang/Void;>;
    MethodParameters:
      Name  Flags
      body  

  public void write(T, io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Void>>);
    descriptor: (Ljava/lang/Object;Lio/vertx/core/Handler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
        start local 1 // java.lang.Object body
        start local 2 // io.vertx.core.Handler handler
         0: .line 57
            aconst_null
            astore 3 /* promise */
        start local 3 // io.vertx.core.Promise promise
         1: .line 58
            aload 2 /* handler */
            ifnull 3
         2: .line 59
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.MessageProducerImpl.vertx:Lio/vertx/core/Vertx;
            checkcast io.vertx.core.impl.VertxInternal
            invokeinterface io.vertx.core.impl.VertxInternal.getOrCreateContext:()Lio/vertx/core/impl/ContextInternal;
            aload 2 /* handler */
            invokeinterface io.vertx.core.impl.ContextInternal.promise:(Lio/vertx/core/Handler;)Lio/vertx/core/impl/future/PromiseInternal;
            astore 3 /* promise */
         3: .line 61
      StackMap locals: io.vertx.core.Promise
      StackMap stack:
            aload 0 /* this */
            aload 1 /* body */
            aload 3 /* promise */
            invokevirtual io.vertx.core.eventbus.impl.MessageProducerImpl.write:(Ljava/lang/Object;Lio/vertx/core/Promise;)V
         4: .line 62
            return
        end local 3 // io.vertx.core.Promise promise
        end local 2 // io.vertx.core.Handler handler
        end local 1 // java.lang.Object body
        end local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lio/vertx/core/eventbus/impl/MessageProducerImpl<TT;>;
            0    5     1     body  TT;
            0    5     2  handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;
            1    5     3  promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
    Signature: (TT;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;)V
    MethodParameters:
         Name  Flags
      body     
      handler  

  private void write(T, io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Ljava/lang/Object;Lio/vertx/core/Promise;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
        start local 1 // java.lang.Object data
        start local 2 // io.vertx.core.Promise handler
         0: .line 65
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.MessageProducerImpl.bus:Lio/vertx/core/eventbus/impl/EventBusImpl;
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.MessageProducerImpl.send:Z
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.MessageProducerImpl.address:Ljava/lang/String;
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.MessageProducerImpl.options:Lio/vertx/core/eventbus/DeliveryOptions;
            invokevirtual io.vertx.core.eventbus.DeliveryOptions.getHeaders:()Lio/vertx/core/MultiMap;
            aload 1 /* data */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.MessageProducerImpl.options:Lio/vertx/core/eventbus/DeliveryOptions;
            invokevirtual io.vertx.core.eventbus.DeliveryOptions.getCodecName:()Ljava/lang/String;
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.createMessage:(ZLjava/lang/String;Lio/vertx/core/MultiMap;Ljava/lang/Object;Ljava/lang/String;)Lio/vertx/core/eventbus/impl/MessageImpl;
            astore 3 /* msg */
        start local 3 // io.vertx.core.eventbus.impl.MessageImpl msg
         1: .line 66
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.MessageProducerImpl.bus:Lio/vertx/core/eventbus/impl/EventBusImpl;
            aload 3 /* msg */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.MessageProducerImpl.options:Lio/vertx/core/eventbus/DeliveryOptions;
            aconst_null
            aload 2 /* handler */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.sendOrPubInternal:(Lio/vertx/core/eventbus/impl/MessageImpl;Lio/vertx/core/eventbus/DeliveryOptions;Lio/vertx/core/eventbus/impl/ReplyHandler;Lio/vertx/core/Promise;)V
         2: .line 67
            return
        end local 3 // io.vertx.core.eventbus.impl.MessageImpl msg
        end local 2 // io.vertx.core.Promise handler
        end local 1 // java.lang.Object data
        end local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lio/vertx/core/eventbus/impl/MessageProducerImpl<TT;>;
            0    3     1     data  TT;
            0    3     2  handler  Lio/vertx/core/Promise<Ljava/lang/Void;>;
            1    3     3      msg  Lio/vertx/core/eventbus/impl/MessageImpl;
    Signature: (TT;Lio/vertx/core/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
         Name  Flags
      data     
      handler  

  public java.lang.String address();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
         0: .line 71
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.MessageProducerImpl.address:Ljava/lang/String;
            areturn
        end local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/MessageProducerImpl<TT;>;

  public io.vertx.core.Future<java.lang.Void> close();
    descriptor: ()Lio/vertx/core/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
         0: .line 76
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.MessageProducerImpl.vertx:Lio/vertx/core/Vertx;
            invokeinterface io.vertx.core.Vertx.getOrCreateContext:()Lio/vertx/core/Context;
            checkcast io.vertx.core.impl.ContextInternal
            invokeinterface io.vertx.core.impl.ContextInternal.succeededFuture:()Lio/vertx/core/Future;
            areturn
        end local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/MessageProducerImpl<TT;>;
    Signature: ()Lio/vertx/core/Future<Ljava/lang/Void;>;

  public void close(io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Void>>);
    descriptor: (Lio/vertx/core/Handler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
        start local 1 // io.vertx.core.Handler handler
         0: .line 81
            aload 0 /* this */
            invokevirtual io.vertx.core.eventbus.impl.MessageProducerImpl.close:()Lio/vertx/core/Future;
            astore 2 /* fut */
        start local 2 // io.vertx.core.Future fut
         1: .line 82
            aload 1 /* handler */
            ifnull 3
         2: .line 83
            aload 2 /* fut */
            aload 1 /* handler */
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         3: .line 85
      StackMap locals: io.vertx.core.Future
      StackMap stack:
            return
        end local 2 // io.vertx.core.Future fut
        end local 1 // io.vertx.core.Handler handler
        end local 0 // io.vertx.core.eventbus.impl.MessageProducerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lio/vertx/core/eventbus/impl/MessageProducerImpl<TT;>;
            0    4     1  handler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;
            1    4     2      fut  Lio/vertx/core/Future<Ljava/lang/Void;>;
    Signature: (Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;)V
    MethodParameters:
         Name  Flags
      handler  
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Lio/vertx/core/eventbus/MessageProducer<TT;>;
SourceFile: "MessageProducerImpl.java"