public class io.vertx.core.eventbus.impl.clustered.ClusteredEventBus extends io.vertx.core.eventbus.impl.EventBusImpl
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.core.eventbus.impl.clustered.ClusteredEventBus
  super_class: io.vertx.core.eventbus.impl.EventBusImpl
{
  private static final io.vertx.core.impl.logging.Logger log;
    descriptor: Lio/vertx/core/impl/logging/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final io.vertx.core.buffer.Buffer PONG;
    descriptor: Lio/vertx/core/buffer/Buffer;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  private final io.vertx.core.spi.cluster.ClusterManager clusterManager;
    descriptor: Lio/vertx/core/spi/cluster/ClusterManager;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.vertx.core.spi.cluster.NodeSelector nodeSelector;
    descriptor: Lio/vertx/core/spi/cluster/NodeSelector;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final java.util.concurrent.ConcurrentMap<java.lang.String, io.vertx.core.eventbus.impl.clustered.ConnectionHolder> connections;
    descriptor: Ljava/util/concurrent/ConcurrentMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentMap<Ljava/lang/String;Lio/vertx/core/eventbus/impl/clustered/ConnectionHolder;>;

  private io.vertx.core.spi.cluster.NodeInfo nodeInfo;
    descriptor: Lio/vertx/core/spi/cluster/NodeInfo;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String nodeId;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private io.vertx.core.net.NetServer server;
    descriptor: Lio/vertx/core/net/NetServer;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 49
            ldc Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            invokestatic io.vertx.core.impl.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/impl/logging/Logger;
            putstatic io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.log:Lio/vertx/core/impl/logging/Logger;
         1: .line 51
            iconst_1
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            invokestatic io.vertx.core.buffer.Buffer.buffer:([B)Lio/vertx/core/buffer/Buffer;
            putstatic io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.PONG:Lio/vertx/core/buffer/Buffer;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(io.vertx.core.impl.VertxInternal, io.vertx.core.VertxOptions, io.vertx.core.spi.cluster.ClusterManager, io.vertx.core.spi.cluster.NodeSelector);
    descriptor: (Lio/vertx/core/impl/VertxInternal;Lio/vertx/core/VertxOptions;Lio/vertx/core/spi/cluster/ClusterManager;Lio/vertx/core/spi/cluster/NodeSelector;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.impl.VertxInternal vertx
        start local 2 // io.vertx.core.VertxOptions options
        start local 3 // io.vertx.core.spi.cluster.ClusterManager clusterManager
        start local 4 // io.vertx.core.spi.cluster.NodeSelector nodeSelector
         0: .line 65
            aload 0 /* this */
            aload 1 /* vertx */
            invokespecial io.vertx.core.eventbus.impl.EventBusImpl.<init>:(Lio/vertx/core/impl/VertxInternal;)V
         1: .line 56
            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.clustered.ClusteredEventBus.handlerSequence:Ljava/util/concurrent/atomic/AtomicLong;
         2: .line 58
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.connections:Ljava/util/concurrent/ConcurrentMap;
         3: .line 66
            aload 0 /* this */
            aload 2 /* options */
            invokevirtual io.vertx.core.VertxOptions.getEventBusOptions:()Lio/vertx/core/eventbus/EventBusOptions;
            putfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.options:Lio/vertx/core/eventbus/EventBusOptions;
         4: .line 67
            aload 0 /* this */
            aload 3 /* clusterManager */
            putfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.clusterManager:Lio/vertx/core/spi/cluster/ClusterManager;
         5: .line 68
            aload 0 /* this */
            aload 4 /* nodeSelector */
            putfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeSelector:Lio/vertx/core/spi/cluster/NodeSelector;
         6: .line 69
            return
        end local 4 // io.vertx.core.spi.cluster.NodeSelector nodeSelector
        end local 3 // io.vertx.core.spi.cluster.ClusterManager clusterManager
        end local 2 // io.vertx.core.VertxOptions options
        end local 1 // io.vertx.core.impl.VertxInternal vertx
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    7     1           vertx  Lio/vertx/core/impl/VertxInternal;
            0    7     2         options  Lio/vertx/core/VertxOptions;
            0    7     3  clusterManager  Lio/vertx/core/spi/cluster/ClusterManager;
            0    7     4    nodeSelector  Lio/vertx/core/spi/cluster/NodeSelector;
    MethodParameters:
                Name  Flags
      vertx           
      options         
      clusterManager  
      nodeSelector    

  private io.vertx.core.net.NetServerOptions getServerOptions();
    descriptor: ()Lio/vertx/core/net/NetServerOptions;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
         0: .line 72
            new io.vertx.core.net.NetServerOptions
            dup
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.options:Lio/vertx/core/eventbus/EventBusOptions;
            invokevirtual io.vertx.core.eventbus.EventBusOptions.toJson:()Lio/vertx/core/json/JsonObject;
            invokespecial io.vertx.core.net.NetServerOptions.<init>:(Lio/vertx/core/json/JsonObject;)V
            areturn
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;

  public void start(io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Lio/vertx/core/Promise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.Promise promise
         0: .line 77
            aload 0 /* this */
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.getServerOptions:()Lio/vertx/core/net/NetServerOptions;
            astore 2 /* serverOptions */
        start local 2 // io.vertx.core.net.NetServerOptions serverOptions
         1: .line 78
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.vertx:Lio/vertx/core/impl/VertxInternal;
            aload 2 /* serverOptions */
            invokeinterface io.vertx.core.impl.VertxInternal.createNetServer:(Lio/vertx/core/net/NetServerOptions;)Lio/vertx/core/net/NetServer;
            putfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.server:Lio/vertx/core/net/NetServer;
         2: .line 79
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.server:Lio/vertx/core/net/NetServer;
            aload 0 /* this */
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.getServerHandler:()Lio/vertx/core/Handler;
            invokeinterface io.vertx.core.net.NetServer.connectHandler:(Lio/vertx/core/Handler;)Lio/vertx/core/net/NetServer;
            pop
         3: .line 80
            aload 0 /* this */
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.getClusterPort:()I
            istore 3 /* port */
        start local 3 // int port
         4: .line 81
            aload 0 /* this */
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.getClusterHost:()Ljava/lang/String;
            astore 4 /* host */
        start local 4 // java.lang.String host
         5: .line 82
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.server:Lio/vertx/core/net/NetServer;
            iload 3 /* port */
            aload 4 /* host */
            invokeinterface io.vertx.core.net.NetServer.listen:(ILjava/lang/String;)Lio/vertx/core/Future;
            aload 0 /* this */
            aload 4 /* host */
            invokedynamic apply(Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;Ljava/lang/String;)Ljava/util/function/Function;
              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;
                  io/vertx/core/eventbus/impl/clustered/ClusteredEventBus.lambda$0(Ljava/lang/String;Lio/vertx/core/net/NetServer;)Lio/vertx/core/Future; (7)
                  (Lio/vertx/core/net/NetServer;)Lio/vertx/core/Future;
            invokeinterface io.vertx.core.Future.flatMap:(Ljava/util/function/Function;)Lio/vertx/core/Future;
         6: .line 90
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;)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/clustered/ClusteredEventBus.lambda$1(Ljava/lang/Void;)V (7)
                  (Ljava/lang/Void;)V
            invokeinterface io.vertx.core.Future.onSuccess:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
         7: .line 93
            aload 1 /* promise */
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         8: .line 94
            return
        end local 4 // java.lang.String host
        end local 3 // int port
        end local 2 // io.vertx.core.net.NetServerOptions serverOptions
        end local 1 // io.vertx.core.Promise promise
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0           this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    9     1        promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
            1    9     2  serverOptions  Lio/vertx/core/net/NetServerOptions;
            4    9     3           port  I
            5    9     4           host  Ljava/lang/String;
    Signature: (Lio/vertx/core/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
         Name  Flags
      promise  

  public void close(io.vertx.core.Promise<java.lang.Void>);
    descriptor: (Lio/vertx/core/Promise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.Promise promise
         0: .line 98
            invokestatic io.vertx.core.Promise.promise:()Lio/vertx/core/Promise;
            astore 2 /* parentClose */
        start local 2 // io.vertx.core.Promise parentClose
         1: .line 99
            aload 0 /* this */
            aload 2 /* parentClose */
            invokespecial io.vertx.core.eventbus.impl.EventBusImpl.close:(Lio/vertx/core/Promise;)V
         2: .line 100
            aload 2 /* parentClose */
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            aload 0 /* this */
            aload 1 /* promise */
            invokedynamic handle(Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;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/clustered/ClusteredEventBus.lambda$2(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
         3: .line 116
            return
        end local 2 // io.vertx.core.Promise parentClose
        end local 1 // io.vertx.core.Promise promise
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    4     1      promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
            1    4     2  parentClose  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.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=9, locals=8, args_size=6
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus 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 120
            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 121
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.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 123
            new io.vertx.core.eventbus.impl.clustered.ClusteredMessage
            dup
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeId:Ljava/lang/String;
            aload 2 /* address */
            aload 3 /* headers */
            aload 4 /* body */
            aload 6 /* codec */
            iload 1 /* send */
            aload 0 /* this */
            invokespecial io.vertx.core.eventbus.impl.clustered.ClusteredMessage.<init>:(Ljava/lang/String;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.clustered.ClusteredMessage msg
         3: .line 124
            aload 7 /* msg */
            areturn
        end local 7 // io.vertx.core.eventbus.impl.clustered.ClusteredMessage 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.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            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/clustered/ClusteredMessage;
    MethodParameters:
           Name  Flags
      send       
      address    
      headers    
      body       
      codecName  

  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=6, locals=4, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.eventbus.impl.HandlerHolder handlerHolder
        start local 2 // io.vertx.core.Promise promise
         0: .line 129
            aload 1 /* handlerHolder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.isReplyHandler:()Z
            ifne 8
         1: .line 130
            new io.vertx.core.spi.cluster.RegistrationInfo
            dup
         2: .line 131
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeId:Ljava/lang/String;
         3: .line 132
            aload 1 /* handlerHolder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.getSeq:()J
         4: .line 133
            aload 1 /* handlerHolder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.isLocalOnly:()Z
         5: .line 130
            invokespecial io.vertx.core.spi.cluster.RegistrationInfo.<init>:(Ljava/lang/String;JZ)V
            astore 3 /* registrationInfo */
        start local 3 // io.vertx.core.spi.cluster.RegistrationInfo registrationInfo
         6: .line 135
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.clusterManager:Lio/vertx/core/spi/cluster/ClusterManager;
            aload 1 /* handlerHolder */
            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;
            aload 3 /* registrationInfo */
            aload 2 /* promise */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.core.Promise
            invokeinterface io.vertx.core.spi.cluster.ClusterManager.addRegistration:(Ljava/lang/String;Lio/vertx/core/spi/cluster/RegistrationInfo;Lio/vertx/core/Promise;)V
        end local 3 // io.vertx.core.spi.cluster.RegistrationInfo registrationInfo
         7: .line 136
            goto 10
      StackMap locals:
      StackMap stack:
         8: aload 2 /* promise */
            ifnull 10
         9: .line 137
            aload 2 /* promise */
            invokeinterface io.vertx.core.Promise.complete:()V
        10: .line 139
      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.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   11     0              this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0   11     1     handlerHolder  Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;
            0   11     2           promise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
            6    7     3  registrationInfo  Lio/vertx/core/spi/cluster/RegistrationInfo;
    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> 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=8, locals=5, args_size=5
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus 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 143
            new io.vertx.core.eventbus.impl.clustered.ClusteredHandlerHolder
            dup
            aload 1 /* registration */
            iload 2 /* replyHandler */
            iload 3 /* localOnly */
            aload 4 /* context */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.handlerSequence:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.getAndIncrement:()J
            invokespecial io.vertx.core.eventbus.impl.clustered.ClusteredHandlerHolder.<init>:(Lio/vertx/core/eventbus/impl/HandlerRegistration;ZZLio/vertx/core/impl/ContextInternal;J)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.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            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 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=6, locals=5, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.eventbus.impl.HandlerHolder handlerHolder
        start local 2 // io.vertx.core.Promise completionHandler
         0: .line 148
            aload 1 /* handlerHolder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.isReplyHandler:()Z
            ifne 10
         1: .line 149
            new io.vertx.core.spi.cluster.RegistrationInfo
            dup
         2: .line 150
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeId:Ljava/lang/String;
         3: .line 151
            aload 1 /* handlerHolder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.getSeq:()J
         4: .line 152
            aload 1 /* handlerHolder */
            invokevirtual io.vertx.core.eventbus.impl.HandlerHolder.isLocalOnly:()Z
         5: .line 149
            invokespecial io.vertx.core.spi.cluster.RegistrationInfo.<init>:(Ljava/lang/String;JZ)V
            astore 3 /* registrationInfo */
        start local 3 // io.vertx.core.spi.cluster.RegistrationInfo registrationInfo
         6: .line 154
            invokestatic io.vertx.core.Promise.promise:()Lio/vertx/core/Promise;
            astore 4 /* promise */
        start local 4 // io.vertx.core.Promise promise
         7: .line 155
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.clusterManager:Lio/vertx/core/spi/cluster/ClusterManager;
            aload 1 /* handlerHolder */
            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;
            aload 3 /* registrationInfo */
            aload 4 /* promise */
            invokeinterface io.vertx.core.spi.cluster.ClusterManager.removeRegistration:(Ljava/lang/String;Lio/vertx/core/spi/cluster/RegistrationInfo;Lio/vertx/core/Promise;)V
         8: .line 156
            aload 4 /* promise */
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            aload 2 /* completionHandler */
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
        end local 4 // io.vertx.core.Promise promise
        end local 3 // io.vertx.core.spi.cluster.RegistrationInfo registrationInfo
         9: .line 157
            goto 11
        10: .line 158
      StackMap locals:
      StackMap stack:
            aload 2 /* completionHandler */
            invokeinterface io.vertx.core.Promise.complete:()V
        11: .line 160
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.Promise completionHandler
        end local 1 // io.vertx.core.eventbus.impl.HandlerHolder handlerHolder
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0               this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0   12     1      handlerHolder  Lio/vertx/core/eventbus/impl/HandlerHolder<TT;>;
            0   12     2  completionHandler  Lio/vertx/core/Promise<Ljava/lang/Void;>;
            6    9     3   registrationInfo  Lio/vertx/core/spi/cluster/RegistrationInfo;
            7    9     4            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      
      completionHandler  

  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=4, locals=4, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
         0: .line 164
            aload 1 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.message:Lio/vertx/core/eventbus/impl/MessageImpl;
            checkcast io.vertx.core.eventbus.impl.clustered.ClusteredMessage
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredMessage.getRepliedTo:()Ljava/lang/String;
            ifnull 3
         1: .line 165
            aload 0 /* this */
            aload 1 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.message:Lio/vertx/core/eventbus/impl/MessageImpl;
            checkcast io.vertx.core.eventbus.impl.clustered.ClusteredMessage
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredMessage.getRepliedTo:()Ljava/lang/String;
            aload 1 /* sendContext */
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.clusteredSendReply:(Ljava/lang/String;Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
         2: .line 166
            goto 15
      StackMap locals:
      StackMap stack:
         3: aload 1 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.options:Lio/vertx/core/eventbus/DeliveryOptions;
            invokevirtual io.vertx.core.eventbus.DeliveryOptions.isLocalOnly:()Z
            ifeq 6
         4: .line 167
            aload 0 /* this */
            aload 1 /* sendContext */
            invokespecial io.vertx.core.eventbus.impl.EventBusImpl.sendOrPub:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
         5: .line 168
            goto 15
         6: .line 169
      StackMap locals:
      StackMap stack:
            aload 1 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.ctx:Lio/vertx/core/impl/ContextInternal;
            invokestatic io.vertx.core.eventbus.impl.clustered.Serializer.get:(Lio/vertx/core/impl/ContextInternal;)Lio/vertx/core/eventbus/impl/clustered/Serializer;
            astore 2 /* serializer */
        start local 2 // io.vertx.core.eventbus.impl.clustered.Serializer serializer
         7: .line 170
            aload 1 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.message:Lio/vertx/core/eventbus/impl/MessageImpl;
            invokevirtual io.vertx.core.eventbus.impl.MessageImpl.isSend:()Z
            ifeq 12
         8: .line 171
            aload 1 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.ctx:Lio/vertx/core/impl/ContextInternal;
            invokeinterface io.vertx.core.impl.ContextInternal.promise:()Lio/vertx/core/impl/future/PromiseInternal;
            astore 3 /* promise */
        start local 3 // io.vertx.core.Promise promise
         9: .line 172
            aload 2 /* serializer */
            aload 1 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.message:Lio/vertx/core/eventbus/impl/MessageImpl;
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeSelector:Lio/vertx/core/spi/cluster/NodeSelector;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic accept(Lio/vertx/core/spi/cluster/NodeSelector;)Ljava/util/function/BiConsumer;
              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;)V
                  io/vertx/core/spi/cluster/NodeSelector.selectForSend(Lio/vertx/core/eventbus/Message;Lio/vertx/core/Promise;)V (9 itf)
                  (Lio/vertx/core/eventbus/Message;Lio/vertx/core/Promise;)V
            aload 3 /* promise */
            invokevirtual io.vertx.core.eventbus.impl.clustered.Serializer.queue:(Lio/vertx/core/eventbus/Message;Ljava/util/function/BiConsumer;Lio/vertx/core/Promise;)V
        10: .line 173
            aload 3 /* promise */
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            aload 0 /* this */
            aload 1 /* sendContext */
            invokedynamic handle(Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)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/clustered/ClusteredEventBus.lambda$5(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;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
        end local 3 // io.vertx.core.Promise promise
        11: .line 180
            goto 15
        12: .line 181
      StackMap locals: io.vertx.core.eventbus.impl.clustered.Serializer
      StackMap stack:
            aload 1 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.ctx:Lio/vertx/core/impl/ContextInternal;
            invokeinterface io.vertx.core.impl.ContextInternal.promise:()Lio/vertx/core/impl/future/PromiseInternal;
            astore 3 /* promise */
        start local 3 // io.vertx.core.Promise promise
        13: .line 182
            aload 2 /* serializer */
            aload 1 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.message:Lio/vertx/core/eventbus/impl/MessageImpl;
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeSelector:Lio/vertx/core/spi/cluster/NodeSelector;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic accept(Lio/vertx/core/spi/cluster/NodeSelector;)Ljava/util/function/BiConsumer;
              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;)V
                  io/vertx/core/spi/cluster/NodeSelector.selectForPublish(Lio/vertx/core/eventbus/Message;Lio/vertx/core/Promise;)V (9 itf)
                  (Lio/vertx/core/eventbus/Message;Lio/vertx/core/Promise;)V
            aload 3 /* promise */
            invokevirtual io.vertx.core.eventbus.impl.clustered.Serializer.queue:(Lio/vertx/core/eventbus/Message;Ljava/util/function/BiConsumer;Lio/vertx/core/Promise;)V
        14: .line 183
            aload 3 /* promise */
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            aload 0 /* this */
            aload 1 /* sendContext */
            invokedynamic handle(Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)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/clustered/ClusteredEventBus.lambda$7(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;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
        end local 3 // io.vertx.core.Promise promise
        end local 2 // io.vertx.core.eventbus.impl.clustered.Serializer serializer
        15: .line 192
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0         this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0   16     1  sendContext  Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;
            7   15     2   serializer  Lio/vertx/core/eventbus/impl/clustered/Serializer;
            9   11     3      promise  Lio/vertx/core/Promise<Ljava/lang/String;>;
           13   15     3      promise  Lio/vertx/core/Promise<Ljava/lang/Iterable<Ljava/lang/String;>;>;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;)V
    MethodParameters:
             Name  Flags
      sendContext  

  private void sendOrPublishFailed(io.vertx.core.eventbus.impl.OutboundDeliveryContext<?>, java.lang.Throwable);
    descriptor: (Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        start local 2 // java.lang.Throwable cause
         0: .line 195
            getstatic io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.log:Lio/vertx/core/impl/logging/Logger;
            invokeinterface io.vertx.core.impl.logging.Logger.isDebugEnabled:()Z
            ifeq 2
         1: .line 196
            getstatic io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Failed to send message"
            aload 2 /* cause */
            invokeinterface io.vertx.core.impl.logging.Logger.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         2: .line 198
      StackMap locals:
      StackMap stack:
            aload 1 /* sendContext */
            aload 2 /* cause */
            invokevirtual io.vertx.core.eventbus.impl.OutboundDeliveryContext.written:(Ljava/lang/Throwable;)V
         3: .line 199
            return
        end local 2 // java.lang.Throwable cause
        end local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    4     1  sendContext  Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<*>;
            0    4     2        cause  Ljava/lang/Throwable;
    Signature: (Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<*>;Ljava/lang/Throwable;)V
    MethodParameters:
             Name  Flags
      sendContext  
      cause        

  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.clustered.ClusteredEventBus this
         0: .line 204
            new java.lang.StringBuilder
            dup
            ldc "__vertx.reply."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            invokestatic java.util.UUID.randomUUID:()Ljava/util/UUID;
            invokevirtual java.util.UUID.toString:()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.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;

  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=3, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.eventbus.impl.MessageImpl msg
         0: .line 209
            aload 1 /* msg */
            checkcast io.vertx.core.eventbus.impl.clustered.ClusteredMessage
            astore 2 /* clusteredMessage */
        start local 2 // io.vertx.core.eventbus.impl.clustered.ClusteredMessage clusteredMessage
         1: .line 210
            aload 2 /* clusteredMessage */
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredMessage.isFromWire:()Z
            ifeq 2
            iconst_0
            goto 3
      StackMap locals: io.vertx.core.eventbus.impl.clustered.ClusteredMessage
      StackMap stack:
         2: iconst_1
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 2 // io.vertx.core.eventbus.impl.clustered.ClusteredMessage clusteredMessage
        end local 1 // io.vertx.core.eventbus.impl.MessageImpl msg
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    4     0              this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    4     1               msg  Lio/vertx/core/eventbus/impl/MessageImpl;
            1    4     2  clusteredMessage  Lio/vertx/core/eventbus/impl/clustered/ClusteredMessage;
    MethodParameters:
      Name  Flags
      msg   

  private int getClusterPort();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
         0: .line 214
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.options:Lio/vertx/core/eventbus/EventBusOptions;
            invokevirtual io.vertx.core.eventbus.EventBusOptions.getPort:()I
            ireturn
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;

  private java.lang.String getClusterHost();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
         0: .line 219
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.options:Lio/vertx/core/eventbus/EventBusOptions;
            invokevirtual io.vertx.core.eventbus.EventBusOptions.getHost:()Ljava/lang/String;
            dup
            astore 1 /* host */
        start local 1 // java.lang.String host
         1: ifnull 3
         2: .line 220
            aload 1 /* host */
            areturn
         3: .line 222
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.clusterManager:Lio/vertx/core/spi/cluster/ClusterManager;
            invokeinterface io.vertx.core.spi.cluster.ClusterManager.clusterHost:()Ljava/lang/String;
            dup
            astore 1 /* host */
            ifnull 5
         4: .line 223
            aload 1 /* host */
            areturn
         5: .line 225
      StackMap locals:
      StackMap stack:
            invokestatic io.vertx.core.eventbus.AddressHelper.defaultAddress:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.String host
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            1    6     1  host  Ljava/lang/String;

  private int getClusterPublicPort(int);
    descriptor: (I)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=3, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // int actualPort
         0: .line 229
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.options:Lio/vertx/core/eventbus/EventBusOptions;
            invokevirtual io.vertx.core.eventbus.EventBusOptions.getClusterPublicPort:()I
            istore 2 /* publicPort */
        start local 2 // int publicPort
         1: .line 230
            iload 2 /* publicPort */
            ifle 2
            iload 2 /* publicPort */
            goto 3
      StackMap locals: int
      StackMap stack:
         2: iload 1 /* actualPort */
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 2 // int publicPort
        end local 1 // int actualPort
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    4     1  actualPort  I
            1    4     2  publicPort  I
    MethodParameters:
            Name  Flags
      actualPort  

  private java.lang.String getClusterPublicHost(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // java.lang.String host
         0: .line 235
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.options:Lio/vertx/core/eventbus/EventBusOptions;
            invokevirtual io.vertx.core.eventbus.EventBusOptions.getClusterPublicHost:()Ljava/lang/String;
            dup
            astore 2 /* publicHost */
        start local 2 // java.lang.String publicHost
         1: ifnull 3
         2: .line 236
            aload 2 /* publicHost */
            areturn
         3: .line 238
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.options:Lio/vertx/core/eventbus/EventBusOptions;
            invokevirtual io.vertx.core.eventbus.EventBusOptions.getHost:()Ljava/lang/String;
            dup
            astore 2 /* publicHost */
            ifnull 5
         4: .line 239
            aload 2 /* publicHost */
            areturn
         5: .line 241
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.clusterManager:Lio/vertx/core/spi/cluster/ClusterManager;
            invokeinterface io.vertx.core.spi.cluster.ClusterManager.clusterPublicHost:()Ljava/lang/String;
            dup
            astore 2 /* publicHost */
            ifnull 7
         6: .line 242
            aload 2 /* publicHost */
            areturn
         7: .line 244
      StackMap locals:
      StackMap stack:
            aload 1 /* host */
            areturn
        end local 2 // java.lang.String publicHost
        end local 1 // java.lang.String host
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    8     1        host  Ljava/lang/String;
            1    8     2  publicHost  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      host  

  private io.vertx.core.Handler<io.vertx.core.net.NetSocket> getServerHandler();
    descriptor: ()Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
         0: .line 248
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;)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/clustered/ClusteredEventBus.lambda$8(Lio/vertx/core/net/NetSocket;)V (7)
                  (Lio/vertx/core/net/NetSocket;)V
            areturn
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
    Signature: ()Lio/vertx/core/Handler<Lio/vertx/core/net/NetSocket;>;

  private <T> void sendToNode(io.vertx.core.eventbus.impl.OutboundDeliveryContext<T>, java.lang.String);
    descriptor: (Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        start local 2 // java.lang.String nodeId
         0: .line 282
            aload 2 /* nodeId */
            ifnull 3
            aload 2 /* nodeId */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeId:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 3
         1: .line 283
            aload 0 /* this */
            aload 1 /* sendContext */
            aload 2 /* nodeId */
            aload 1 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.message:Lio/vertx/core/eventbus/impl/MessageImpl;
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.sendRemote:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Ljava/lang/String;Lio/vertx/core/eventbus/impl/MessageImpl;)V
         2: .line 284
            goto 4
         3: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* sendContext */
            invokespecial io.vertx.core.eventbus.impl.EventBusImpl.sendOrPub:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
         4: .line 287
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String nodeId
        end local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    5     1  sendContext  Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;
            0    5     2       nodeId  Ljava/lang/String;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;Ljava/lang/String;)V
    MethodParameters:
             Name  Flags
      sendContext  
      nodeId       

  private <T> void sendToNodes(io.vertx.core.eventbus.impl.OutboundDeliveryContext<T>, java.lang.Iterable<java.lang.String>);
    descriptor: (Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Ljava/lang/Iterable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        start local 2 // java.lang.Iterable nodeIds
         0: .line 290
            iconst_0
            istore 3 /* sentRemote */
        start local 3 // boolean sentRemote
         1: .line 291
            aload 2 /* nodeIds */
            ifnull 8
         2: .line 292
            aload 2 /* nodeIds */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 7
      StackMap locals: io.vertx.core.eventbus.impl.clustered.ClusteredEventBus io.vertx.core.eventbus.impl.OutboundDeliveryContext java.lang.Iterable int top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* nid */
        start local 4 // java.lang.String nid
         4: .line 293
            iload 3 /* sentRemote */
            ifne 6
         5: .line 294
            iconst_1
            istore 3 /* sentRemote */
         6: .line 296
      StackMap locals: io.vertx.core.eventbus.impl.clustered.ClusteredEventBus io.vertx.core.eventbus.impl.OutboundDeliveryContext java.lang.Iterable int java.lang.String java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            aload 1 /* sendContext */
            aload 4 /* nid */
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.sendToNode:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Ljava/lang/String;)V
        end local 4 // java.lang.String nid
         7: .line 292
      StackMap locals: io.vertx.core.eventbus.impl.clustered.ClusteredEventBus io.vertx.core.eventbus.impl.OutboundDeliveryContext java.lang.Iterable int top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         8: .line 299
      StackMap locals: io.vertx.core.eventbus.impl.clustered.ClusteredEventBus io.vertx.core.eventbus.impl.OutboundDeliveryContext java.lang.Iterable int
      StackMap stack:
            iload 3 /* sentRemote */
            ifne 10
         9: .line 300
            aload 0 /* this */
            aload 1 /* sendContext */
            invokespecial io.vertx.core.eventbus.impl.EventBusImpl.sendOrPub:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
        10: .line 302
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean sentRemote
        end local 2 // java.lang.Iterable nodeIds
        end local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0         this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0   11     1  sendContext  Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;
            0   11     2      nodeIds  Ljava/lang/Iterable<Ljava/lang/String;>;
            1   11     3   sentRemote  Z
            4    7     4          nid  Ljava/lang/String;
    Signature: <T:Ljava/lang/Object;>(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;Ljava/lang/Iterable<Ljava/lang/String;>;)V
    MethodParameters:
             Name  Flags
      sendContext  
      nodeIds      

  private <T> void clusteredSendReply(java.lang.String, io.vertx.core.eventbus.impl.OutboundDeliveryContext<T>);
    descriptor: (Ljava/lang/String;Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // java.lang.String replyDest
        start local 2 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
         0: .line 305
            aload 2 /* sendContext */
            getfield io.vertx.core.eventbus.impl.OutboundDeliveryContext.message:Lio/vertx/core/eventbus/impl/MessageImpl;
            astore 3 /* message */
        start local 3 // io.vertx.core.eventbus.impl.MessageImpl message
         1: .line 306
            aload 1 /* replyDest */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeId:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
         2: .line 307
            aload 0 /* this */
            aload 2 /* sendContext */
            aload 1 /* replyDest */
            aload 3 /* message */
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.sendRemote:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Ljava/lang/String;Lio/vertx/core/eventbus/impl/MessageImpl;)V
         3: .line 308
            goto 5
         4: .line 309
      StackMap locals: io.vertx.core.eventbus.impl.MessageImpl
      StackMap stack:
            aload 0 /* this */
            aload 2 /* sendContext */
            invokespecial io.vertx.core.eventbus.impl.EventBusImpl.sendOrPub:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
         5: .line 311
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.vertx.core.eventbus.impl.MessageImpl message
        end local 2 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        end local 1 // java.lang.String replyDest
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    6     1    replyDest  Ljava/lang/String;
            0    6     2  sendContext  Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;
            1    6     3      message  Lio/vertx/core/eventbus/impl/MessageImpl;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<TT;>;)V
    MethodParameters:
             Name  Flags
      replyDest    
      sendContext  

  private void sendRemote(io.vertx.core.eventbus.impl.OutboundDeliveryContext<?>, java.lang.String, io.vertx.core.eventbus.impl.MessageImpl);
    descriptor: (Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Ljava/lang/String;Lio/vertx/core/eventbus/impl/MessageImpl;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        start local 2 // java.lang.String remoteNodeId
        start local 3 // io.vertx.core.eventbus.impl.MessageImpl message
         0: .line 319
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.connections:Ljava/util/concurrent/ConcurrentMap;
            aload 2 /* remoteNodeId */
            invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.core.eventbus.impl.clustered.ConnectionHolder
            astore 4 /* holder */
        start local 4 // io.vertx.core.eventbus.impl.clustered.ConnectionHolder holder
         1: .line 320
            aload 4 /* holder */
            ifnonnull 8
         2: .line 323
            new io.vertx.core.eventbus.impl.clustered.ConnectionHolder
            dup
            aload 0 /* this */
            aload 2 /* remoteNodeId */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.options:Lio/vertx/core/eventbus/EventBusOptions;
            invokespecial io.vertx.core.eventbus.impl.clustered.ConnectionHolder.<init>:(Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;Ljava/lang/String;Lio/vertx/core/eventbus/EventBusOptions;)V
            astore 4 /* holder */
         3: .line 324
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.connections:Ljava/util/concurrent/ConcurrentMap;
            aload 2 /* remoteNodeId */
            aload 4 /* holder */
            invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.core.eventbus.impl.clustered.ConnectionHolder
            astore 5 /* prevHolder */
        start local 5 // io.vertx.core.eventbus.impl.clustered.ConnectionHolder prevHolder
         4: .line 325
            aload 5 /* prevHolder */
            ifnull 7
         5: .line 327
            aload 5 /* prevHolder */
            astore 4 /* holder */
         6: .line 328
            goto 8
         7: .line 329
      StackMap locals: io.vertx.core.eventbus.impl.clustered.ConnectionHolder io.vertx.core.eventbus.impl.clustered.ConnectionHolder
      StackMap stack:
            aload 4 /* holder */
            invokevirtual io.vertx.core.eventbus.impl.clustered.ConnectionHolder.connect:()V
        end local 5 // io.vertx.core.eventbus.impl.clustered.ConnectionHolder prevHolder
         8: .line 332
      StackMap locals:
      StackMap stack:
            aload 4 /* holder */
            aload 1 /* sendContext */
            invokevirtual io.vertx.core.eventbus.impl.clustered.ConnectionHolder.writeMessage:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;)V
         9: .line 333
            return
        end local 4 // io.vertx.core.eventbus.impl.clustered.ConnectionHolder holder
        end local 3 // io.vertx.core.eventbus.impl.MessageImpl message
        end local 2 // java.lang.String remoteNodeId
        end local 1 // io.vertx.core.eventbus.impl.OutboundDeliveryContext sendContext
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0   10     1   sendContext  Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<*>;
            0   10     2  remoteNodeId  Ljava/lang/String;
            0   10     3       message  Lio/vertx/core/eventbus/impl/MessageImpl;
            1   10     4        holder  Lio/vertx/core/eventbus/impl/clustered/ConnectionHolder;
            4    8     5    prevHolder  Lio/vertx/core/eventbus/impl/clustered/ConnectionHolder;
    Signature: (Lio/vertx/core/eventbus/impl/OutboundDeliveryContext<*>;Ljava/lang/String;Lio/vertx/core/eventbus/impl/MessageImpl;)V
    MethodParameters:
              Name  Flags
      sendContext   
      remoteNodeId  
      message       

  java.util.concurrent.ConcurrentMap<java.lang.String, io.vertx.core.eventbus.impl.clustered.ConnectionHolder> connections();
    descriptor: ()Ljava/util/concurrent/ConcurrentMap;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
         0: .line 336
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.connections:Ljava/util/concurrent/ConcurrentMap;
            areturn
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
    Signature: ()Ljava/util/concurrent/ConcurrentMap<Ljava/lang/String;Lio/vertx/core/eventbus/impl/clustered/ConnectionHolder;>;

  io.vertx.core.impl.VertxInternal vertx();
    descriptor: ()Lio/vertx/core/impl/VertxInternal;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
         0: .line 340
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.vertx:Lio/vertx/core/impl/VertxInternal;
            areturn
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;

  io.vertx.core.eventbus.EventBusOptions options();
    descriptor: ()Lio/vertx/core/eventbus/EventBusOptions;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
         0: .line 344
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.options:Lio/vertx/core/eventbus/EventBusOptions;
            areturn
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;

  static io.vertx.core.eventbus.impl.CodecManager access$0(io.vertx.core.eventbus.impl.clustered.ClusteredEventBus);
    descriptor: (Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;)Lio/vertx/core/eventbus/impl/CodecManager;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 47
            aload 0
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.codecManager:Lio/vertx/core/eventbus/impl/CodecManager;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static io.vertx.core.spi.metrics.EventBusMetrics access$1(io.vertx.core.eventbus.impl.clustered.ClusteredEventBus);
    descriptor: (Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;)Lio/vertx/core/spi/metrics/EventBusMetrics;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 47
            aload 0
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.metrics:Lio/vertx/core/spi/metrics/EventBusMetrics;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static io.vertx.core.eventbus.ReplyException access$2(io.vertx.core.eventbus.impl.clustered.ClusteredEventBus, io.vertx.core.eventbus.impl.MessageImpl);
    descriptor: (Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;Lio/vertx/core/eventbus/impl/MessageImpl;)Lio/vertx/core/eventbus/ReplyException;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.deliverMessageLocally:(Lio/vertx/core/eventbus/impl/MessageImpl;)Lio/vertx/core/eventbus/ReplyException;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private io.vertx.core.Future lambda$0(java.lang.String, io.vertx.core.net.NetServer);
    descriptor: (Ljava/lang/String;Lio/vertx/core/net/NetServer;)Lio/vertx/core/Future;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 2 // io.vertx.core.net.NetServer v
         0: .line 83
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.server:Lio/vertx/core/net/NetServer;
            invokeinterface io.vertx.core.net.NetServer.actualPort:()I
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.getClusterPublicPort:(I)I
            istore 3 /* publicPort */
        start local 3 // int publicPort
         1: .line 84
            aload 0 /* this */
            aload 1
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.getClusterPublicHost:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* publicHost */
        start local 4 // java.lang.String publicHost
         2: .line 85
            aload 0 /* this */
            new io.vertx.core.spi.cluster.NodeInfo
            dup
            aload 4 /* publicHost */
            iload 3 /* publicPort */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.options:Lio/vertx/core/eventbus/EventBusOptions;
            invokevirtual io.vertx.core.eventbus.EventBusOptions.getClusterNodeMetadata:()Lio/vertx/core/json/JsonObject;
            invokespecial io.vertx.core.spi.cluster.NodeInfo.<init>:(Ljava/lang/String;ILio/vertx/core/json/JsonObject;)V
            putfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeInfo:Lio/vertx/core/spi/cluster/NodeInfo;
         3: .line 86
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.clusterManager:Lio/vertx/core/spi/cluster/ClusterManager;
            invokeinterface io.vertx.core.spi.cluster.ClusterManager.getNodeId:()Ljava/lang/String;
            putfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeId:Ljava/lang/String;
         4: .line 87
            invokestatic io.vertx.core.Promise.promise:()Lio/vertx/core/Promise;
            astore 5 /* setPromise */
        start local 5 // io.vertx.core.Promise setPromise
         5: .line 88
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.clusterManager:Lio/vertx/core/spi/cluster/ClusterManager;
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeInfo:Lio/vertx/core/spi/cluster/NodeInfo;
            aload 5 /* setPromise */
            invokeinterface io.vertx.core.spi.cluster.ClusterManager.setNodeInfo:(Lio/vertx/core/spi/cluster/NodeInfo;Lio/vertx/core/Promise;)V
         6: .line 89
            aload 5 /* setPromise */
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            areturn
        end local 5 // io.vertx.core.Promise setPromise
        end local 4 // java.lang.String publicHost
        end local 3 // int publicPort
        end local 2 // io.vertx.core.net.NetServer v
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    7     2           v  Lio/vertx/core/net/NetServer;
            1    7     3  publicPort  I
            2    7     4  publicHost  Ljava/lang/String;
            5    7     5  setPromise  Lio/vertx/core/Promise<Ljava/lang/Void;>;

  private void lambda$1(java.lang.Void);
    descriptor: (Ljava/lang/Void;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // java.lang.Void v
         0: .line 91
            aload 0 /* this */
            iconst_1
            putfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.started:Z
         1: .line 92
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.nodeSelector:Lio/vertx/core/spi/cluster/NodeSelector;
            invokeinterface io.vertx.core.spi.cluster.NodeSelector.eventBusStarted:()V
         2: .line 93
            return
        end local 1 // java.lang.Void v
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    3     1     v  Ljava/lang/Void;

  private void lambda$2(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=3, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 2 // io.vertx.core.AsyncResult ar
         0: .line 101
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.server:Lio/vertx/core/net/NetServer;
            ifnull 3
         1: .line 102
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.server:Lio/vertx/core/net/NetServer;
            aload 0 /* this */
            aload 1
            invokedynamic handle(Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;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/clustered/ClusteredEventBus.lambda$3(Lio/vertx/core/Promise;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokeinterface io.vertx.core.net.NetServer.close:(Lio/vertx/core/Handler;)V
         2: .line 112
            goto 4
         3: .line 113
      StackMap locals:
      StackMap stack:
            aload 1
            aload 2 /* ar */
            invokeinterface io.vertx.core.Promise.handle:(Lio/vertx/core/AsyncResult;)V
         4: .line 115
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.AsyncResult ar
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    5     2    ar  Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;

  private void lambda$5(io.vertx.core.eventbus.impl.OutboundDeliveryContext, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 2 // io.vertx.core.AsyncResult ar
         0: .line 174
            aload 2 /* ar */
            invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
            ifeq 3
         1: .line 175
            aload 0 /* this */
            aload 1
            aload 2 /* ar */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.sendToNode:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Ljava/lang/String;)V
         2: .line 176
            goto 4
         3: .line 177
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1
            aload 2 /* ar */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.sendOrPublishFailed:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Ljava/lang/Throwable;)V
         4: .line 179
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.AsyncResult ar
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    5     2    ar  Lio/vertx/core/AsyncResult<Ljava/lang/String;>;

  private void lambda$7(io.vertx.core.eventbus.impl.OutboundDeliveryContext, io.vertx.core.AsyncResult);
    descriptor: (Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 2 // io.vertx.core.AsyncResult ar
         0: .line 184
            aload 2 /* ar */
            invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
            ifeq 3
         1: .line 185
            aload 0 /* this */
            aload 1
            aload 2 /* ar */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast java.lang.Iterable
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.sendToNodes:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Ljava/lang/Iterable;)V
         2: .line 186
            goto 4
         3: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1
            aload 2 /* ar */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokevirtual io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.sendOrPublishFailed:(Lio/vertx/core/eventbus/impl/OutboundDeliveryContext;Ljava/lang/Throwable;)V
         4: .line 189
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.vertx.core.AsyncResult ar
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    5     2    ar  Lio/vertx/core/AsyncResult<Ljava/lang/Iterable<Ljava/lang/String;>;>;

  private void lambda$8(io.vertx.core.net.NetSocket);
    descriptor: (Lio/vertx/core/net/NetSocket;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 1 // io.vertx.core.net.NetSocket socket
         0: .line 249
            iconst_4
            invokestatic io.vertx.core.parsetools.RecordParser.newFixed:(I)Lio/vertx/core/parsetools/RecordParser;
            astore 2 /* parser */
        start local 2 // io.vertx.core.parsetools.RecordParser parser
         1: .line 250
            new io.vertx.core.eventbus.impl.clustered.ClusteredEventBus$1
            dup
            aload 0 /* this */
            aload 2 /* parser */
            aload 1 /* socket */
            invokespecial io.vertx.core.eventbus.impl.clustered.ClusteredEventBus$1.<init>:(Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;Lio/vertx/core/parsetools/RecordParser;Lio/vertx/core/net/NetSocket;)V
            astore 3 /* handler */
        start local 3 // io.vertx.core.Handler handler
         2: .line 276
            aload 2 /* parser */
            aload 3 /* handler */
            invokeinterface io.vertx.core.parsetools.RecordParser.setOutput:(Lio/vertx/core/Handler;)V
         3: .line 277
            aload 1 /* socket */
            aload 2 /* parser */
            invokeinterface io.vertx.core.net.NetSocket.handler:(Lio/vertx/core/Handler;)Lio/vertx/core/net/NetSocket;
            pop
        end local 3 // io.vertx.core.Handler handler
        end local 2 // io.vertx.core.parsetools.RecordParser parser
         4: .line 278
            return
        end local 1 // io.vertx.core.net.NetSocket socket
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    5     1   socket  Lio/vertx/core/net/NetSocket;
            1    4     2   parser  Lio/vertx/core/parsetools/RecordParser;
            2    4     3  handler  Lio/vertx/core/Handler<Lio/vertx/core/buffer/Buffer;>;

  private void lambda$3(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=3, locals=5, args_size=3
        start local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
        start local 2 // io.vertx.core.AsyncResult serverClose
         0: .line 103
            aload 2 /* serverClose */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 2
         1: .line 104
            getstatic io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Failed to close server"
            aload 2 /* serverClose */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokeinterface io.vertx.core.impl.logging.Logger.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         2: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.core.eventbus.impl.clustered.ClusteredEventBus.connections:Ljava/util/concurrent/ConcurrentMap;
            invokeinterface java.util.concurrent.ConcurrentMap.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 5
      StackMap locals: io.vertx.core.eventbus.impl.clustered.ClusteredEventBus io.vertx.core.Promise io.vertx.core.AsyncResult top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.vertx.core.eventbus.impl.clustered.ConnectionHolder
            astore 3 /* holder */
        start local 3 // io.vertx.core.eventbus.impl.clustered.ConnectionHolder holder
         4: .line 108
            aload 3 /* holder */
            invokevirtual io.vertx.core.eventbus.impl.clustered.ConnectionHolder.close:()V
        end local 3 // io.vertx.core.eventbus.impl.clustered.ConnectionHolder holder
         5: .line 107
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 110
            aload 1
            aload 2 /* serverClose */
            invokeinterface io.vertx.core.Promise.handle:(Lio/vertx/core/AsyncResult;)V
         7: .line 111
            return
        end local 2 // io.vertx.core.AsyncResult serverClose
        end local 0 // io.vertx.core.eventbus.impl.clustered.ClusteredEventBus this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lio/vertx/core/eventbus/impl/clustered/ClusteredEventBus;
            0    8     2  serverClose  Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;
            4    5     3       holder  Lio/vertx/core/eventbus/impl/clustered/ConnectionHolder;
}
SourceFile: "ClusteredEventBus.java"
NestMembers:
  io.vertx.core.eventbus.impl.clustered.ClusteredEventBus$1
InnerClasses:
  io.vertx.core.eventbus.impl.clustered.ClusteredEventBus$1
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles