public class io.vertx.core.eventbus.impl.EventBusImpl implements io.vertx.core.eventbus.impl.EventBusInternal, io.vertx.core.spi.metrics.MetricsProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.core.eventbus.impl.EventBusImpl
  super_class: java.lang.Object
{
  static final io.vertx.core.impl.logging.Logger log;
    descriptor: Lio/vertx/core/impl/logging/Logger;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private final java.util.List<io.vertx.core.Handler<io.vertx.core.eventbus.DeliveryContext>> sendInterceptors;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lio/vertx/core/Handler<Lio/vertx/core/eventbus/DeliveryContext;>;>;

  private final java.util.List<io.vertx.core.Handler<io.vertx.core.eventbus.DeliveryContext>> receiveInterceptors;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lio/vertx/core/Handler<Lio/vertx/core/eventbus/DeliveryContext;>;>;

  private final java.util.concurrent.atomic.AtomicLong replySequence;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected final io.vertx.core.impl.VertxInternal vertx;
    descriptor: Lio/vertx/core/impl/VertxInternal;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final io.vertx.core.spi.metrics.EventBusMetrics metrics;
    descriptor: Lio/vertx/core/spi/metrics/EventBusMetrics;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final java.util.concurrent.ConcurrentMap<java.lang.String, io.vertx.core.impl.utils.ConcurrentCyclicSequence<io.vertx.core.eventbus.impl.HandlerHolder>> handlerMap;
    descriptor: Ljava/util/concurrent/ConcurrentMap;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/String;Lio/vertx/core/impl/utils/ConcurrentCyclicSequence<Lio/vertx/core/eventbus/impl/HandlerHolder;>;>;

  protected final io.vertx.core.eventbus.impl.CodecManager codecManager;
    descriptor: Lio/vertx/core/eventbus/impl/CodecManager;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected volatile boolean started;
    descriptor: Z
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 41
            ldc Lio/vertx/core/eventbus/impl/EventBusImpl;
            invokestatic io.vertx.core.impl.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/impl/logging/Logger;
            putstatic io.vertx.core.eventbus.impl.EventBusImpl.log:Lio/vertx/core/impl/logging/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(io.vertx.core.impl.VertxInternal);
    descriptor: (Lio/vertx/core/impl/VertxInternal;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.impl.VertxInternal vertx
         0: .line 52
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 43
            aload 0 /* this */
            new java.util.concurrent.CopyOnWriteArrayList
            dup
            invokespecial java.util.concurrent.CopyOnWriteArrayList.<init>:()V
            putfield io.vertx.core.eventbus.impl.EventBusImpl.sendInterceptors:Ljava/util/List;
         2: .line 44
            aload 0 /* this */
            new java.util.concurrent.CopyOnWriteArrayList
            dup
            invokespecial java.util.concurrent.CopyOnWriteArrayList.<init>:()V
            putfield io.vertx.core.eventbus.impl.EventBusImpl.receiveInterceptors:Ljava/util/List;
         3: .line 45
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            lconst_0
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
            putfield io.vertx.core.eventbus.impl.EventBusImpl.replySequence:Ljava/util/concurrent/atomic/AtomicLong;
         4: .line 48
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield io.vertx.core.eventbus.impl.EventBusImpl.handlerMap:Ljava/util/concurrent/ConcurrentMap;
         5: .line 49
            aload 0 /* this */
            new io.vertx.core.eventbus.impl.CodecManager
            dup
            invokespecial io.vertx.core.eventbus.impl.CodecManager.<init>:()V
            putfield io.vertx.core.eventbus.impl.EventBusImpl.codecManager:Lio/vertx/core/eventbus/impl/CodecManager;
         6: .line 53
            aload 1 /* vertx */
            invokeinterface io.vertx.core.impl.VertxInternal.metricsSPI:()Lio/vertx/core/spi/metrics/VertxMetrics;
            astore 2 /* metrics */
        start local 2 // io.vertx.core.spi.metrics.VertxMetrics metrics
         7: .line 54
            aload 0 /* this */
            aload 1 /* vertx */
            putfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
         8: .line 55
            aload 0 /* this */
            aload 2 /* metrics */
            ifnull 9
            aload 2 /* metrics */
            invokeinterface io.vertx.core.spi.metrics.VertxMetrics.createEventBusMetrics:()Lio/vertx/core/spi/metrics/EventBusMetrics;
            goto 10
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.impl.VertxInternal io.vertx.core.spi.metrics.VertxMetrics
      StackMap stack: io.vertx.core.eventbus.impl.EventBusImpl
         9: aconst_null
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.impl.VertxInternal io.vertx.core.spi.metrics.VertxMetrics
      StackMap stack: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.spi.metrics.EventBusMetrics
        10: putfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
        11: .line 56
            return
        end local 2 // io.vertx.core.spi.metrics.VertxMetrics metrics
        end local 1 // io.vertx.core.impl.VertxInternal vertx
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0   12     1    vertx  Lio/vertx/core/impl/VertxInternal;
            7   12     2  metrics  Lio/vertx/core/spi/metrics/VertxMetrics;
    MethodParameters:
       Name  Flags
      vertx  

  public <T> io.vertx.core.eventbus.EventBus addOutboundInterceptor(io.vertx.core.Handler<io.vertx.core.eventbus.DeliveryContext<T>>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.Handler interceptor
         0: .line 60
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.sendInterceptors:Ljava/util/List;
            aload 1 /* interceptor */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 61
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler interceptor
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  interceptor  Lio/vertx/core/Handler<Lio/vertx/core/eventbus/DeliveryContext<TT;>;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/Handler<Lio/vertx/core/eventbus/DeliveryContext<TT;>;>;)Lio/vertx/core/eventbus/EventBus;
    MethodParameters:
             Name  Flags
      interceptor  

  public <T> io.vertx.core.eventbus.EventBus addInboundInterceptor(io.vertx.core.Handler<io.vertx.core.eventbus.DeliveryContext<T>>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.Handler interceptor
         0: .line 66
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.receiveInterceptors:Ljava/util/List;
            aload 1 /* interceptor */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 67
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler interceptor
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  interceptor  Lio/vertx/core/Handler<Lio/vertx/core/eventbus/DeliveryContext<TT;>;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/Handler<Lio/vertx/core/eventbus/DeliveryContext<TT;>;>;)Lio/vertx/core/eventbus/EventBus;
    MethodParameters:
             Name  Flags
      interceptor  

  public <T> io.vertx.core.eventbus.EventBus removeOutboundInterceptor(io.vertx.core.Handler<io.vertx.core.eventbus.DeliveryContext<T>>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.Handler interceptor
         0: .line 72
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.sendInterceptors:Ljava/util/List;
            aload 1 /* interceptor */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 73
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler interceptor
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  interceptor  Lio/vertx/core/Handler<Lio/vertx/core/eventbus/DeliveryContext<TT;>;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/Handler<Lio/vertx/core/eventbus/DeliveryContext<TT;>;>;)Lio/vertx/core/eventbus/EventBus;
    MethodParameters:
             Name  Flags
      interceptor  

  java.util.Iterator<io.vertx.core.Handler<io.vertx.core.eventbus.DeliveryContext>> receiveInterceptors();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
         0: .line 77
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.receiveInterceptors:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            areturn
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/EventBusImpl;
    Signature: ()Ljava/util/Iterator<Lio/vertx/core/Handler<Lio/vertx/core/eventbus/DeliveryContext;>;>;

  public <T> io.vertx.core.eventbus.EventBus removeInboundInterceptor(io.vertx.core.Handler<io.vertx.core.eventbus.DeliveryContext<T>>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.Handler interceptor
         0: .line 82
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.receiveInterceptors:Ljava/util/List;
            aload 1 /* interceptor */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 83
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler interceptor
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  interceptor  Lio/vertx/core/Handler<Lio/vertx/core/eventbus/DeliveryContext<TT;>;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/Handler<Lio/vertx/core/eventbus/DeliveryContext<TT;>;>;)Lio/vertx/core/eventbus/EventBus;
    MethodParameters:
             Name  Flags
      interceptor  

  public synchronized void start(io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Lio/vertx/core/Promise;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.Promise promise
         0: .line 88
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.started:Z
            ifeq 2
         1: .line 89
            new java.lang.IllegalStateException
            dup
            ldc "Already started"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 91
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.vertx.core.eventbus.impl.EventBusImpl.started:Z
         3: .line 92
            aload 1 /* promise */
            invokeinterface io.vertx.core.Promise.complete:()V
         4: .line 93
            return
        end local 1 // io.vertx.core.Promise promise
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    5     1  promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
    Signature: (Lio/vertx/core/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
         Name  Flags
      promise  

  public io.vertx.core.eventbus.EventBus send(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
        start local 2 // java.lang.Object message
         0: .line 97
            aload 0 /* this */
            aload 1 /* address */
            aload 2 /* message */
            new io.vertx.core.eventbus.DeliveryOptions
            dup
            invokespecial io.vertx.core.eventbus.DeliveryOptions.<init>:()V
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.send:(Ljava/lang/String;Ljava/lang/Object;Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/EventBus;
            areturn
        end local 2 // java.lang.Object message
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    1     1  address  Ljava/lang/String;
            0    1     2  message  Ljava/lang/Object;
    MethodParameters:
         Name  Flags
      address  
      message  

  public io.vertx.core.eventbus.EventBus send(java.lang.String, java.lang.Object, io.vertx.core.eventbus.DeliveryOptions);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
        start local 2 // java.lang.Object message
        start local 3 // io.vertx.core.eventbus.DeliveryOptions options
         0: .line 102
            aload 0 /* this */
            iconst_1
            aload 1 /* address */
            aload 3 /* options */
            invokevirtual io.vertx.core.eventbus.DeliveryOptions.getHeaders:()Lio/vertx/core/MultiMap;
            aload 2 /* message */
            aload 3 /* options */
            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 4 /* msg */
        start local 4 // io.vertx.core.eventbus.impl.MessageImpl msg
         1: .line 103
            aload 0 /* this */
            aload 4 /* msg */
            aload 3 /* options */
            aconst_null
            aconst_null
            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 104
            aload 0 /* this */
            areturn
        end local 4 // io.vertx.core.eventbus.impl.MessageImpl msg
        end local 3 // io.vertx.core.eventbus.DeliveryOptions options
        end local 2 // java.lang.Object message
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    3     1  address  Ljava/lang/String;
            0    3     2  message  Ljava/lang/Object;
            0    3     3  options  Lio/vertx/core/eventbus/DeliveryOptions;
            1    3     4      msg  Lio/vertx/core/eventbus/impl/MessageImpl;
    MethodParameters:
         Name  Flags
      address  
      message  
      options  

  public <T> io.vertx.core.Future<io.vertx.core.eventbus.Message<T>> request(java.lang.String, , io.vertx.core.eventbus.DeliveryOptions);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
        start local 2 // java.lang.Object message
        start local 3 // io.vertx.core.eventbus.DeliveryOptions options
         0: .line 109
            aload 0 /* this */
            iconst_1
            aload 1 /* address */
            aload 3 /* options */
            invokevirtual io.vertx.core.eventbus.DeliveryOptions.getHeaders:()Lio/vertx/core/MultiMap;
            aload 2 /* message */
            aload 3 /* options */
            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 4 /* msg */
        start local 4 // io.vertx.core.eventbus.impl.MessageImpl msg
         1: .line 110
            aload 0 /* this */
            aload 4 /* msg */
            iconst_1
            aload 3 /* options */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.createReplyHandler:(Lio/vertx/core/eventbus/impl/MessageImpl;ZLio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/impl/ReplyHandler;
            astore 5 /* handler */
        start local 5 // io.vertx.core.eventbus.impl.ReplyHandler handler
         2: .line 111
            aload 0 /* this */
            aload 4 /* msg */
            aload 3 /* options */
            aload 5 /* handler */
            aconst_null
            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
         3: .line 112
            aload 5 /* handler */
            invokevirtual io.vertx.core.eventbus.impl.ReplyHandler.result:()Lio/vertx/core/Future;
            areturn
        end local 5 // io.vertx.core.eventbus.impl.ReplyHandler handler
        end local 4 // io.vertx.core.eventbus.impl.MessageImpl msg
        end local 3 // io.vertx.core.eventbus.DeliveryOptions options
        end local 2 // java.lang.Object message
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    4     1  address  Ljava/lang/String;
            0    4     2  message  Ljava/lang/Object;
            0    4     3  options  Lio/vertx/core/eventbus/DeliveryOptions;
            1    4     4      msg  Lio/vertx/core/eventbus/impl/MessageImpl;
            2    4     5  handler  Lio/vertx/core/eventbus/impl/ReplyHandler<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Ljava/lang/Object;Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/Future<Lio/vertx/core/eventbus/Message<TT;>;>;
    MethodParameters:
         Name  Flags
      address  
      message  
      options  

  public <T> io.vertx.core.eventbus.MessageProducer<T> sender(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/core/eventbus/MessageProducer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
         0: .line 117
            aload 1 /* address */
            ldc "address"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 118
            new io.vertx.core.eventbus.impl.MessageProducerImpl
            dup
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            aload 1 /* address */
            iconst_1
            new io.vertx.core.eventbus.DeliveryOptions
            dup
            invokespecial io.vertx.core.eventbus.DeliveryOptions.<init>:()V
            invokespecial io.vertx.core.eventbus.impl.MessageProducerImpl.<init>:(Lio/vertx/core/Vertx;Ljava/lang/String;ZLio/vertx/core/eventbus/DeliveryOptions;)V
            areturn
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  address  Ljava/lang/String;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;)Lio/vertx/core/eventbus/MessageProducer<TT;>;
    MethodParameters:
         Name  Flags
      address  

  public <T> io.vertx.core.eventbus.MessageProducer<T> sender(java.lang.String, io.vertx.core.eventbus.DeliveryOptions);
    descriptor: (Ljava/lang/String;Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/MessageProducer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
        start local 2 // io.vertx.core.eventbus.DeliveryOptions options
         0: .line 123
            aload 1 /* address */
            ldc "address"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 124
            aload 2 /* options */
            ldc "options"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 125
            new io.vertx.core.eventbus.impl.MessageProducerImpl
            dup
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            aload 1 /* address */
            iconst_1
            aload 2 /* options */
            invokespecial io.vertx.core.eventbus.impl.MessageProducerImpl.<init>:(Lio/vertx/core/Vertx;Ljava/lang/String;ZLio/vertx/core/eventbus/DeliveryOptions;)V
            areturn
        end local 2 // io.vertx.core.eventbus.DeliveryOptions options
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    3     1  address  Ljava/lang/String;
            0    3     2  options  Lio/vertx/core/eventbus/DeliveryOptions;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/MessageProducer<TT;>;
    MethodParameters:
         Name  Flags
      address  
      options  

  public <T> io.vertx.core.eventbus.MessageProducer<T> publisher(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/core/eventbus/MessageProducer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
         0: .line 130
            aload 1 /* address */
            ldc "address"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 131
            new io.vertx.core.eventbus.impl.MessageProducerImpl
            dup
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            aload 1 /* address */
            iconst_0
            new io.vertx.core.eventbus.DeliveryOptions
            dup
            invokespecial io.vertx.core.eventbus.DeliveryOptions.<init>:()V
            invokespecial io.vertx.core.eventbus.impl.MessageProducerImpl.<init>:(Lio/vertx/core/Vertx;Ljava/lang/String;ZLio/vertx/core/eventbus/DeliveryOptions;)V
            areturn
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  address  Ljava/lang/String;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;)Lio/vertx/core/eventbus/MessageProducer<TT;>;
    MethodParameters:
         Name  Flags
      address  

  public <T> io.vertx.core.eventbus.MessageProducer<T> publisher(java.lang.String, io.vertx.core.eventbus.DeliveryOptions);
    descriptor: (Ljava/lang/String;Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/MessageProducer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
        start local 2 // io.vertx.core.eventbus.DeliveryOptions options
         0: .line 136
            aload 1 /* address */
            ldc "address"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 137
            aload 2 /* options */
            ldc "options"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 138
            new io.vertx.core.eventbus.impl.MessageProducerImpl
            dup
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            aload 1 /* address */
            iconst_0
            aload 2 /* options */
            invokespecial io.vertx.core.eventbus.impl.MessageProducerImpl.<init>:(Lio/vertx/core/Vertx;Ljava/lang/String;ZLio/vertx/core/eventbus/DeliveryOptions;)V
            areturn
        end local 2 // io.vertx.core.eventbus.DeliveryOptions options
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    3     1  address  Ljava/lang/String;
            0    3     2  options  Lio/vertx/core/eventbus/DeliveryOptions;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/MessageProducer<TT;>;
    MethodParameters:
         Name  Flags
      address  
      options  

  public io.vertx.core.eventbus.EventBus publish(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
        start local 2 // java.lang.Object message
         0: .line 143
            aload 0 /* this */
            aload 1 /* address */
            aload 2 /* message */
            new io.vertx.core.eventbus.DeliveryOptions
            dup
            invokespecial io.vertx.core.eventbus.DeliveryOptions.<init>:()V
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.publish:(Ljava/lang/String;Ljava/lang/Object;Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/EventBus;
            areturn
        end local 2 // java.lang.Object message
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    1     1  address  Ljava/lang/String;
            0    1     2  message  Ljava/lang/Object;
    MethodParameters:
         Name  Flags
      address  
      message  

  public io.vertx.core.eventbus.EventBus publish(java.lang.String, java.lang.Object, io.vertx.core.eventbus.DeliveryOptions);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;Lio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
        start local 2 // java.lang.Object message
        start local 3 // io.vertx.core.eventbus.DeliveryOptions options
         0: .line 148
            aload 0 /* this */
            aload 0 /* this */
            iconst_0
            aload 1 /* address */
            aload 3 /* options */
            invokevirtual io.vertx.core.eventbus.DeliveryOptions.getHeaders:()Lio/vertx/core/MultiMap;
            aload 2 /* message */
            aload 3 /* options */
            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;
            aload 3 /* options */
            aconst_null
            aconst_null
            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
         1: .line 149
            aload 0 /* this */
            areturn
        end local 3 // io.vertx.core.eventbus.DeliveryOptions options
        end local 2 // java.lang.Object message
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  address  Ljava/lang/String;
            0    2     2  message  Ljava/lang/Object;
            0    2     3  options  Lio/vertx/core/eventbus/DeliveryOptions;
    MethodParameters:
         Name  Flags
      address  
      message  
      options  

  public <T> io.vertx.core.eventbus.MessageConsumer<T> consumer(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/core/eventbus/MessageConsumer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
         0: .line 154
            aload 0 /* this */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.checkStarted:()V
         1: .line 155
            aload 1 /* address */
            ldc "address"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 156
            new io.vertx.core.eventbus.impl.MessageConsumerImpl
            dup
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            invokeinterface io.vertx.core.impl.VertxInternal.getOrCreateContext:()Lio/vertx/core/impl/ContextInternal;
            aload 0 /* this */
            aload 1 /* address */
            iconst_0
            invokespecial io.vertx.core.eventbus.impl.MessageConsumerImpl.<init>:(Lio/vertx/core/Vertx;Lio/vertx/core/impl/ContextInternal;Lio/vertx/core/eventbus/impl/EventBusImpl;Ljava/lang/String;Z)V
            areturn
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    3     1  address  Ljava/lang/String;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;)Lio/vertx/core/eventbus/MessageConsumer<TT;>;
    MethodParameters:
         Name  Flags
      address  

  public <T> io.vertx.core.eventbus.MessageConsumer<T> consumer(java.lang.String, io.vertx.core.Handler<io.vertx.core.eventbus.Message<T>>);
    descriptor: (Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/eventbus/MessageConsumer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
        start local 2 // io.vertx.core.Handler handler
         0: .line 161
            aload 2 /* handler */
            ldc "handler"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 162
            aload 0 /* this */
            aload 1 /* address */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.consumer:(Ljava/lang/String;)Lio/vertx/core/eventbus/MessageConsumer;
            astore 3 /* consumer */
        start local 3 // io.vertx.core.eventbus.MessageConsumer consumer
         2: .line 163
            aload 3 /* consumer */
            aload 2 /* handler */
            invokeinterface io.vertx.core.eventbus.MessageConsumer.handler:(Lio/vertx/core/Handler;)Lio/vertx/core/eventbus/MessageConsumer;
            pop
         3: .line 164
            aload 3 /* consumer */
            areturn
        end local 3 // io.vertx.core.eventbus.MessageConsumer consumer
        end local 2 // io.vertx.core.Handler handler
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    4     1   address  Ljava/lang/String;
            0    4     2   handler  Lio/vertx/core/Handler<Lio/vertx/core/eventbus/Message<TT;>;>;
            2    4     3  consumer  Lio/vertx/core/eventbus/MessageConsumer<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/eventbus/Message<TT;>;>;)Lio/vertx/core/eventbus/MessageConsumer<TT;>;
    MethodParameters:
         Name  Flags
      address  
      handler  

  public <T> io.vertx.core.eventbus.MessageConsumer<T> localConsumer(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/core/eventbus/MessageConsumer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
         0: .line 169
            aload 0 /* this */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.checkStarted:()V
         1: .line 170
            aload 1 /* address */
            ldc "address"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 171
            new io.vertx.core.eventbus.impl.MessageConsumerImpl
            dup
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            invokeinterface io.vertx.core.impl.VertxInternal.getOrCreateContext:()Lio/vertx/core/impl/ContextInternal;
            aload 0 /* this */
            aload 1 /* address */
            iconst_1
            invokespecial io.vertx.core.eventbus.impl.MessageConsumerImpl.<init>:(Lio/vertx/core/Vertx;Lio/vertx/core/impl/ContextInternal;Lio/vertx/core/eventbus/impl/EventBusImpl;Ljava/lang/String;Z)V
            areturn
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    3     1  address  Ljava/lang/String;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;)Lio/vertx/core/eventbus/MessageConsumer<TT;>;
    MethodParameters:
         Name  Flags
      address  

  public <T> io.vertx.core.eventbus.MessageConsumer<T> localConsumer(java.lang.String, io.vertx.core.Handler<io.vertx.core.eventbus.Message<T>>);
    descriptor: (Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/eventbus/MessageConsumer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
        start local 2 // io.vertx.core.Handler handler
         0: .line 176
            aload 2 /* handler */
            ldc "handler"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 177
            aload 0 /* this */
            aload 1 /* address */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.localConsumer:(Ljava/lang/String;)Lio/vertx/core/eventbus/MessageConsumer;
            astore 3 /* consumer */
        start local 3 // io.vertx.core.eventbus.MessageConsumer consumer
         2: .line 178
            aload 3 /* consumer */
            aload 2 /* handler */
            invokeinterface io.vertx.core.eventbus.MessageConsumer.handler:(Lio/vertx/core/Handler;)Lio/vertx/core/eventbus/MessageConsumer;
            pop
         3: .line 179
            aload 3 /* consumer */
            areturn
        end local 3 // io.vertx.core.eventbus.MessageConsumer consumer
        end local 2 // io.vertx.core.Handler handler
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    4     1   address  Ljava/lang/String;
            0    4     2   handler  Lio/vertx/core/Handler<Lio/vertx/core/eventbus/Message<TT;>;>;
            2    4     3  consumer  Lio/vertx/core/eventbus/MessageConsumer<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/eventbus/Message<TT;>;>;)Lio/vertx/core/eventbus/MessageConsumer<TT;>;
    MethodParameters:
         Name  Flags
      address  
      handler  

  public io.vertx.core.eventbus.EventBus registerCodec(io.vertx.core.eventbus.MessageCodec);
    descriptor: (Lio/vertx/core/eventbus/MessageCodec;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.MessageCodec codec
         0: .line 184
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.codecManager:Lio/vertx/core/eventbus/impl/CodecManager;
            aload 1 /* codec */
            invokevirtual io.vertx.core.eventbus.impl.CodecManager.registerCodec:(Lio/vertx/core/eventbus/MessageCodec;)V
         1: .line 185
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.eventbus.MessageCodec codec
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  codec  Lio/vertx/core/eventbus/MessageCodec;
    MethodParameters:
       Name  Flags
      codec  

  public io.vertx.core.eventbus.EventBus unregisterCodec(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String name
         0: .line 190
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.codecManager:Lio/vertx/core/eventbus/impl/CodecManager;
            aload 1 /* name */
            invokevirtual io.vertx.core.eventbus.impl.CodecManager.unregisterCodec:(Ljava/lang/String;)V
         1: .line 191
            aload 0 /* this */
            areturn
        end local 1 // java.lang.String name
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  public <T> io.vertx.core.eventbus.EventBus registerDefaultCodec(java.lang.Class<T>, io.vertx.core.eventbus.MessageCodec<T, ?>);
    descriptor: (Ljava/lang/Class;Lio/vertx/core/eventbus/MessageCodec;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.Class clazz
        start local 2 // io.vertx.core.eventbus.MessageCodec codec
         0: .line 196
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.codecManager:Lio/vertx/core/eventbus/impl/CodecManager;
            aload 1 /* clazz */
            aload 2 /* codec */
            invokevirtual io.vertx.core.eventbus.impl.CodecManager.registerDefaultCodec:(Ljava/lang/Class;Lio/vertx/core/eventbus/MessageCodec;)V
         1: .line 197
            aload 0 /* this */
            areturn
        end local 2 // io.vertx.core.eventbus.MessageCodec codec
        end local 1 // java.lang.Class clazz
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  clazz  Ljava/lang/Class<TT;>;
            0    2     2  codec  Lio/vertx/core/eventbus/MessageCodec<TT;*>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Lio/vertx/core/eventbus/MessageCodec<TT;*>;)Lio/vertx/core/eventbus/EventBus;
    MethodParameters:
       Name  Flags
      clazz  
      codec  

  public io.vertx.core.eventbus.EventBus unregisterDefaultCodec(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Lio/vertx/core/eventbus/EventBus;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.Class clazz
         0: .line 202
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.codecManager:Lio/vertx/core/eventbus/impl/CodecManager;
            aload 1 /* clazz */
            invokevirtual io.vertx.core.eventbus.impl.CodecManager.unregisterDefaultCodec:(Ljava/lang/Class;)V
         1: .line 203
            aload 0 /* this */
            areturn
        end local 1 // java.lang.Class clazz
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  clazz  Ljava/lang/Class;
    MethodParameters:
       Name  Flags
      clazz  

  public void close(io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Lio/vertx/core/Promise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.Promise promise
         0: .line 208
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.started:Z
            ifne 3
         1: .line 209
            aload 1 /* promise */
            invokeinterface io.vertx.core.Promise.complete:()V
         2: .line 210
            return
         3: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.unregisterAll:()Lio/vertx/core/Future;
            aload 0 /* this */
            aload 1 /* promise */
            invokedynamic handle(Lio/vertx/core/eventbus/impl/EventBusImpl;Lio/vertx/core/Promise;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/core/eventbus/impl/EventBusImpl.lambda$0(Lio/vertx/core/Promise;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         4: .line 218
            return
        end local 1 // io.vertx.core.Promise promise
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    5     1  promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
    Signature: (Lio/vertx/core/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
         Name  Flags
      promise  

  public boolean isMetricsEnabled();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
         0: .line 222
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/core/eventbus/impl/EventBusImpl;

  public io.vertx.core.spi.metrics.EventBusMetrics<?> getMetrics();
    descriptor: ()Lio/vertx/core/spi/metrics/EventBusMetrics;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
         0: .line 227
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            areturn
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/EventBusImpl;
    Signature: ()Lio/vertx/core/spi/metrics/EventBusMetrics<*>;

  public io.vertx.core.eventbus.impl.MessageImpl createMessage(boolean, java.lang.String, io.vertx.core.MultiMap, java.lang.Object, java.lang.String);
    descriptor: (ZLjava/lang/String;Lio/vertx/core/MultiMap;Ljava/lang/Object;Ljava/lang/String;)Lio/vertx/core/eventbus/impl/MessageImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=8, args_size=6
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // boolean send
        start local 2 // java.lang.String address
        start local 3 // io.vertx.core.MultiMap headers
        start local 4 // java.lang.Object body
        start local 5 // java.lang.String codecName
         0: .line 231
            aload 2 /* address */
            ldc "no null address accepted"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 232
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.codecManager:Lio/vertx/core/eventbus/impl/CodecManager;
            aload 4 /* body */
            aload 5 /* codecName */
            invokevirtual io.vertx.core.eventbus.impl.CodecManager.lookupCodec:(Ljava/lang/Object;Ljava/lang/String;)Lio/vertx/core/eventbus/MessageCodec;
            astore 6 /* codec */
        start local 6 // io.vertx.core.eventbus.MessageCodec codec
         2: .line 234
            new io.vertx.core.eventbus.impl.MessageImpl
            dup
            aload 2 /* address */
            aload 3 /* headers */
            aload 4 /* body */
            aload 6 /* codec */
            iload 1 /* send */
            aload 0 /* this */
            invokespecial io.vertx.core.eventbus.impl.MessageImpl.<init>:(Ljava/lang/String;Lio/vertx/core/MultiMap;Ljava/lang/Object;Lio/vertx/core/eventbus/MessageCodec;ZLio/vertx/core/eventbus/impl/EventBusImpl;)V
            astore 7 /* msg */
        start local 7 // io.vertx.core.eventbus.impl.MessageImpl msg
         3: .line 235
            aload 7 /* msg */
            areturn
        end local 7 // io.vertx.core.eventbus.impl.MessageImpl msg
        end local 6 // io.vertx.core.eventbus.MessageCodec codec
        end local 5 // java.lang.String codecName
        end local 4 // java.lang.Object body
        end local 3 // io.vertx.core.MultiMap headers
        end local 2 // java.lang.String address
        end local 1 // boolean send
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    4     1       send  Z
            0    4     2    address  Ljava/lang/String;
            0    4     3    headers  Lio/vertx/core/MultiMap;
            0    4     4       body  Ljava/lang/Object;
            0    4     5  codecName  Ljava/lang/String;
            2    4     6      codec  Lio/vertx/core/eventbus/MessageCodec;
            3    4     7        msg  Lio/vertx/core/eventbus/impl/MessageImpl;
    MethodParameters:
           Name  Flags
      send       
      address    
      headers    
      body       
      codecName  

  protected <T> io.vertx.core.eventbus.impl.HandlerHolder<T> addRegistration(java.lang.String, io.vertx.core.eventbus.impl.HandlerRegistration<T>, boolean, boolean, io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Ljava/lang/String;Lio/vertx/core/eventbus/impl/HandlerRegistration;ZZLio/vertx/core/Promise;)Lio/vertx/core/eventbus/impl/HandlerHolder;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=6
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
        start local 2 // io.vertx.core.eventbus.impl.HandlerRegistration registration
        start local 3 // boolean replyHandler
        start local 4 // boolean localOnly
        start local 5 // io.vertx.core.Promise promise
         0: .line 239
            aload 0 /* this */
            aload 1 /* address */
            aload 2 /* registration */
            iload 3 /* replyHandler */
            iload 4 /* localOnly */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.addLocalRegistration:(Ljava/lang/String;Lio/vertx/core/eventbus/impl/HandlerRegistration;ZZ)Lio/vertx/core/eventbus/impl/HandlerHolder;
            astore 6 /* holder */
        start local 6 // io.vertx.core.eventbus.impl.HandlerHolder holder
         1: .line 240
            aload 0 /* this */
            aload 6 /* holder */
            aload 5 /* promise */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.onLocalRegistration:(Lio/vertx/core/eventbus/impl/HandlerHolder;Lio/vertx/core/Promise;)V
         2: .line 241
            aload 6 /* holder */
            areturn
        end local 6 // io.vertx.core.eventbus.impl.HandlerHolder holder
        end local 5 // io.vertx.core.Promise promise
        end local 4 // boolean localOnly
        end local 3 // boolean replyHandler
        end local 2 // io.vertx.core.eventbus.impl.HandlerRegistration registration
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    3     1       address  Ljava/lang/String;
            0    3     2  registration  Lio/vertx/core/eventbus/impl/HandlerRegistration<TT;>;
            0    3     3  replyHandler  Z
            0    3     4     localOnly  Z
            0    3     5       promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
            1    3     6        holder  Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Lio/vertx/core/eventbus/impl/HandlerRegistration<TT;>;ZZLio/vertx/core/Promise<Ljava/lang/Void;>;)Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;
    MethodParameters:
              Name  Flags
      address       
      registration  
      replyHandler  
      localOnly     
      promise       

  protected <T> void onLocalRegistration(io.vertx.core.eventbus.impl.HandlerHolder<T>, io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Lio/vertx/core/eventbus/impl/HandlerHolder;Lio/vertx/core/Promise;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.HandlerHolder handlerHolder
        start local 2 // io.vertx.core.Promise promise
         0: .line 245
            aload 2 /* promise */
            ifnull 2
         1: .line 246
            aload 2 /* promise */
            invokeinterface io.vertx.core.Promise.complete:()V
         2: .line 248
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.Promise promise
        end local 1 // io.vertx.core.eventbus.impl.HandlerHolder handlerHolder
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    3     1  handlerHolder  Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;
            0    3     2        promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;Lio/vertx/core/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
               Name  Flags
      handlerHolder  
      promise        

  private <T> io.vertx.core.eventbus.impl.HandlerHolder<T> addLocalRegistration(java.lang.String, io.vertx.core.eventbus.impl.HandlerRegistration<T>, boolean, boolean);
    descriptor: (Ljava/lang/String;Lio/vertx/core/eventbus/impl/HandlerRegistration;ZZ)Lio/vertx/core/eventbus/impl/HandlerHolder;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // java.lang.String address
        start local 2 // io.vertx.core.eventbus.impl.HandlerRegistration registration
        start local 3 // boolean replyHandler
        start local 4 // boolean localOnly
         0: .line 252
            aload 1 /* address */
            ldc "address"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 254
            aload 2 /* registration */
            getfield io.vertx.core.eventbus.impl.HandlerRegistration.context:Lio/vertx/core/impl/ContextInternal;
            astore 5 /* context */
        start local 5 // io.vertx.core.impl.ContextInternal context
         2: .line 256
            aload 0 /* this */
            aload 2 /* registration */
            iload 3 /* replyHandler */
            iload 4 /* localOnly */
            aload 5 /* context */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.createHandlerHolder:(Lio/vertx/core/eventbus/impl/HandlerRegistration;ZZLio/vertx/core/impl/ContextInternal;)Lio/vertx/core/eventbus/impl/HandlerHolder;
            astore 6 /* holder */
        start local 6 // io.vertx.core.eventbus.impl.HandlerHolder holder
         3: .line 258
            new io.vertx.core.impl.utils.ConcurrentCyclicSequence
            dup
            invokespecial io.vertx.core.impl.utils.ConcurrentCyclicSequence.<init>:()V
            aload 6 /* holder */
            invokevirtual io.vertx.core.impl.utils.ConcurrentCyclicSequence.add:(Ljava/lang/Object;)Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;
            astore 7 /* handlers */
        start local 7 // io.vertx.core.impl.utils.ConcurrentCyclicSequence handlers
         4: .line 259
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.handlerMap:Ljava/util/concurrent/ConcurrentMap;
         5: .line 260
            aload 1 /* address */
         6: .line 261
            aload 7 /* handlers */
         7: .line 262
            invokedynamic apply()Ljava/util/function/BiFunction;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
                  io/vertx/core/eventbus/impl/EventBusImpl.lambda$1(Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;)Lio/vertx/core/impl/utils/ConcurrentCyclicSequence; (6)
                  (Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;)Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;
         8: .line 259
            invokeinterface java.util.concurrent.ConcurrentMap.merge:(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
            checkcast io.vertx.core.impl.utils.ConcurrentCyclicSequence
            pop
         9: .line 264
            aload 5 /* context */
            invokeinterface io.vertx.core.impl.ContextInternal.isDeployment:()Z
            ifeq 11
        10: .line 265
            aload 5 /* context */
            aload 2 /* registration */
            invokeinterface io.vertx.core.impl.ContextInternal.addCloseHook:(Lio/vertx/core/Closeable;)V
        11: .line 268
      StackMap locals: io.vertx.core.impl.ContextInternal io.vertx.core.eventbus.impl.HandlerHolder io.vertx.core.impl.utils.ConcurrentCyclicSequence
      StackMap stack:
            aload 6 /* holder */
            areturn
        end local 7 // io.vertx.core.impl.utils.ConcurrentCyclicSequence handlers
        end local 6 // io.vertx.core.eventbus.impl.HandlerHolder holder
        end local 5 // io.vertx.core.impl.ContextInternal context
        end local 4 // boolean localOnly
        end local 3 // boolean replyHandler
        end local 2 // io.vertx.core.eventbus.impl.HandlerRegistration registration
        end local 1 // java.lang.String address
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0          this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0   12     1       address  Ljava/lang/String;
            0   12     2  registration  Lio/vertx/core/eventbus/impl/HandlerRegistration<TT;>;
            0   12     3  replyHandler  Z
            0   12     4     localOnly  Z
            2   12     5       context  Lio/vertx/core/impl/ContextInternal;
            3   12     6        holder  Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;
            4   12     7      handlers  Lio/vertx/core/impl/utils/ConcurrentCyclicSequence<Lio/vertx/core/eventbus/impl/HandlerHolder;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Lio/vertx/core/eventbus/impl/HandlerRegistration<TT;>;ZZ)Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;
    MethodParameters:
              Name  Flags
      address       
      registration  
      replyHandler  
      localOnly     

  protected <T> io.vertx.core.eventbus.impl.HandlerHolder<T> createHandlerHolder(io.vertx.core.eventbus.impl.HandlerRegistration<T>, boolean, boolean, io.vertx.core.impl.ContextInternal);
    descriptor: (Lio/vertx/core/eventbus/impl/HandlerRegistration;ZZLio/vertx/core/impl/ContextInternal;)Lio/vertx/core/eventbus/impl/HandlerHolder;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.HandlerRegistration registration
        start local 2 // boolean replyHandler
        start local 3 // boolean localOnly
        start local 4 // io.vertx.core.impl.ContextInternal context
         0: .line 272
            new io.vertx.core.eventbus.impl.HandlerHolder
            dup
            aload 1 /* registration */
            iload 2 /* replyHandler */
            iload 3 /* localOnly */
            aload 4 /* context */
            invokespecial io.vertx.core.eventbus.impl.HandlerHolder.<init>:(Lio/vertx/core/eventbus/impl/HandlerRegistration;ZZLio/vertx/core/impl/ContextInternal;)V
            areturn
        end local 4 // io.vertx.core.impl.ContextInternal context
        end local 3 // boolean localOnly
        end local 2 // boolean replyHandler
        end local 1 // io.vertx.core.eventbus.impl.HandlerRegistration registration
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    1     1  registration  Lio/vertx/core/eventbus/impl/HandlerRegistration<TT;>;
            0    1     2  replyHandler  Z
            0    1     3     localOnly  Z
            0    1     4       context  Lio/vertx/core/impl/ContextInternal;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/HandlerRegistration<TT;>;ZZLio/vertx/core/impl/ContextInternal;)Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;
    MethodParameters:
              Name  Flags
      registration  
      replyHandler  
      localOnly     
      context       

  protected <T> void removeRegistration(io.vertx.core.eventbus.impl.HandlerHolder<T>, io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Lio/vertx/core/eventbus/impl/HandlerHolder;Lio/vertx/core/Promise;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.HandlerHolder handlerHolder
        start local 2 // io.vertx.core.Promise promise
         0: .line 276
            aload 0 /* this */
            aload 1 /* handlerHolder */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.removeLocalRegistration:(Lio/vertx/core/eventbus/impl/HandlerHolder;)V
         1: .line 277
            aload 0 /* this */
            aload 1 /* handlerHolder */
            aload 2 /* promise */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.onLocalUnregistration:(Lio/vertx/core/eventbus/impl/HandlerHolder;Lio/vertx/core/Promise;)V
         2: .line 278
            return
        end local 2 // io.vertx.core.Promise promise
        end local 1 // io.vertx.core.eventbus.impl.HandlerHolder handlerHolder
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    3     1  handlerHolder  Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;
            0    3     2        promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;Lio/vertx/core/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
               Name  Flags
      handlerHolder  
      promise        

  protected <T> void onLocalUnregistration(io.vertx.core.eventbus.impl.HandlerHolder<T>, io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Lio/vertx/core/eventbus/impl/HandlerHolder;Lio/vertx/core/Promise;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.HandlerHolder handlerHolder
        start local 2 // io.vertx.core.Promise promise
         0: .line 281
            aload 2 /* promise */
            invokeinterface io.vertx.core.Promise.complete:()V
         1: .line 282
            return
        end local 2 // io.vertx.core.Promise promise
        end local 1 // io.vertx.core.eventbus.impl.HandlerHolder handlerHolder
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  handlerHolder  Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;
            0    2     2        promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;Lio/vertx/core/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
               Name  Flags
      handlerHolder  
      promise        

  private <T> void removeLocalRegistration(io.vertx.core.eventbus.impl.HandlerHolder<T>);
    descriptor: (Lio/vertx/core/eventbus/impl/HandlerHolder;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.HandlerHolder holder
         0: .line 285
            aload 1 /* holder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.getHandler:()Lio/vertx/core/eventbus/impl/HandlerRegistration;
            getfield io.vertx.core.eventbus.impl.HandlerRegistration.address:Ljava/lang/String;
            astore 2 /* address */
        start local 2 // java.lang.String address
         1: .line 286
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.handlerMap:Ljava/util/concurrent/ConcurrentMap;
            aload 2 /* address */
            aload 1 /* holder */
            invokedynamic apply(Lio/vertx/core/eventbus/impl/HandlerHolder;)Ljava/util/function/BiFunction;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
                  io/vertx/core/eventbus/impl/EventBusImpl.lambda$2(Lio/vertx/core/eventbus/impl/HandlerHolder;Ljava/lang/String;Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;)Lio/vertx/core/impl/utils/ConcurrentCyclicSequence; (6)
                  (Ljava/lang/String;Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;)Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;
            invokeinterface java.util.concurrent.ConcurrentMap.compute:(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
            pop
         2: .line 293
            aload 1 /* holder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.setRemoved:()Z
            ifeq 4
            aload 1 /* holder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.getContext:()Lio/vertx/core/impl/ContextInternal;
            invokeinterface io.vertx.core.impl.ContextInternal.deploymentID:()Ljava/lang/String;
            ifnull 4
         3: .line 294
            aload 1 /* holder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.getContext:()Lio/vertx/core/impl/ContextInternal;
            aload 1 /* holder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.getHandler:()Lio/vertx/core/eventbus/impl/HandlerRegistration;
            invokeinterface io.vertx.core.impl.ContextInternal.removeCloseHook:(Lio/vertx/core/Closeable;)V
         4: .line 296
      StackMap locals: java.lang.String
      StackMap stack:
            return
        end local 2 // java.lang.String address
        end local 1 // io.vertx.core.eventbus.impl.HandlerHolder holder
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    5     1   holder  Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;
            1    5     2  address  Ljava/lang/String;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;)V
    MethodParameters:
        Name  Flags
      holder  

  protected <T> void sendReply(io.vertx.core.eventbus.impl.MessageImpl, io.vertx.core.eventbus.DeliveryOptions, io.vertx.core.eventbus.impl.ReplyHandler<T>);
    descriptor: (Lio/vertx/core/eventbus/impl/MessageImpl;Lio/vertx/core/eventbus/DeliveryOptions;Lio/vertx/core/eventbus/impl/ReplyHandler;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=4, args_size=4
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.MessageImpl replyMessage
        start local 2 // io.vertx.core.eventbus.DeliveryOptions options
        start local 3 // io.vertx.core.eventbus.impl.ReplyHandler replyHandler
         0: .line 299
            aload 1 /* replyMessage */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.address:()Ljava/lang/String;
            ifnonnull 2
         1: .line 300
            new java.lang.IllegalStateException
            dup
            ldc "address not specified"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 302
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new io.vertx.core.eventbus.impl.OutboundDeliveryContext
            dup
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            invokeinterface io.vertx.core.impl.VertxInternal.getOrCreateContext:()Lio/vertx/core/impl/ContextInternal;
            aload 1 /* replyMessage */
            aload 2 /* options */
            aload 3 /* replyHandler */
            aconst_null
            invokespecial io.vertx.core.eventbus.impl.OutboundDeliveryContext.<init>:(Lio/vertx/core/impl/ContextInternal;Lio/vertx/core/eventbus/impl/MessageImpl;Lio/vertx/core/eventbus/DeliveryOptions;Lio/vertx/core/eventbus/impl/ReplyHandler;Lio/vertx/core/Promise;)V
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.sendOrPubInternal:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
         3: .line 304
            return
        end local 3 // io.vertx.core.eventbus.impl.ReplyHandler replyHandler
        end local 2 // io.vertx.core.eventbus.DeliveryOptions options
        end local 1 // io.vertx.core.eventbus.impl.MessageImpl replyMessage
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    4     1  replyMessage  Lio/vertx/core/eventbus/impl/MessageImpl;
            0    4     2       options  Lio/vertx/core/eventbus/DeliveryOptions;
            0    4     3  replyHandler  Lio/vertx/core/eventbus/impl/ReplyHandler<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/MessageImpl;Lio/vertx/core/eventbus/DeliveryOptions;Lio/vertx/core/eventbus/impl/ReplyHandler<TT;>;)V
    MethodParameters:
              Name  Flags
      replyMessage  
      options       
      replyHandler  

  protected <T> void sendOrPub(io.vertx.core.eventbus.impl.OutboundDeliveryContext<T>);
    descriptor: (Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
         0: .line 307
            aload 0 /* this */
            aload 1 /* sendContext */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.sendLocally:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
         1: .line 308
            return
        end local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    2     1  sendContext  Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;)V
    MethodParameters:
             Name  Flags
      sendContext  

  protected void callCompletionHandlerAsync(io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Void>>);
    descriptor: (Lio/vertx/core/Handler;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.Handler completionHandler
         0: .line 311
            aload 1 /* completionHandler */
            ifnull 2
         1: .line 312
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            aload 1 /* completionHandler */
            invokedynamic handle(Lio/vertx/core/Handler;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/core/eventbus/impl/EventBusImpl.lambda$3(Lio/vertx/core/Handler;Ljava/lang/Void;)V (6)
                  (Ljava/lang/Void;)V
            invokeinterface io.vertx.core.impl.VertxInternal.runOnContext:(Lio/vertx/core/Handler;)V
         2: .line 316
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.vertx.core.Handler completionHandler
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    3     0               this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    3     1  completionHandler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;
    Signature: (Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;)V
    MethodParameters:
                   Name  Flags
      completionHandler  

  private <T> void sendLocally(io.vertx.core.eventbus.impl.OutboundDeliveryContext<T>);
    descriptor: (Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
         0: .line 319
            aload 0 /* this */
            aload 1 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.message:Lio/vertx/core/eventbus/impl/MessageImpl;
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.deliverMessageLocally:(Lio/vertx/core/eventbus/impl/MessageImpl;)Lio/vertx/core/eventbus/ReplyException;
            astore 2 /* failure */
        start local 2 // io.vertx.core.eventbus.ReplyException failure
         1: .line 320
            aload 2 /* failure */
            ifnull 4
         2: .line 321
            aload 1 /* sendContext */
            aload 2 /* failure */
            invokevirtual io.vertx.core.eventbus.impl.OutboundDeliveryContext.written:(Ljava/lang/Throwable;)V
         3: .line 322
            goto 5
         4: .line 323
      StackMap locals: io.vertx.core.eventbus.ReplyException
      StackMap stack:
            aload 1 /* sendContext */
            aconst_null
            invokevirtual io.vertx.core.eventbus.impl.OutboundDeliveryContext.written:(Ljava/lang/Throwable;)V
         5: .line 325
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.eventbus.ReplyException failure
        end local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    6     1  sendContext  Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;
            1    6     2      failure  Lio/vertx/core/eventbus/ReplyException;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;)V
    MethodParameters:
             Name  Flags
      sendContext  

  protected boolean isMessageLocal(io.vertx.core.eventbus.impl.MessageImpl);
    descriptor: (Lio/vertx/core/eventbus/impl/MessageImpl;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.MessageImpl msg
         0: .line 328
            iconst_1
            ireturn
        end local 1 // io.vertx.core.eventbus.impl.MessageImpl msg
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    1     1   msg  Lio/vertx/core/eventbus/impl/MessageImpl;
    MethodParameters:
      Name  Flags
      msg   

  protected io.vertx.core.eventbus.ReplyException deliverMessageLocally(io.vertx.core.eventbus.impl.MessageImpl);
    descriptor: (Lio/vertx/core/eventbus/impl/MessageImpl;)Lio/vertx/core/eventbus/ReplyException;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.MessageImpl msg
         0: .line 332
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.handlerMap:Ljava/util/concurrent/ConcurrentMap;
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.address:()Ljava/lang/String;
            invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.core.impl.utils.ConcurrentCyclicSequence
            astore 2 /* handlers */
        start local 2 // io.vertx.core.impl.utils.ConcurrentCyclicSequence handlers
         1: .line 333
            aload 2 /* handlers */
            ifnull 22
         2: .line 334
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.isSend:()Z
            ifeq 13
         3: .line 336
            aload 2 /* handlers */
            invokevirtual io.vertx.core.impl.utils.ConcurrentCyclicSequence.next:()Ljava/lang/Object;
            checkcast io.vertx.core.eventbus.impl.HandlerHolder
            astore 3 /* holder */
        start local 3 // io.vertx.core.eventbus.impl.HandlerHolder holder
         4: .line 337
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            ifnull 10
         5: .line 338
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.address:()Ljava/lang/String;
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.isSend:()Z
            ifeq 6
            iconst_0
            goto 7
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.eventbus.impl.MessageImpl io.vertx.core.impl.utils.ConcurrentCyclicSequence io.vertx.core.eventbus.impl.HandlerHolder
      StackMap stack: io.vertx.core.spi.metrics.EventBusMetrics java.lang.String
         6: iconst_1
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.eventbus.impl.MessageImpl io.vertx.core.impl.utils.ConcurrentCyclicSequence io.vertx.core.eventbus.impl.HandlerHolder
      StackMap stack: io.vertx.core.spi.metrics.EventBusMetrics java.lang.String int
         7: aload 0 /* this */
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.isMessageLocal:(Lio/vertx/core/eventbus/impl/MessageImpl;)Z
            aload 3 /* holder */
            ifnull 8
            iconst_1
            goto 9
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.eventbus.impl.MessageImpl io.vertx.core.impl.utils.ConcurrentCyclicSequence io.vertx.core.eventbus.impl.HandlerHolder
      StackMap stack: io.vertx.core.spi.metrics.EventBusMetrics java.lang.String int int
         8: iconst_0
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.eventbus.impl.MessageImpl io.vertx.core.impl.utils.ConcurrentCyclicSequence io.vertx.core.eventbus.impl.HandlerHolder
      StackMap stack: io.vertx.core.spi.metrics.EventBusMetrics java.lang.String int int int
         9: invokeinterface io.vertx.core.spi.metrics.EventBusMetrics.messageReceived:(Ljava/lang/String;ZZI)V
        10: .line 340
      StackMap locals:
      StackMap stack:
            aload 3 /* holder */
            ifnull 21
        11: .line 341
            aload 3 /* holder */
            getfield io.vertx.core.eventbus.impl.HandlerHolder.handler:Lio/vertx/core/eventbus/impl/HandlerRegistration;
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.copyBeforeReceive:()Lio/vertx/core/eventbus/impl/MessageImpl;
            invokevirtual io.vertx.core.eventbus.impl.HandlerRegistration.receive:(Lio/vertx/core/eventbus/impl/MessageImpl;)V
        end local 3 // io.vertx.core.eventbus.impl.HandlerHolder holder
        12: .line 345
            goto 21
        13: .line 347
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            ifnull 17
        14: .line 348
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.address:()Ljava/lang/String;
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.isSend:()Z
            ifeq 15
            iconst_0
            goto 16
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.eventbus.impl.MessageImpl io.vertx.core.impl.utils.ConcurrentCyclicSequence
      StackMap stack: io.vertx.core.spi.metrics.EventBusMetrics java.lang.String
        15: iconst_1
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.eventbus.impl.MessageImpl io.vertx.core.impl.utils.ConcurrentCyclicSequence
      StackMap stack: io.vertx.core.spi.metrics.EventBusMetrics java.lang.String int
        16: aload 0 /* this */
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.isMessageLocal:(Lio/vertx/core/eventbus/impl/MessageImpl;)Z
            aload 2 /* handlers */
            invokevirtual io.vertx.core.impl.utils.ConcurrentCyclicSequence.size:()I
            invokeinterface io.vertx.core.spi.metrics.EventBusMetrics.messageReceived:(Ljava/lang/String;ZZI)V
        17: .line 350
      StackMap locals:
      StackMap stack:
            aload 2 /* handlers */
            invokevirtual io.vertx.core.impl.utils.ConcurrentCyclicSequence.iterator:()Ljava/util/Iterator;
            astore 4
            goto 20
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.eventbus.impl.MessageImpl io.vertx.core.impl.utils.ConcurrentCyclicSequence top java.util.Iterator
      StackMap stack:
        18: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.core.eventbus.impl.HandlerHolder
            astore 3 /* holder */
        start local 3 // io.vertx.core.eventbus.impl.HandlerHolder holder
        19: .line 351
            aload 3 /* holder */
            getfield io.vertx.core.eventbus.impl.HandlerHolder.handler:Lio/vertx/core/eventbus/impl/HandlerRegistration;
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.copyBeforeReceive:()Lio/vertx/core/eventbus/impl/MessageImpl;
            invokevirtual io.vertx.core.eventbus.impl.HandlerRegistration.receive:(Lio/vertx/core/eventbus/impl/MessageImpl;)V
        end local 3 // io.vertx.core.eventbus.impl.HandlerHolder holder
        20: .line 350
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        21: .line 354
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.eventbus.impl.MessageImpl io.vertx.core.impl.utils.ConcurrentCyclicSequence
      StackMap stack:
            aconst_null
            areturn
        22: .line 356
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            ifnull 26
        23: .line 357
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.address:()Ljava/lang/String;
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.isSend:()Z
            ifeq 24
            iconst_0
            goto 25
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.eventbus.impl.MessageImpl io.vertx.core.impl.utils.ConcurrentCyclicSequence
      StackMap stack: io.vertx.core.spi.metrics.EventBusMetrics java.lang.String
        24: iconst_1
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl io.vertx.core.eventbus.impl.MessageImpl io.vertx.core.impl.utils.ConcurrentCyclicSequence
      StackMap stack: io.vertx.core.spi.metrics.EventBusMetrics java.lang.String int
        25: aload 0 /* this */
            aload 1 /* msg */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.isMessageLocal:(Lio/vertx/core/eventbus/impl/MessageImpl;)Z
            iconst_0
            invokeinterface io.vertx.core.spi.metrics.EventBusMetrics.messageReceived:(Ljava/lang/String;ZZI)V
        26: .line 359
      StackMap locals:
      StackMap stack:
            new io.vertx.core.eventbus.ReplyException
            dup
            getstatic io.vertx.core.eventbus.ReplyFailure.NO_HANDLERS:Lio/vertx/core/eventbus/ReplyFailure;
            new java.lang.StringBuilder
            dup
            ldc "No handlers for address "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* msg */
            getfield io.vertx.core.eventbus.impl.MessageImpl.address:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial io.vertx.core.eventbus.ReplyException.<init>:(Lio/vertx/core/eventbus/ReplyFailure;Ljava/lang/String;)V
            areturn
        end local 2 // io.vertx.core.impl.utils.ConcurrentCyclicSequence handlers
        end local 1 // io.vertx.core.eventbus.impl.MessageImpl msg
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   27     0      this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0   27     1       msg  Lio/vertx/core/eventbus/impl/MessageImpl;
            1   27     2  handlers  Lio/vertx/core/impl/utils/ConcurrentCyclicSequence<Lio/vertx/core/eventbus/impl/HandlerHolder;>;
            4   12     3    holder  Lio/vertx/core/eventbus/impl/HandlerHolder;
           19   20     3    holder  Lio/vertx/core/eventbus/impl/HandlerHolder;
    MethodParameters:
      Name  Flags
      msg   

  protected void checkStarted();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
         0: .line 364
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.started:Z
            ifne 2
         1: .line 365
            new java.lang.IllegalStateException
            dup
            ldc "Event Bus is not started"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 367
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/vertx/core/eventbus/impl/EventBusImpl;

  protected java.lang.String generateReplyAddress();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
         0: .line 370
            new java.lang.StringBuilder
            dup
            ldc "__vertx.reply."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.replySequence:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/EventBusImpl;

  <T> io.vertx.core.eventbus.impl.ReplyHandler<T> createReplyHandler(io.vertx.core.eventbus.impl.MessageImpl, boolean, io.vertx.core.eventbus.DeliveryOptions);
    descriptor: (Lio/vertx/core/eventbus/impl/MessageImpl;ZLio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/impl/ReplyHandler;
    flags: (0x0000) 
    Code:
      stack=9, locals=8, args_size=4
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.MessageImpl message
        start local 2 // boolean src
        start local 3 // io.vertx.core.eventbus.DeliveryOptions options
         0: .line 376
            aload 3 /* options */
            invokevirtual io.vertx.core.eventbus.DeliveryOptions.getSendTimeout:()J
            lstore 4 /* timeout */
        start local 4 // long timeout
         1: .line 377
            aload 0 /* this */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.generateReplyAddress:()Ljava/lang/String;
            astore 6 /* replyAddress */
        start local 6 // java.lang.String replyAddress
         2: .line 378
            aload 1 /* message */
            aload 6 /* replyAddress */
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.setReplyAddress:(Ljava/lang/String;)V
         3: .line 379
            new io.vertx.core.eventbus.impl.ReplyHandler
            dup
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            invokeinterface io.vertx.core.impl.VertxInternal.getOrCreateContext:()Lio/vertx/core/impl/ContextInternal;
            aload 6 /* replyAddress */
            aload 1 /* message */
            getfield io.vertx.core.eventbus.impl.MessageImpl.address:Ljava/lang/String;
            iload 2 /* src */
            lload 4 /* timeout */
            invokespecial io.vertx.core.eventbus.impl.ReplyHandler.<init>:(Lio/vertx/core/eventbus/impl/EventBusImpl;Lio/vertx/core/impl/ContextInternal;Ljava/lang/String;Ljava/lang/String;ZJ)V
            astore 7 /* handler */
        start local 7 // io.vertx.core.eventbus.impl.ReplyHandler handler
         4: .line 380
            aload 7 /* handler */
            invokevirtual io.vertx.core.eventbus.impl.ReplyHandler.register:()V
         5: .line 381
            aload 7 /* handler */
            areturn
        end local 7 // io.vertx.core.eventbus.impl.ReplyHandler handler
        end local 6 // java.lang.String replyAddress
        end local 4 // long timeout
        end local 3 // io.vertx.core.eventbus.DeliveryOptions options
        end local 2 // boolean src
        end local 1 // io.vertx.core.eventbus.impl.MessageImpl message
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    6     1       message  Lio/vertx/core/eventbus/impl/MessageImpl;
            0    6     2           src  Z
            0    6     3       options  Lio/vertx/core/eventbus/DeliveryOptions;
            1    6     4       timeout  J
            2    6     6  replyAddress  Ljava/lang/String;
            4    6     7       handler  Lio/vertx/core/eventbus/impl/ReplyHandler<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/MessageImpl;ZLio/vertx/core/eventbus/DeliveryOptions;)Lio/vertx/core/eventbus/impl/ReplyHandler<TT;>;
    MethodParameters:
         Name  Flags
      message  
      src      
      options  

  public <T> io.vertx.core.eventbus.impl.OutboundDeliveryContext<T> newSendContext(io.vertx.core.eventbus.impl.MessageImpl, io.vertx.core.eventbus.DeliveryOptions, io.vertx.core.eventbus.impl.ReplyHandler<T>, io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Lio/vertx/core/eventbus/impl/MessageImpl;Lio/vertx/core/eventbus/DeliveryOptions;Lio/vertx/core/eventbus/impl/ReplyHandler;Lio/vertx/core/Promise;)Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=5
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.MessageImpl message
        start local 2 // io.vertx.core.eventbus.DeliveryOptions options
        start local 3 // io.vertx.core.eventbus.impl.ReplyHandler handler
        start local 4 // io.vertx.core.Promise writePromise
         0: .line 386
            new io.vertx.core.eventbus.impl.OutboundDeliveryContext
            dup
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            invokeinterface io.vertx.core.impl.VertxInternal.getOrCreateContext:()Lio/vertx/core/impl/ContextInternal;
            aload 1 /* message */
            aload 2 /* options */
            aload 3 /* handler */
            aload 4 /* writePromise */
            invokespecial io.vertx.core.eventbus.impl.OutboundDeliveryContext.<init>:(Lio/vertx/core/impl/ContextInternal;Lio/vertx/core/eventbus/impl/MessageImpl;Lio/vertx/core/eventbus/DeliveryOptions;Lio/vertx/core/eventbus/impl/ReplyHandler;Lio/vertx/core/Promise;)V
            areturn
        end local 4 // io.vertx.core.Promise writePromise
        end local 3 // io.vertx.core.eventbus.impl.ReplyHandler handler
        end local 2 // io.vertx.core.eventbus.DeliveryOptions options
        end local 1 // io.vertx.core.eventbus.impl.MessageImpl message
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    1     1       message  Lio/vertx/core/eventbus/impl/MessageImpl;
            0    1     2       options  Lio/vertx/core/eventbus/DeliveryOptions;
            0    1     3       handler  Lio/vertx/core/eventbus/impl/ReplyHandler<TT;>;
            0    1     4  writePromise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/MessageImpl;Lio/vertx/core/eventbus/DeliveryOptions;Lio/vertx/core/eventbus/impl/ReplyHandler<TT;>;Lio/vertx/core/Promise<Ljava/lang/Void;>;)Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;
    MethodParameters:
              Name  Flags
      message       
      options       
      handler       
      writePromise  

  public <T> void sendOrPubInternal(io.vertx.core.eventbus.impl.OutboundDeliveryContext<T>);
    descriptor: (Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext senderCtx
         0: .line 390
            aload 0 /* this */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.checkStarted:()V
         1: .line 391
            aload 1 /* senderCtx */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.sendInterceptors:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            putfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.iter:Ljava/util/Iterator;
         2: .line 392
            aload 1 /* senderCtx */
            aload 0 /* this */
            putfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.bus:Lio/vertx/core/eventbus/impl/EventBusImpl;
         3: .line 393
            aload 1 /* senderCtx */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            putfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
         4: .line 394
            aload 1 /* senderCtx */
            invokevirtual io.vertx.core.eventbus.impl.OutboundDeliveryContext.next:()V
         5: .line 395
            return
        end local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext senderCtx
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    6     1  senderCtx  Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;)V
    MethodParameters:
           Name  Flags
      senderCtx  

  public <T> void sendOrPubInternal(io.vertx.core.eventbus.impl.MessageImpl, io.vertx.core.eventbus.DeliveryOptions, io.vertx.core.eventbus.impl.ReplyHandler<T>, io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Lio/vertx/core/eventbus/impl/MessageImpl;Lio/vertx/core/eventbus/DeliveryOptions;Lio/vertx/core/eventbus/impl/ReplyHandler;Lio/vertx/core/Promise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 1 // io.vertx.core.eventbus.impl.MessageImpl message
        start local 2 // io.vertx.core.eventbus.DeliveryOptions options
        start local 3 // io.vertx.core.eventbus.impl.ReplyHandler handler
        start local 4 // io.vertx.core.Promise writePromise
         0: .line 399
            aload 0 /* this */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.checkStarted:()V
         1: .line 400
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* message */
            aload 2 /* options */
            aload 3 /* handler */
            aload 4 /* writePromise */
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.newSendContext:(Lio/vertx/core/eventbus/impl/MessageImpl;Lio/vertx/core/eventbus/DeliveryOptions;Lio/vertx/core/eventbus/impl/ReplyHandler;Lio/vertx/core/Promise;)Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.sendOrPubInternal:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
         2: .line 401
            return
        end local 4 // io.vertx.core.Promise writePromise
        end local 3 // io.vertx.core.eventbus.impl.ReplyHandler handler
        end local 2 // io.vertx.core.eventbus.DeliveryOptions options
        end local 1 // io.vertx.core.eventbus.impl.MessageImpl message
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    3     1       message  Lio/vertx/core/eventbus/impl/MessageImpl;
            0    3     2       options  Lio/vertx/core/eventbus/DeliveryOptions;
            0    3     3       handler  Lio/vertx/core/eventbus/impl/ReplyHandler<TT;>;
            0    3     4  writePromise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/MessageImpl;Lio/vertx/core/eventbus/DeliveryOptions;Lio/vertx/core/eventbus/impl/ReplyHandler<TT;>;Lio/vertx/core/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
              Name  Flags
      message       
      options       
      handler       
      writePromise  

  private io.vertx.core.Future<java.lang.Void> unregisterAll();
    descriptor: ()Lio/vertx/core/Future;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
         0: .line 405
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* futures */
        start local 1 // java.util.List futures
         1: .line 406
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.handlerMap:Ljava/util/concurrent/ConcurrentMap;
            invokeinterface java.util.concurrent.ConcurrentMap.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 7
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.core.impl.utils.ConcurrentCyclicSequence
            astore 2 /* handlers */
        start local 2 // io.vertx.core.impl.utils.ConcurrentCyclicSequence handlers
         3: .line 407
            aload 2 /* handlers */
            invokevirtual io.vertx.core.impl.utils.ConcurrentCyclicSequence.iterator:()Ljava/util/Iterator;
            astore 5
            goto 6
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl java.util.List io.vertx.core.impl.utils.ConcurrentCyclicSequence java.util.Iterator top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.core.eventbus.impl.HandlerHolder
            astore 4 /* holder */
        start local 4 // io.vertx.core.eventbus.impl.HandlerHolder holder
         5: .line 408
            aload 1 /* futures */
            aload 4 /* holder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.getHandler:()Lio/vertx/core/eventbus/impl/HandlerRegistration;
            invokevirtual io.vertx.core.eventbus.impl.HandlerRegistration.unregister:()Lio/vertx/core/Future;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // io.vertx.core.eventbus.impl.HandlerHolder holder
         6: .line 407
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        end local 2 // io.vertx.core.impl.utils.ConcurrentCyclicSequence handlers
         7: .line 406
      StackMap locals: io.vertx.core.eventbus.impl.EventBusImpl java.util.List top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         8: .line 411
            aload 1 /* futures */
            invokestatic io.vertx.core.CompositeFuture.join:(Ljava/util/List;)Lio/vertx/core/CompositeFuture;
            invokeinterface io.vertx.core.CompositeFuture.mapEmpty:()Lio/vertx/core/Future;
            areturn
        end local 1 // java.util.List futures
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            1    9     1   futures  Ljava/util/List<Lio/vertx/core/Future;>;
            3    7     2  handlers  Lio/vertx/core/impl/utils/ConcurrentCyclicSequence<Lio/vertx/core/eventbus/impl/HandlerHolder;>;
            5    6     4    holder  Lio/vertx/core/eventbus/impl/HandlerHolder;
    Signature: ()Lio/vertx/core/Future<Ljava/lang/Void;>;

  public io.vertx.core.spi.metrics.Metrics getMetrics();
    descriptor: ()Lio/vertx/core/spi/metrics/Metrics;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual io.vertx.core.eventbus.impl.EventBusImpl.getMetrics:()Lio/vertx/core/spi/metrics/EventBusMetrics;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void lambda$0(io.vertx.core.Promise, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/Promise;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
        start local 2 // io.vertx.core.AsyncResult ar
         0: .line 213
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            ifnull 2
         1: .line 214
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.EventBusImpl.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            invokeinterface io.vertx.core.spi.metrics.EventBusMetrics.close:()V
         2: .line 216
      StackMap locals:
      StackMap stack:
            aload 1
            aload 2 /* ar */
            invokeinterface io.vertx.core.Promise.handle:(Lio/vertx/core/AsyncResult;)V
         3: .line 217
            return
        end local 2 // io.vertx.core.AsyncResult ar
        end local 0 // io.vertx.core.eventbus.impl.EventBusImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/vertx/core/eventbus/impl/EventBusImpl;
            0    4     2    ar  Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;

  private static io.vertx.core.impl.utils.ConcurrentCyclicSequence lambda$1(io.vertx.core.impl.utils.ConcurrentCyclicSequence, io.vertx.core.impl.utils.ConcurrentCyclicSequence);
    descriptor: (Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;)Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.impl.utils.ConcurrentCyclicSequence old
        start local 1 // io.vertx.core.impl.utils.ConcurrentCyclicSequence prev
         0: .line 262
            aload 0 /* old */
            aload 1 /* prev */
            invokevirtual io.vertx.core.impl.utils.ConcurrentCyclicSequence.first:()Ljava/lang/Object;
            checkcast io.vertx.core.eventbus.impl.HandlerHolder
            invokevirtual io.vertx.core.impl.utils.ConcurrentCyclicSequence.add:(Ljava/lang/Object;)Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;
            areturn
        end local 1 // io.vertx.core.impl.utils.ConcurrentCyclicSequence prev
        end local 0 // io.vertx.core.impl.utils.ConcurrentCyclicSequence old
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   old  Lio/vertx/core/impl/utils/ConcurrentCyclicSequence<Lio/vertx/core/eventbus/impl/HandlerHolder;>;
            0    1     1  prev  Lio/vertx/core/impl/utils/ConcurrentCyclicSequence<Lio/vertx/core/eventbus/impl/HandlerHolder;>;

  private static io.vertx.core.impl.utils.ConcurrentCyclicSequence lambda$2(io.vertx.core.eventbus.impl.HandlerHolder, java.lang.String, io.vertx.core.impl.utils.ConcurrentCyclicSequence);
    descriptor: (Lio/vertx/core/eventbus/impl/HandlerHolder;Ljava/lang/String;Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;)Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=4, args_size=3
        start local 1 // java.lang.String key
        start local 2 // io.vertx.core.impl.utils.ConcurrentCyclicSequence val
         0: .line 287
            aload 2 /* val */
            ifnonnull 2
         1: .line 288
            aconst_null
            areturn
         2: .line 290
      StackMap locals:
      StackMap stack:
            aload 2 /* val */
            aload 0
            invokevirtual io.vertx.core.impl.utils.ConcurrentCyclicSequence.remove:(Ljava/lang/Object;)Lio/vertx/core/impl/utils/ConcurrentCyclicSequence;
            astore 3 /* next */
        start local 3 // io.vertx.core.impl.utils.ConcurrentCyclicSequence next
         3: .line 291
            aload 3 /* next */
            invokevirtual io.vertx.core.impl.utils.ConcurrentCyclicSequence.size:()I
            ifne 4
            aconst_null
            goto 5
      StackMap locals: io.vertx.core.impl.utils.ConcurrentCyclicSequence
      StackMap stack:
         4: aload 3 /* next */
      StackMap locals:
      StackMap stack: io.vertx.core.impl.utils.ConcurrentCyclicSequence
         5: areturn
        end local 3 // io.vertx.core.impl.utils.ConcurrentCyclicSequence next
        end local 2 // io.vertx.core.impl.utils.ConcurrentCyclicSequence val
        end local 1 // java.lang.String key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     1   key  Ljava/lang/String;
            0    6     2   val  Lio/vertx/core/impl/utils/ConcurrentCyclicSequence<Lio/vertx/core/eventbus/impl/HandlerHolder;>;
            3    6     3  next  Lio/vertx/core/impl/utils/ConcurrentCyclicSequence<Lio/vertx/core/eventbus/impl/HandlerHolder;>;

  private static void lambda$3(io.vertx.core.Handler, java.lang.Void);
    descriptor: (Lio/vertx/core/Handler;Ljava/lang/Void;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // java.lang.Void v
         0: .line 313
            aload 0
            invokestatic io.vertx.core.Future.succeededFuture:()Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         1: .line 314
            return
        end local 1 // java.lang.Void v
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     1     v  Ljava/lang/Void;
}
SourceFile: "EventBusImpl.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles