public class io.vertx.mqtt.impl.MqttClientImpl implements io.vertx.mqtt.MqttClient
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.mqtt.impl.MqttClientImpl
  super_class: java.lang.Object
{
  private static final java.util.regex.Pattern validTopicNamePattern;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.regex.Pattern validTopicFilterPattern;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  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 int MAX_MESSAGE_ID;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 65535

  private static final int MAX_TOPIC_LEN;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 65535

  private static final int MIN_TOPIC_LEN;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final java.lang.String PROTOCOL_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "MQTT"

  private static final int PROTOCOL_VERSION;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private static final int DEFAULT_IDLE_TIMEOUT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

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

  private final io.vertx.mqtt.MqttClientOptions options;
    descriptor: Lio/vertx/mqtt/MqttClientOptions;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private io.vertx.core.net.impl.NetSocketInternal connection;
    descriptor: Lio/vertx/core/net/impl/NetSocketInternal;
    flags: (0x0002) ACC_PRIVATE

  private io.vertx.core.impl.ContextInternal ctx;
    descriptor: Lio/vertx/core/impl/ContextInternal;
    flags: (0x0002) ACC_PRIVATE

  private io.vertx.core.Handler<java.lang.Integer> publishCompletionHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Ljava/lang/Integer;>;

  private io.vertx.core.Handler<java.lang.Integer> publishCompletionExpirationHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Ljava/lang/Integer;>;

  private io.vertx.core.Handler<java.lang.Integer> publishCompletionPhantomHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Ljava/lang/Integer;>;

  private io.vertx.core.Handler<java.lang.Integer> unsubscribeCompletionHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Ljava/lang/Integer;>;

  private io.vertx.core.Handler<io.vertx.mqtt.messages.MqttPublishMessage> publishHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttPublishMessage;>;

  private io.vertx.core.Handler<io.vertx.mqtt.messages.MqttSubAckMessage> subscribeCompletionHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttSubAckMessage;>;

  private io.vertx.core.Promise<io.vertx.mqtt.messages.MqttConnAckMessage> connectPromise;
    descriptor: Lio/vertx/core/Promise;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Promise<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;

  private io.vertx.core.Promise<java.lang.Void> disconnectPromise;
    descriptor: Lio/vertx/core/Promise;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Promise<Ljava/lang/Void;>;

  private io.vertx.core.Handler<java.lang.Void> pingrespHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Ljava/lang/Void;>;

  private io.vertx.core.Handler<java.lang.Throwable> exceptionHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Ljava/lang/Throwable;>;

  private io.vertx.core.Handler<java.lang.Void> closeHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lio/vertx/core/Handler<Ljava/lang/Void;>;

  private java.util.HashMap<java.lang.Integer, io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket> qos1outbound;
    descriptor: Ljava/util/HashMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/HashMap<Ljava/lang/Integer;Lio/vertx/mqtt/impl/MqttClientImpl$ExpiringPacket;>;

  private java.util.HashMap<java.lang.Integer, io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket> qos2outbound;
    descriptor: Ljava/util/HashMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/HashMap<Ljava/lang/Integer;Lio/vertx/mqtt/impl/MqttClientImpl$ExpiringPacket;>;

  private java.util.HashMap<java.lang.Integer, io.vertx.mqtt.messages.MqttMessage> qos2inbound;
    descriptor: Ljava/util/HashMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/HashMap<Ljava/lang/Integer;Lio/vertx/mqtt/messages/MqttMessage;>;

  private int messageIdCounter;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

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

  private java.util.Deque<io.vertx.mqtt.impl.MqttClientImpl$Ping> pings;
    descriptor: Ljava/util/Deque;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Deque<Lio/vertx/mqtt/impl/MqttClientImpl$Ping;>;

  private int countInflightQueue;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

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

  private io.vertx.mqtt.impl.MqttClientImpl$Status status;
    descriptor: Lio/vertx/mqtt/impl/MqttClientImpl$Status;
    flags: (0x0002) ACC_PRIVATE

  private static volatile int[] $SWITCH_TABLE$io$vertx$mqtt$impl$MqttClientImpl$Status;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  private static volatile int[] $SWITCH_TABLE$io$netty$handler$codec$mqtt$MqttQoS;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  private static volatile int[] $SWITCH_TABLE$io$netty$handler$codec$mqtt$MqttMessageType;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 86
            ldc "^[^#+\\u0000]+$"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic io.vertx.mqtt.impl.MqttClientImpl.validTopicNamePattern:Ljava/util/regex/Pattern;
         1: .line 87
            ldc "^(#|((\\+(?![^/]))?([^#+]*(/\\+(?![^/]))?)*(/#)?))$"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic io.vertx.mqtt.impl.MqttClientImpl.validTopicFilterPattern:Ljava/util/regex/Pattern;
         2: .line 88
            ldc Lio/vertx/mqtt/impl/MqttClientImpl;
            invokestatic io.vertx.core.impl.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/impl/logging/Logger;
            putstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
         3: .line 95
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(io.vertx.core.Vertx, io.vertx.mqtt.MqttClientOptions);
    descriptor: (Lio/vertx/core/Vertx;Lio/vertx/mqtt/MqttClientOptions;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.Vertx vertx
        start local 2 // io.vertx.mqtt.MqttClientOptions options
         0: .line 154
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 126
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield io.vertx.mqtt.impl.MqttClientImpl.qos1outbound:Ljava/util/HashMap;
         2: .line 130
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield io.vertx.mqtt.impl.MqttClientImpl.qos2outbound:Ljava/util/HashMap;
         3: .line 133
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield io.vertx.mqtt.impl.MqttClientImpl.qos2inbound:Ljava/util/HashMap;
         4: .line 140
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield io.vertx.mqtt.impl.MqttClientImpl.pings:Ljava/util/Deque;
         5: .line 146
            aload 0 /* this */
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            putfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
         6: .line 157
            new io.vertx.core.net.NetClientOptions
            dup
            aload 2 /* options */
            invokespecial io.vertx.core.net.NetClientOptions.<init>:(Lio/vertx/core/net/NetClientOptions;)V
            astore 3 /* netClientOptions */
        start local 3 // io.vertx.core.net.NetClientOptions netClientOptions
         7: .line 158
            aload 3 /* netClientOptions */
            iconst_0
            invokevirtual io.vertx.core.net.NetClientOptions.setIdleTimeout:(I)Lio/vertx/core/net/NetClientOptions;
            pop
         8: .line 160
            aload 0 /* this */
            aload 1 /* vertx */
            checkcast io.vertx.core.impl.VertxInternal
            putfield io.vertx.mqtt.impl.MqttClientImpl.vertx:Lio/vertx/core/impl/VertxInternal;
         9: .line 161
            aload 0 /* this */
            new io.vertx.mqtt.MqttClientOptions
            dup
            aload 2 /* options */
            invokespecial io.vertx.mqtt.MqttClientOptions.<init>:(Lio/vertx/mqtt/MqttClientOptions;)V
            putfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
        10: .line 162
            aload 0 /* this */
            aload 2 /* options */
            invokevirtual io.vertx.mqtt.MqttClientOptions.getKeepAliveInterval:()I
            sipush 1000
            imul
            iconst_3
            imul
            iconst_2
            idiv
            i2l
            putfield io.vertx.mqtt.impl.MqttClientImpl.keepAliveTimeout:J
        11: .line 163
            return
        end local 3 // io.vertx.core.net.NetClientOptions netClientOptions
        end local 2 // io.vertx.mqtt.MqttClientOptions options
        end local 1 // io.vertx.core.Vertx vertx
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0              this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   12     1             vertx  Lio/vertx/core/Vertx;
            0   12     2           options  Lio/vertx/mqtt/MqttClientOptions;
            7   12     3  netClientOptions  Lio/vertx/core/net/NetClientOptions;
    MethodParameters:
         Name  Flags
      vertx    
      options  

  int getInFlightMessagesCount();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 166
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 167
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
            aload 1
            monitorexit
         2: ireturn
         3: .line 166
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public io.vertx.core.Future<io.vertx.mqtt.messages.MqttConnAckMessage> connect(int, java.lang.String);
    descriptor: (ILjava/lang/String;)Lio/vertx/core/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int port
        start local 2 // java.lang.String host
         0: .line 174
            aload 0 /* this */
            iload 1 /* port */
            aload 2 /* host */
            aconst_null
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.doConnect:(ILjava/lang/String;Ljava/lang/String;)Lio/vertx/core/Future;
            areturn
        end local 2 // java.lang.String host
        end local 1 // int port
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    1     1  port  I
            0    1     2  host  Ljava/lang/String;
    Signature: (ILjava/lang/String;)Lio/vertx/core/Future<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
    MethodParameters:
      Name  Flags
      port  
      host  

  public io.vertx.mqtt.MqttClient connect(int, java.lang.String, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.mqtt.messages.MqttConnAckMessage>>);
    descriptor: (ILjava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int port
        start local 2 // java.lang.String host
        start local 3 // io.vertx.core.Handler connectHandler
         0: .line 183
            aload 0 /* this */
            iload 1 /* port */
            aload 2 /* host */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.connect:(ILjava/lang/String;)Lio/vertx/core/Future;
            astore 4 /* fut */
        start local 4 // io.vertx.core.Future fut
         1: .line 184
            aload 3 /* connectHandler */
            ifnull 3
         2: .line 185
            aload 4 /* fut */
            aload 3 /* connectHandler */
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         3: .line 187
      StackMap locals: io.vertx.core.Future
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 4 // io.vertx.core.Future fut
        end local 3 // io.vertx.core.Handler connectHandler
        end local 2 // java.lang.String host
        end local 1 // int port
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    4     1            port  I
            0    4     2            host  Ljava/lang/String;
            0    4     3  connectHandler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;>;
            1    4     4             fut  Lio/vertx/core/Future<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
    Signature: (ILjava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                Name  Flags
      port            
      host            
      connectHandler  

  public io.vertx.core.Future<io.vertx.mqtt.messages.MqttConnAckMessage> connect(int, java.lang.String, java.lang.String);
    descriptor: (ILjava/lang/String;Ljava/lang/String;)Lio/vertx/core/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int port
        start local 2 // java.lang.String host
        start local 3 // java.lang.String serverName
         0: .line 193
            aload 0 /* this */
            iload 1 /* port */
            aload 2 /* host */
            aload 3 /* serverName */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.connect:(ILjava/lang/String;Ljava/lang/String;)Lio/vertx/core/Future;
            areturn
        end local 3 // java.lang.String serverName
        end local 2 // java.lang.String host
        end local 1 // int port
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    1     1        port  I
            0    1     2        host  Ljava/lang/String;
            0    1     3  serverName  Ljava/lang/String;
    Signature: (ILjava/lang/String;Ljava/lang/String;)Lio/vertx/core/Future<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
    MethodParameters:
            Name  Flags
      port        
      host        
      serverName  

  public io.vertx.mqtt.MqttClient connect(int, java.lang.String, java.lang.String, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.mqtt.messages.MqttConnAckMessage>>);
    descriptor: (ILjava/lang/String;Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int port
        start local 2 // java.lang.String host
        start local 3 // java.lang.String serverName
        start local 4 // io.vertx.core.Handler connectHandler
         0: .line 202
            aload 0 /* this */
            iload 1 /* port */
            aload 2 /* host */
            aload 3 /* serverName */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.doConnect:(ILjava/lang/String;Ljava/lang/String;)Lio/vertx/core/Future;
            astore 5 /* fut */
        start local 5 // io.vertx.core.Future fut
         1: .line 203
            aload 4 /* connectHandler */
            ifnull 3
         2: .line 204
            aload 5 /* fut */
            aload 4 /* connectHandler */
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         3: .line 206
      StackMap locals: io.vertx.core.Future
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 5 // io.vertx.core.Future fut
        end local 4 // io.vertx.core.Handler connectHandler
        end local 3 // java.lang.String serverName
        end local 2 // java.lang.String host
        end local 1 // int port
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    4     1            port  I
            0    4     2            host  Ljava/lang/String;
            0    4     3      serverName  Ljava/lang/String;
            0    4     4  connectHandler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;>;
            1    4     5             fut  Lio/vertx/core/Future<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
    Signature: (ILjava/lang/String;Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                Name  Flags
      port            
      host            
      serverName      
      connectHandler  

  private io.vertx.core.Future<io.vertx.mqtt.messages.MqttConnAckMessage> doConnect(int, java.lang.String, java.lang.String);
    descriptor: (ILjava/lang/String;Ljava/lang/String;)Lio/vertx/core/Future;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=9, args_size=4
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int port
        start local 2 // java.lang.String host
        start local 3 // java.lang.String serverName
         0: .line 211
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            invokeinterface io.vertx.core.impl.VertxInternal.getOrCreateContext:()Lio/vertx/core/impl/ContextInternal;
            astore 4 /* ctx */
        start local 4 // io.vertx.core.impl.ContextInternal ctx
         1: .line 212
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            new io.vertx.core.impl.CloseFuture
            dup
            invokespecial io.vertx.core.impl.CloseFuture.<init>:()V
            invokeinterface io.vertx.core.impl.VertxInternal.createNetClient:(Lio/vertx/core/net/NetClientOptions;Lio/vertx/core/impl/CloseFuture;)Lio/vertx/core/net/NetClient;
            astore 5 /* client */
        start local 5 // io.vertx.core.net.NetClient client
         2: .line 213
            aload 4 /* ctx */
            invokeinterface io.vertx.core.impl.ContextInternal.promise:()Lio/vertx/core/impl/future/PromiseInternal;
            astore 6 /* connectPromise */
        start local 6 // io.vertx.core.impl.future.PromiseInternal connectPromise
         3: .line 214
            aload 4 /* ctx */
            invokeinterface io.vertx.core.impl.ContextInternal.promise:()Lio/vertx/core/impl/future/PromiseInternal;
            astore 7 /* disconnectPromise */
        start local 7 // io.vertx.core.impl.future.PromiseInternal disconnectPromise
         4: .line 216
            aload 0 /* this */
            dup
            astore 8
            monitorenter
         5: .line 217
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            if_acmpeq 8
         6: .line 218
            aload 4 /* ctx */
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Client "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl$Status.name:()Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            invokeinterface io.vertx.core.impl.ContextInternal.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
            aload 8
            monitorexit
         7: areturn
         8: .line 220
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int java.lang.String java.lang.String io.vertx.core.impl.ContextInternal io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack:
            aload 0 /* this */
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CONNECTING:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            putfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
         9: .line 221
            aload 0 /* this */
            aload 4 /* ctx */
            putfield io.vertx.mqtt.impl.MqttClientImpl.ctx:Lio/vertx/core/impl/ContextInternal;
        10: .line 222
            aload 0 /* this */
            aload 6 /* connectPromise */
            putfield io.vertx.mqtt.impl.MqttClientImpl.connectPromise:Lio/vertx/core/Promise;
        11: .line 223
            aload 0 /* this */
            aload 7 /* disconnectPromise */
            putfield io.vertx.mqtt.impl.MqttClientImpl.disconnectPromise:Lio/vertx/core/Promise;
        12: .line 224
            aload 0 /* this */
            aload 5 /* client */
            putfield io.vertx.mqtt.impl.MqttClientImpl.client:Lio/vertx/core/net/NetClient;
        13: .line 216
            aload 8
            monitorexit
        14: goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: aload 8
            monitorexit
        16: athrow
        17: .line 227
      StackMap locals:
      StackMap stack:
            aload 4 /* ctx */
            aload 0 /* this */
            aload 2 /* host */
            iload 1 /* port */
            aload 5 /* client */
            aload 3 /* serverName */
            aload 6 /* connectPromise */
            aload 7 /* disconnectPromise */
            invokedynamic handle(Lio/vertx/mqtt/impl/MqttClientImpl;Ljava/lang/String;ILio/vertx/core/net/NetClient;Ljava/lang/String;Lio/vertx/core/impl/future/PromiseInternal;Lio/vertx/core/impl/future/PromiseInternal;)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/mqtt/impl/MqttClientImpl.lambda$0(Ljava/lang/String;ILio/vertx/core/net/NetClient;Ljava/lang/String;Lio/vertx/core/impl/future/PromiseInternal;Lio/vertx/core/impl/future/PromiseInternal;Ljava/lang/Void;)V (7)
                  (Ljava/lang/Void;)V
            invokeinterface io.vertx.core.impl.ContextInternal.runOnContext:(Lio/vertx/core/Handler;)V
        18: .line 325
            aload 6 /* connectPromise */
            invokeinterface io.vertx.core.impl.future.PromiseInternal.future:()Lio/vertx/core/Future;
            areturn
        end local 7 // io.vertx.core.impl.future.PromiseInternal disconnectPromise
        end local 6 // io.vertx.core.impl.future.PromiseInternal connectPromise
        end local 5 // io.vertx.core.net.NetClient client
        end local 4 // io.vertx.core.impl.ContextInternal ctx
        end local 3 // java.lang.String serverName
        end local 2 // java.lang.String host
        end local 1 // int port
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   19     0               this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   19     1               port  I
            0   19     2               host  Ljava/lang/String;
            0   19     3         serverName  Ljava/lang/String;
            1   19     4                ctx  Lio/vertx/core/impl/ContextInternal;
            2   19     5             client  Lio/vertx/core/net/NetClient;
            3   19     6     connectPromise  Lio/vertx/core/impl/future/PromiseInternal<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
            4   19     7  disconnectPromise  Lio/vertx/core/impl/future/PromiseInternal<Ljava/lang/Void;>;
      Exception table:
        from    to  target  type
           5     7      15  any
           8    14      15  any
          15    16      15  any
    Signature: (ILjava/lang/String;Ljava/lang/String;)Lio/vertx/core/Future<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
    MethodParameters:
            Name  Flags
      port        
      host        
      serverName  

  public io.vertx.core.Future<java.lang.Void> disconnect();
    descriptor: ()Lio/vertx/core/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 337
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         1: .line 338
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            astore 2 /* status */
        start local 2 // io.vertx.mqtt.impl.MqttClientImpl$Status status
         2: .line 339
            invokestatic io.vertx.mqtt.impl.MqttClientImpl.$SWITCH_TABLE$io$vertx$mqtt$impl$MqttClientImpl$Status:()[I
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl$Status.ordinal:()I
            iaload
            tableswitch { // 1 - 4
                    1: 3
                    2: 8
                    3: 5
                    4: 11
              default: 13
          }
         3: .line 341
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl top io.vertx.mqtt.impl.MqttClientImpl$Status top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            invokeinterface io.vertx.core.impl.VertxInternal.getOrCreateContext:()Lio/vertx/core/impl/ContextInternal;
            invokeinterface io.vertx.core.impl.ContextInternal.succeededFuture:()Lio/vertx/core/Future;
            aload 4
            monitorexit
         4: areturn
         5: .line 343
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSING:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            putfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
         6: .line 344
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.connection:Lio/vertx/core/net/impl/NetSocketInternal;
            astore 1 /* connection */
        start local 1 // io.vertx.core.net.impl.NetSocketInternal connection
         7: .line 345
            goto 14
        end local 1 // io.vertx.core.net.impl.NetSocketInternal connection
         8: .line 347
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSING:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            putfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
         9: .line 348
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.connection:Lio/vertx/core/net/impl/NetSocketInternal;
            astore 1 /* connection */
        start local 1 // io.vertx.core.net.impl.NetSocketInternal connection
        10: .line 349
            goto 14
        end local 1 // io.vertx.core.net.impl.NetSocketInternal connection
        11: .line 351
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 1 /* connection */
        start local 1 // io.vertx.core.net.impl.NetSocketInternal connection
        12: .line 352
            goto 14
        end local 1 // io.vertx.core.net.impl.NetSocketInternal connection
        13: .line 354
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        start local 1 // io.vertx.core.net.impl.NetSocketInternal connection
        14: .line 356
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.core.net.impl.NetSocketInternal io.vertx.mqtt.impl.MqttClientImpl$Status top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.disconnectPromise:Lio/vertx/core/Promise;
            invokeinterface io.vertx.core.Promise.future:()Lio/vertx/core/Future;
            astore 3 /* fut */
        start local 3 // io.vertx.core.Future fut
        15: .line 337
            aload 4
            monitorexit
        16: goto 19
        end local 3 // io.vertx.core.Future fut
        end local 2 // io.vertx.mqtt.impl.MqttClientImpl$Status status
        end local 1 // io.vertx.core.net.impl.NetSocketInternal connection
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl top top top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
        17: aload 4
            monitorexit
        18: athrow
        start local 1 // io.vertx.core.net.impl.NetSocketInternal connection
        start local 2 // io.vertx.mqtt.impl.MqttClientImpl$Status status
        start local 3 // io.vertx.core.Future fut
        19: .line 359
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.core.net.impl.NetSocketInternal io.vertx.mqtt.impl.MqttClientImpl$Status io.vertx.core.Future
      StackMap stack:
            aload 1 /* connection */
            ifnull 31
        20: .line 360
            aload 2 /* status */
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CONNECTED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            if_acmpne 30
        21: .line 361
            new io.netty.handler.codec.mqtt.MqttFixedHeader
            dup
        22: .line 362
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.DISCONNECT:Lio/netty/handler/codec/mqtt/MqttMessageType;
        23: .line 363
            iconst_0
        24: .line 364
            getstatic io.netty.handler.codec.mqtt.MqttQoS.AT_MOST_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
        25: .line 365
            iconst_0
        26: .line 366
            iconst_0
        27: .line 361
            invokespecial io.netty.handler.codec.mqtt.MqttFixedHeader.<init>:(Lio/netty/handler/codec/mqtt/MqttMessageType;ZLio/netty/handler/codec/mqtt/MqttQoS;ZI)V
            astore 4 /* fixedHeader */
        start local 4 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        28: .line 368
            aload 4 /* fixedHeader */
            aconst_null
            aconst_null
            invokestatic io.netty.handler.codec.mqtt.MqttMessageFactory.newMessage:(Lio/netty/handler/codec/mqtt/MqttFixedHeader;Ljava/lang/Object;Ljava/lang/Object;)Lio/netty/handler/codec/mqtt/MqttMessage;
            astore 5 /* disconnect */
        start local 5 // io.netty.handler.codec.mqtt.MqttMessage disconnect
        29: .line 369
            aload 1 /* connection */
            aload 5 /* disconnect */
            invokeinterface io.vertx.core.net.impl.NetSocketInternal.writeMessage:(Ljava/lang/Object;)Lio/vertx/core/Future;
            pop
        end local 5 // io.netty.handler.codec.mqtt.MqttMessage disconnect
        end local 4 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        30: .line 371
      StackMap locals:
      StackMap stack:
            aload 1 /* connection */
            invokeinterface io.vertx.core.net.impl.NetSocketInternal.close:()Lio/vertx/core/Future;
            pop
        31: .line 374
      StackMap locals:
      StackMap stack:
            aload 3 /* fut */
            areturn
        end local 3 // io.vertx.core.Future fut
        end local 2 // io.vertx.mqtt.impl.MqttClientImpl$Status status
        end local 1 // io.vertx.core.net.impl.NetSocketInternal connection
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   32     0         this  Lio/vertx/mqtt/impl/MqttClientImpl;
            7    8     1   connection  Lio/vertx/core/net/impl/NetSocketInternal;
           10   11     1   connection  Lio/vertx/core/net/impl/NetSocketInternal;
           12   13     1   connection  Lio/vertx/core/net/impl/NetSocketInternal;
           14   17     1   connection  Lio/vertx/core/net/impl/NetSocketInternal;
           19   32     1   connection  Lio/vertx/core/net/impl/NetSocketInternal;
            2   17     2       status  Lio/vertx/mqtt/impl/MqttClientImpl$Status;
           19   32     2       status  Lio/vertx/mqtt/impl/MqttClientImpl$Status;
           15   17     3          fut  Lio/vertx/core/Future<Ljava/lang/Void;>;
           19   32     3          fut  Lio/vertx/core/Future<Ljava/lang/Void;>;
           28   30     4  fixedHeader  Lio/netty/handler/codec/mqtt/MqttFixedHeader;
           29   30     5   disconnect  Lio/netty/handler/codec/mqtt/MqttMessage;
      Exception table:
        from    to  target  type
           1     4      17  any
           5    16      17  any
          17    18      17  any
    Signature: ()Lio/vertx/core/Future<Ljava/lang/Void;>;

  public io.vertx.mqtt.MqttClient disconnect(io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Void>>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.Handler disconnectHandler
         0: .line 383
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.disconnect:()Lio/vertx/core/Future;
            astore 2 /* fut */
        start local 2 // io.vertx.core.Future fut
         1: .line 384
            aload 1 /* disconnectHandler */
            ifnull 3
         2: .line 385
            aload 2 /* fut */
            aload 1 /* disconnectHandler */
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         3: .line 387
      StackMap locals: io.vertx.core.Future
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 2 // io.vertx.core.Future fut
        end local 1 // io.vertx.core.Handler disconnectHandler
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    4     0               this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    4     1  disconnectHandler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;
            1    4     2                fut  Lio/vertx/core/Future<Ljava/lang/Void;>;
    Signature: (Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                   Name  Flags
      disconnectHandler  

  public io.vertx.core.Future<java.lang.Integer> publish(java.lang.String, io.vertx.core.buffer.Buffer, io.netty.handler.codec.mqtt.MqttQoS, boolean, boolean);
    descriptor: (Ljava/lang/String;Lio/vertx/core/buffer/Buffer;Lio/netty/handler/codec/mqtt/MqttQoS;ZZ)Lio/vertx/core/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=11, args_size=6
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.String topic
        start local 2 // io.vertx.core.buffer.Buffer payload
        start local 3 // io.netty.handler.codec.mqtt.MqttQoS qosLevel
        start local 4 // boolean isDup
        start local 5 // boolean isRetain
         0: .line 396
            getstatic io.netty.handler.codec.mqtt.MqttQoS.FAILURE:Lio/netty/handler/codec/mqtt/MqttQoS;
            aload 3 /* qosLevel */
            if_acmpne 2
         1: .line 397
            new java.lang.IllegalArgumentException
            dup
            ldc "QoS level must be one of AT_MOST_ONCE, AT_LEAST_ONCE or EXACTLY_ONCE"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 402
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 8
            monitorenter
         3: .line 403
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getMaxInflightQueue:()I
            if_icmplt 9
         4: .line 404
            ldc "Attempt to exceed the limit of %d inflight messages"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getMaxInflightQueue:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 9 /* msg */
        start local 9 // java.lang.String msg
         5: .line 405
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            aload 9 /* msg */
            invokeinterface io.vertx.core.impl.logging.Logger.error:(Ljava/lang/Object;)V
         6: .line 406
            new io.vertx.mqtt.MqttException
            dup
            iconst_2
            aload 9 /* msg */
            invokespecial io.vertx.mqtt.MqttException.<init>:(ILjava/lang/String;)V
            astore 10 /* exception */
        start local 10 // io.vertx.mqtt.MqttException exception
         7: .line 407
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.ctx:Lio/vertx/core/impl/ContextInternal;
            aload 10 /* exception */
            invokeinterface io.vertx.core.impl.ContextInternal.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
            aload 8
            monitorexit
         8: areturn
        end local 10 // io.vertx.mqtt.MqttException exception
        end local 9 // java.lang.String msg
         9: .line 410
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String io.vertx.core.buffer.Buffer io.netty.handler.codec.mqtt.MqttQoS int int top top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack:
            aload 0 /* this */
            aload 1 /* topic */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.isValidTopicName:(Ljava/lang/String;)Z
            ifne 15
        10: .line 411
            ldc "Invalid Topic Name - %s. It mustn't contains wildcards: # and +. Also it can't contains U+0000(NULL) chars"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* topic */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 9 /* msg */
        start local 9 // java.lang.String msg
        11: .line 412
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            aload 9 /* msg */
            invokeinterface io.vertx.core.impl.logging.Logger.error:(Ljava/lang/Object;)V
        12: .line 413
            new io.vertx.mqtt.MqttException
            dup
            iconst_0
            aload 9 /* msg */
            invokespecial io.vertx.mqtt.MqttException.<init>:(ILjava/lang/String;)V
            astore 10 /* exception */
        start local 10 // io.vertx.mqtt.MqttException exception
        13: .line 414
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.ctx:Lio/vertx/core/impl/ContextInternal;
            aload 10 /* exception */
            invokeinterface io.vertx.core.impl.ContextInternal.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
            aload 8
            monitorexit
        14: areturn
        end local 10 // io.vertx.mqtt.MqttException exception
        end local 9 // java.lang.String msg
        15: .line 417
      StackMap locals:
      StackMap stack:
            new io.netty.handler.codec.mqtt.MqttFixedHeader
            dup
        16: .line 418
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PUBLISH:Lio/netty/handler/codec/mqtt/MqttMessageType;
        17: .line 419
            iload 4 /* isDup */
        18: .line 420
            aload 3 /* qosLevel */
        19: .line 421
            iload 5 /* isRetain */
        20: .line 422
            iconst_0
        21: .line 417
            invokespecial io.netty.handler.codec.mqtt.MqttFixedHeader.<init>:(Lio/netty/handler/codec/mqtt/MqttMessageType;ZLio/netty/handler/codec/mqtt/MqttQoS;ZI)V
            astore 9 /* fixedHeader */
        start local 9 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        22: .line 424
            aload 2 /* payload */
            invokeinterface io.vertx.core.buffer.Buffer.getBytes:()[B
            invokestatic io.netty.buffer.Unpooled.copiedBuffer:([B)Lio/netty/buffer/ByteBuf;
            astore 10 /* buf */
        start local 10 // io.netty.buffer.ByteBuf buf
        23: .line 425
            new io.netty.handler.codec.mqtt.MqttPublishVariableHeader
            dup
            aload 1 /* topic */
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.nextMessageId:()I
            invokespecial io.netty.handler.codec.mqtt.MqttPublishVariableHeader.<init>:(Ljava/lang/String;I)V
            astore 7 /* variableHeader */
        start local 7 // io.netty.handler.codec.mqtt.MqttPublishVariableHeader variableHeader
        24: .line 426
            aload 9 /* fixedHeader */
            aload 7 /* variableHeader */
            aload 10 /* buf */
            invokestatic io.netty.handler.codec.mqtt.MqttMessageFactory.newMessage:(Lio/netty/handler/codec/mqtt/MqttFixedHeader;Ljava/lang/Object;Ljava/lang/Object;)Lio/netty/handler/codec/mqtt/MqttMessage;
            astore 6 /* publish */
        start local 6 // io.netty.handler.codec.mqtt.MqttMessage publish
        25: .line 427
            invokestatic io.vertx.mqtt.impl.MqttClientImpl.$SWITCH_TABLE$io$netty$handler$codec$mqtt$MqttQoS:()[I
            aload 3 /* qosLevel */
            invokevirtual io.netty.handler.codec.mqtt.MqttQoS.ordinal:()I
            iaload
            tableswitch { // 2 - 3
                    2: 26
                    3: 29
              default: 32
          }
        26: .line 429
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String io.vertx.core.buffer.Buffer io.netty.handler.codec.mqtt.MqttQoS int int io.netty.handler.codec.mqtt.MqttMessage io.netty.handler.codec.mqtt.MqttPublishVariableHeader io.vertx.mqtt.impl.MqttClientImpl io.netty.handler.codec.mqtt.MqttFixedHeader io.netty.buffer.ByteBuf
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.qos1outbound:Ljava/util/HashMap;
            aload 7 /* variableHeader */
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishVariableHeader.packetId:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            new io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
            dup
            aload 0 /* this */
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/mqtt/impl/MqttClientImpl;)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/mqtt/impl/MqttClientImpl.handlePubackTimeout(I)V (7)
                  (Ljava/lang/Integer;)V
            aload 7 /* variableHeader */
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishVariableHeader.packetId:()I
            invokespecial io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket.<init>:(Lio/vertx/mqtt/impl/MqttClientImpl;Lio/vertx/core/Handler;I)V
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        27: .line 430
            aload 0 /* this */
            dup
            getfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
            iconst_1
            iadd
            putfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
        28: .line 431
            goto 32
        29: .line 433
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.qos2outbound:Ljava/util/HashMap;
            aload 7 /* variableHeader */
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishVariableHeader.packetId:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            new io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
            dup
            aload 0 /* this */
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/mqtt/impl/MqttClientImpl;)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/mqtt/impl/MqttClientImpl.handlePubrecTimeout(I)V (7)
                  (Ljava/lang/Integer;)V
            aload 7 /* variableHeader */
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishVariableHeader.packetId:()I
            invokespecial io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket.<init>:(Lio/vertx/mqtt/impl/MqttClientImpl;Lio/vertx/core/Handler;I)V
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        30: .line 434
            aload 0 /* this */
            dup
            getfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
            iconst_1
            iadd
            putfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
        31: .line 435
            goto 32
        end local 10 // io.netty.buffer.ByteBuf buf
        end local 9 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        32: .line 402
      StackMap locals:
      StackMap stack:
            aload 8
            monitorexit
        33: goto 36
        end local 7 // io.netty.handler.codec.mqtt.MqttPublishVariableHeader variableHeader
        end local 6 // io.netty.handler.codec.mqtt.MqttMessage publish
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String io.vertx.core.buffer.Buffer io.netty.handler.codec.mqtt.MqttQoS int int top top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
        34: aload 8
            monitorexit
        35: athrow
        start local 6 // io.netty.handler.codec.mqtt.MqttMessage publish
        start local 7 // io.netty.handler.codec.mqtt.MqttPublishVariableHeader variableHeader
        36: .line 442
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String io.vertx.core.buffer.Buffer io.netty.handler.codec.mqtt.MqttQoS int int io.netty.handler.codec.mqtt.MqttMessage io.netty.handler.codec.mqtt.MqttPublishVariableHeader
      StackMap stack:
            aload 0 /* this */
            aload 6 /* publish */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.write:(Lio/netty/handler/codec/mqtt/MqttMessage;)Lio/vertx/core/Future;
            aload 7 /* variableHeader */
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishVariableHeader.packetId:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.Future.map:(Ljava/lang/Object;)Lio/vertx/core/Future;
            areturn
        end local 7 // io.netty.handler.codec.mqtt.MqttPublishVariableHeader variableHeader
        end local 6 // io.netty.handler.codec.mqtt.MqttMessage publish
        end local 5 // boolean isRetain
        end local 4 // boolean isDup
        end local 3 // io.netty.handler.codec.mqtt.MqttQoS qosLevel
        end local 2 // io.vertx.core.buffer.Buffer payload
        end local 1 // java.lang.String topic
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   37     0            this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   37     1           topic  Ljava/lang/String;
            0   37     2         payload  Lio/vertx/core/buffer/Buffer;
            0   37     3        qosLevel  Lio/netty/handler/codec/mqtt/MqttQoS;
            0   37     4           isDup  Z
            0   37     5        isRetain  Z
           25   34     6         publish  Lio/netty/handler/codec/mqtt/MqttMessage;
           36   37     6         publish  Lio/netty/handler/codec/mqtt/MqttMessage;
           24   34     7  variableHeader  Lio/netty/handler/codec/mqtt/MqttPublishVariableHeader;
           36   37     7  variableHeader  Lio/netty/handler/codec/mqtt/MqttPublishVariableHeader;
            5    9     9             msg  Ljava/lang/String;
            7    9    10       exception  Lio/vertx/mqtt/MqttException;
           11   15     9             msg  Ljava/lang/String;
           13   15    10       exception  Lio/vertx/mqtt/MqttException;
           22   32     9     fixedHeader  Lio/netty/handler/codec/mqtt/MqttFixedHeader;
           23   32    10             buf  Lio/netty/buffer/ByteBuf;
      Exception table:
        from    to  target  type
           3     8      34  any
           9    14      34  any
          15    33      34  any
          34    35      34  any
    Signature: (Ljava/lang/String;Lio/vertx/core/buffer/Buffer;Lio/netty/handler/codec/mqtt/MqttQoS;ZZ)Lio/vertx/core/Future<Ljava/lang/Integer;>;
    MethodParameters:
          Name  Flags
      topic     
      payload   
      qosLevel  
      isDup     
      isRetain  

  public io.vertx.mqtt.MqttClient publish(java.lang.String, io.vertx.core.buffer.Buffer, io.netty.handler.codec.mqtt.MqttQoS, boolean, boolean, io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Integer>>);
    descriptor: (Ljava/lang/String;Lio/vertx/core/buffer/Buffer;Lio/netty/handler/codec/mqtt/MqttQoS;ZZLio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=7
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.String topic
        start local 2 // io.vertx.core.buffer.Buffer payload
        start local 3 // io.netty.handler.codec.mqtt.MqttQoS qosLevel
        start local 4 // boolean isDup
        start local 5 // boolean isRetain
        start local 6 // io.vertx.core.Handler publishSentHandler
         0: .line 451
            aload 0 /* this */
            aload 1 /* topic */
            aload 2 /* payload */
            aload 3 /* qosLevel */
            iload 4 /* isDup */
            iload 5 /* isRetain */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publish:(Ljava/lang/String;Lio/vertx/core/buffer/Buffer;Lio/netty/handler/codec/mqtt/MqttQoS;ZZ)Lio/vertx/core/Future;
            astore 7 /* fut */
        start local 7 // io.vertx.core.Future fut
         1: .line 452
            aload 6 /* publishSentHandler */
            ifnull 3
         2: .line 453
            aload 7 /* fut */
            aload 6 /* publishSentHandler */
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         3: .line 455
      StackMap locals: io.vertx.core.Future
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 7 // io.vertx.core.Future fut
        end local 6 // io.vertx.core.Handler publishSentHandler
        end local 5 // boolean isRetain
        end local 4 // boolean isDup
        end local 3 // io.netty.handler.codec.mqtt.MqttQoS qosLevel
        end local 2 // io.vertx.core.buffer.Buffer payload
        end local 1 // java.lang.String topic
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    4     0                this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    4     1               topic  Ljava/lang/String;
            0    4     2             payload  Lio/vertx/core/buffer/Buffer;
            0    4     3            qosLevel  Lio/netty/handler/codec/mqtt/MqttQoS;
            0    4     4               isDup  Z
            0    4     5            isRetain  Z
            0    4     6  publishSentHandler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Integer;>;>;
            1    4     7                 fut  Lio/vertx/core/Future<Ljava/lang/Integer;>;
    Signature: (Ljava/lang/String;Lio/vertx/core/buffer/Buffer;Lio/netty/handler/codec/mqtt/MqttQoS;ZZLio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Integer;>;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                    Name  Flags
      topic               
      payload             
      qosLevel            
      isDup               
      isRetain            
      publishSentHandler  

  public io.vertx.mqtt.MqttClient publishCompletionHandler(io.vertx.core.Handler<java.lang.Integer>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.Handler publishCompletionHandler
         0: .line 464
            aload 0 /* this */
            aload 1 /* publishCompletionHandler */
            putfield io.vertx.mqtt.impl.MqttClientImpl.publishCompletionHandler:Lio/vertx/core/Handler;
         1: .line 465
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler publishCompletionHandler
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    2     0                      this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    2     1  publishCompletionHandler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
    Signature: (Lio/vertx/core/Handler<Ljava/lang/Integer;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                          Name  Flags
      publishCompletionHandler  

  private synchronized io.vertx.core.Handler<java.lang.Integer> publishCompletionHandler();
    descriptor: ()Lio/vertx/core/Handler;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 469
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.publishCompletionHandler:Lio/vertx/core/Handler;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
    Signature: ()Lio/vertx/core/Handler<Ljava/lang/Integer;>;

  public io.vertx.mqtt.MqttClient publishCompletionExpirationHandler(io.vertx.core.Handler<java.lang.Integer>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.Handler publishCompletionExpirationHandler
         0: .line 478
            aload 0 /* this */
            aload 1 /* publishCompletionExpirationHandler */
            putfield io.vertx.mqtt.impl.MqttClientImpl.publishCompletionExpirationHandler:Lio/vertx/core/Handler;
         1: .line 479
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler publishCompletionExpirationHandler
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot                                Name  Signature
            0    2     0                                this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    2     1  publishCompletionExpirationHandler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
    Signature: (Lio/vertx/core/Handler<Ljava/lang/Integer;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                                    Name  Flags
      publishCompletionExpirationHandler  

  private synchronized io.vertx.core.Handler<java.lang.Integer> publishCompletionExpirationHandler();
    descriptor: ()Lio/vertx/core/Handler;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 483
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.publishCompletionExpirationHandler:Lio/vertx/core/Handler;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
    Signature: ()Lio/vertx/core/Handler<Ljava/lang/Integer;>;

  public io.vertx.mqtt.MqttClient publishCompletionUnknownPacketIdHandler(io.vertx.core.Handler<java.lang.Integer>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.Handler publishCompletionPhantomHandler
         0: .line 492
            aload 0 /* this */
            aload 1 /* publishCompletionPhantomHandler */
            putfield io.vertx.mqtt.impl.MqttClientImpl.publishCompletionPhantomHandler:Lio/vertx/core/Handler;
         1: .line 493
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler publishCompletionPhantomHandler
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot                             Name  Signature
            0    2     0                             this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    2     1  publishCompletionPhantomHandler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
    Signature: (Lio/vertx/core/Handler<Ljava/lang/Integer;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                                 Name  Flags
      publishCompletionPhantomHandler  

  private synchronized io.vertx.core.Handler<java.lang.Integer> publishCompletionUnknownPacketIdHandler();
    descriptor: ()Lio/vertx/core/Handler;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 497
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.publishCompletionPhantomHandler:Lio/vertx/core/Handler;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
    Signature: ()Lio/vertx/core/Handler<Ljava/lang/Integer;>;

  public io.vertx.mqtt.MqttClient publishHandler(io.vertx.core.Handler<io.vertx.mqtt.messages.MqttPublishMessage>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.Handler publishHandler
         0: .line 506
            aload 0 /* this */
            aload 1 /* publishHandler */
            putfield io.vertx.mqtt.impl.MqttClientImpl.publishHandler:Lio/vertx/core/Handler;
         1: .line 507
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler publishHandler
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    2     1  publishHandler  Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttPublishMessage;>;
    Signature: (Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttPublishMessage;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                Name  Flags
      publishHandler  

  private synchronized io.vertx.core.Handler<io.vertx.mqtt.messages.MqttPublishMessage> publishHandler();
    descriptor: ()Lio/vertx/core/Handler;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 511
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.publishHandler:Lio/vertx/core/Handler;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
    Signature: ()Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttPublishMessage;>;

  public io.vertx.mqtt.MqttClient subscribeCompletionHandler(io.vertx.core.Handler<io.vertx.mqtt.messages.MqttSubAckMessage>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.Handler subscribeCompletionHandler
         0: .line 520
            aload 0 /* this */
            aload 1 /* subscribeCompletionHandler */
            putfield io.vertx.mqtt.impl.MqttClientImpl.subscribeCompletionHandler:Lio/vertx/core/Handler;
         1: .line 521
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler subscribeCompletionHandler
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0    2     0                        this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    2     1  subscribeCompletionHandler  Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttSubAckMessage;>;
    Signature: (Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttSubAckMessage;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                            Name  Flags
      subscribeCompletionHandler  

  private synchronized io.vertx.core.Handler<io.vertx.mqtt.messages.MqttSubAckMessage> subscribeCompletionHandler();
    descriptor: ()Lio/vertx/core/Handler;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 525
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.subscribeCompletionHandler:Lio/vertx/core/Handler;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
    Signature: ()Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttSubAckMessage;>;

  public io.vertx.core.Future<java.lang.Integer> subscribe(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Lio/vertx/core/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.String topic
        start local 2 // int qos
         0: .line 533
            aload 0 /* this */
            aload 1 /* topic */
            iload 2 /* qos */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic java.util.Collections.singletonMap:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.subscribe:(Ljava/util/Map;)Lio/vertx/core/Future;
            areturn
        end local 2 // int qos
        end local 1 // java.lang.String topic
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    1     1  topic  Ljava/lang/String;
            0    1     2    qos  I
    Signature: (Ljava/lang/String;I)Lio/vertx/core/Future<Ljava/lang/Integer;>;
    MethodParameters:
       Name  Flags
      topic  
      qos    

  public io.vertx.mqtt.MqttClient subscribe(java.lang.String, int, io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Integer>>);
    descriptor: (Ljava/lang/String;ILio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.String topic
        start local 2 // int qos
        start local 3 // io.vertx.core.Handler subscribeSentHandler
         0: .line 541
            aload 0 /* this */
            aload 1 /* topic */
            iload 2 /* qos */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic java.util.Collections.singletonMap:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
            aload 3 /* subscribeSentHandler */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.subscribe:(Ljava/util/Map;Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
            areturn
        end local 3 // io.vertx.core.Handler subscribeSentHandler
        end local 2 // int qos
        end local 1 // java.lang.String topic
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    1     1                 topic  Ljava/lang/String;
            0    1     2                   qos  I
            0    1     3  subscribeSentHandler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Integer;>;>;
    Signature: (Ljava/lang/String;ILio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Integer;>;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                      Name  Flags
      topic                 
      qos                   
      subscribeSentHandler  

  public io.vertx.core.Future<java.lang.Integer> subscribe(java.util.Map<java.lang.String, java.lang.Integer>);
    descriptor: (Ljava/util/Map;)Lio/vertx/core/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=8, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.util.Map topics
         0: .line 550
            aload 1 /* topics */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
         1: .line 551
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
         2: .line 552
            aload 0 /* this */
            invokedynamic test(Lio/vertx/mqtt/impl/MqttClientImpl;)Ljava/util/function/Predicate;
              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;)Z
                  io/vertx/mqtt/impl/MqttClientImpl.lambda$7(Ljava/util/Map$Entry;)Z (7)
                  (Ljava/util/Map$Entry;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         3: .line 553
            invokedynamic apply()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;
                  java/util/Map$Entry.getKey()Ljava/lang/Object; (9 itf)
                  (Ljava/util/Map$Entry;)Ljava/lang/String;
            invokedynamic apply()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;
                  java/util/Map$Entry.getValue()Ljava/lang/Object; (9 itf)
                  (Ljava/util/Map$Entry;)Ljava/lang/Integer;
            invokestatic java.util.stream.Collectors.toMap:(Ljava/util/function/Function;Ljava/util/function/Function;)Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.Map
         4: .line 550
            astore 2 /* invalidTopics */
        start local 2 // java.util.Map invalidTopics
         5: .line 555
            aload 2 /* invalidTopics */
            invokeinterface java.util.Map.size:()I
            ifle 10
         6: .line 556
            ldc "Invalid Topic Filters: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* invalidTopics */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 3 /* msg */
        start local 3 // java.lang.String msg
         7: .line 557
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            aload 3 /* msg */
            invokeinterface io.vertx.core.impl.logging.Logger.error:(Ljava/lang/Object;)V
         8: .line 558
            new io.vertx.mqtt.MqttException
            dup
            iconst_1
            aload 3 /* msg */
            invokespecial io.vertx.mqtt.MqttException.<init>:(ILjava/lang/String;)V
            astore 4 /* exception */
        start local 4 // io.vertx.mqtt.MqttException exception
         9: .line 559
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.ctx:Lio/vertx/core/impl/ContextInternal;
            aload 4 /* exception */
            invokeinterface io.vertx.core.impl.ContextInternal.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
            areturn
        end local 4 // io.vertx.mqtt.MqttException exception
        end local 3 // java.lang.String msg
        10: .line 562
      StackMap locals: java.util.Map
      StackMap stack:
            new io.netty.handler.codec.mqtt.MqttFixedHeader
            dup
        11: .line 563
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.SUBSCRIBE:Lio/netty/handler/codec/mqtt/MqttMessageType;
        12: .line 564
            iconst_0
        13: .line 565
            getstatic io.netty.handler.codec.mqtt.MqttQoS.AT_LEAST_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
        14: .line 566
            iconst_0
        15: .line 567
            iconst_0
        16: .line 562
            invokespecial io.netty.handler.codec.mqtt.MqttFixedHeader.<init>:(Lio/netty/handler/codec/mqtt/MqttMessageType;ZLio/netty/handler/codec/mqtt/MqttQoS;ZI)V
            astore 3 /* fixedHeader */
        start local 3 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        17: .line 569
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.nextMessageId:()I
            invokestatic io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.from:(I)Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
            astore 4 /* variableHeader */
        start local 4 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
        18: .line 570
            aload 1 /* topics */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
        19: .line 571
            invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
        20: .line 572
            invokedynamic apply()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/mqtt/impl/MqttClientImpl.lambda$10(Ljava/util/Map$Entry;)Lio/netty/handler/codec/mqtt/MqttTopicSubscription; (6)
                  (Ljava/util/Map$Entry;)Lio/netty/handler/codec/mqtt/MqttTopicSubscription;
            invokeinterface java.util.stream.Stream.map:(Ljava/util/function/Function;)Ljava/util/stream/Stream;
        21: .line 573
            invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.List
        22: .line 570
            astore 5 /* subscriptions */
        start local 5 // java.util.List subscriptions
        23: .line 575
            new io.netty.handler.codec.mqtt.MqttSubscribePayload
            dup
            aload 5 /* subscriptions */
            invokespecial io.netty.handler.codec.mqtt.MqttSubscribePayload.<init>:(Ljava/util/List;)V
            astore 6 /* payload */
        start local 6 // io.netty.handler.codec.mqtt.MqttSubscribePayload payload
        24: .line 577
            aload 3 /* fixedHeader */
            aload 4 /* variableHeader */
            aload 6 /* payload */
            invokestatic io.netty.handler.codec.mqtt.MqttMessageFactory.newMessage:(Lio/netty/handler/codec/mqtt/MqttFixedHeader;Ljava/lang/Object;Ljava/lang/Object;)Lio/netty/handler/codec/mqtt/MqttMessage;
            astore 7 /* subscribe */
        start local 7 // io.netty.handler.codec.mqtt.MqttMessage subscribe
        25: .line 579
            aload 0 /* this */
            aload 7 /* subscribe */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.write:(Lio/netty/handler/codec/mqtt/MqttMessage;)Lio/vertx/core/Future;
            aload 4 /* variableHeader */
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.messageId:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.Future.map:(Ljava/lang/Object;)Lio/vertx/core/Future;
            areturn
        end local 7 // io.netty.handler.codec.mqtt.MqttMessage subscribe
        end local 6 // io.netty.handler.codec.mqtt.MqttSubscribePayload payload
        end local 5 // java.util.List subscriptions
        end local 4 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
        end local 3 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        end local 2 // java.util.Map invalidTopics
        end local 1 // java.util.Map topics
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   26     0            this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   26     1          topics  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Integer;>;
            5   26     2   invalidTopics  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Integer;>;
            7   10     3             msg  Ljava/lang/String;
            9   10     4       exception  Lio/vertx/mqtt/MqttException;
           17   26     3     fixedHeader  Lio/netty/handler/codec/mqtt/MqttFixedHeader;
           18   26     4  variableHeader  Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
           23   26     5   subscriptions  Ljava/util/List<Lio/netty/handler/codec/mqtt/MqttTopicSubscription;>;
           24   26     6         payload  Lio/netty/handler/codec/mqtt/MqttSubscribePayload;
           25   26     7       subscribe  Lio/netty/handler/codec/mqtt/MqttMessage;
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/Integer;>;)Lio/vertx/core/Future<Ljava/lang/Integer;>;
    MethodParameters:
        Name  Flags
      topics  

  public io.vertx.mqtt.MqttClient subscribe(java.util.Map<java.lang.String, java.lang.Integer>, io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Integer>>);
    descriptor: (Ljava/util/Map;Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.util.Map topics
        start local 2 // io.vertx.core.Handler subscribeSentHandler
         0: .line 588
            aload 0 /* this */
            aload 1 /* topics */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.subscribe:(Ljava/util/Map;)Lio/vertx/core/Future;
            astore 3 /* fut */
        start local 3 // io.vertx.core.Future fut
         1: .line 589
            aload 2 /* subscribeSentHandler */
            ifnull 3
         2: .line 590
            aload 3 /* fut */
            aload 2 /* subscribeSentHandler */
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         3: .line 592
      StackMap locals: io.vertx.core.Future
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 3 // io.vertx.core.Future fut
        end local 2 // io.vertx.core.Handler subscribeSentHandler
        end local 1 // java.util.Map topics
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    4     0                  this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    4     1                topics  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Integer;>;
            0    4     2  subscribeSentHandler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Integer;>;>;
            1    4     3                   fut  Lio/vertx/core/Future<Ljava/lang/Integer;>;
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/Integer;>;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Integer;>;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                      Name  Flags
      topics                
      subscribeSentHandler  

  public io.vertx.mqtt.MqttClient unsubscribeCompletionHandler(io.vertx.core.Handler<java.lang.Integer>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.Handler unsubscribeCompletionHandler
         0: .line 601
            aload 0 /* this */
            aload 1 /* unsubscribeCompletionHandler */
            putfield io.vertx.mqtt.impl.MqttClientImpl.unsubscribeCompletionHandler:Lio/vertx/core/Handler;
         1: .line 602
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler unsubscribeCompletionHandler
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0    2     0                          this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    2     1  unsubscribeCompletionHandler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
    Signature: (Lio/vertx/core/Handler<Ljava/lang/Integer;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                              Name  Flags
      unsubscribeCompletionHandler  

  private synchronized io.vertx.core.Handler<java.lang.Integer> unsubscribeCompletionHandler();
    descriptor: ()Lio/vertx/core/Handler;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 607
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.unsubscribeCompletionHandler:Lio/vertx/core/Handler;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
    Signature: ()Lio/vertx/core/Handler<Ljava/lang/Integer;>;

  public io.vertx.mqtt.MqttClient unsubscribe(java.lang.String, io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Integer>>);
    descriptor: (Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.String topic
        start local 2 // io.vertx.core.Handler unsubscribeSentHandler
         0: .line 616
            aload 0 /* this */
            aload 1 /* topic */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.unsubscribe:(Ljava/lang/String;)Lio/vertx/core/Future;
            astore 3 /* fut */
        start local 3 // io.vertx.core.Future fut
         1: .line 617
            aload 2 /* unsubscribeSentHandler */
            ifnull 3
         2: .line 618
            aload 3 /* fut */
            aload 2 /* unsubscribeSentHandler */
            invokeinterface io.vertx.core.Future.onComplete:(Lio/vertx/core/Handler;)Lio/vertx/core/Future;
            pop
         3: .line 620
      StackMap locals: io.vertx.core.Future
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 3 // io.vertx.core.Future fut
        end local 2 // io.vertx.core.Handler unsubscribeSentHandler
        end local 1 // java.lang.String topic
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    4     0                    this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    4     1                   topic  Ljava/lang/String;
            0    4     2  unsubscribeSentHandler  Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Integer;>;>;
            1    4     3                     fut  Lio/vertx/core/Future<Ljava/lang/Integer;>;
    Signature: (Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Integer;>;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                        Name  Flags
      topic                   
      unsubscribeSentHandler  

  public io.vertx.core.Future<java.lang.Integer> unsubscribe(java.lang.String);
    descriptor: (Ljava/lang/String;)Lio/vertx/core/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.String topic
         0: .line 629
            new io.netty.handler.codec.mqtt.MqttFixedHeader
            dup
         1: .line 630
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.UNSUBSCRIBE:Lio/netty/handler/codec/mqtt/MqttMessageType;
         2: .line 631
            iconst_0
         3: .line 632
            getstatic io.netty.handler.codec.mqtt.MqttQoS.AT_LEAST_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
         4: .line 633
            iconst_0
         5: .line 634
            iconst_0
         6: .line 629
            invokespecial io.netty.handler.codec.mqtt.MqttFixedHeader.<init>:(Lio/netty/handler/codec/mqtt/MqttMessageType;ZLio/netty/handler/codec/mqtt/MqttQoS;ZI)V
            astore 2 /* fixedHeader */
        start local 2 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
         7: .line 636
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.nextMessageId:()I
            invokestatic io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.from:(I)Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
            astore 3 /* variableHeader */
        start local 3 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
         8: .line 638
            new io.netty.handler.codec.mqtt.MqttUnsubscribePayload
            dup
            aload 1 /* topic */
            invokestatic java.util.stream.Stream.of:(Ljava/lang/Object;)Ljava/util/stream/Stream;
            invokestatic java.util.stream.Collectors.toList:()Ljava/util/stream/Collector;
            invokeinterface java.util.stream.Stream.collect:(Ljava/util/stream/Collector;)Ljava/lang/Object;
            checkcast java.util.List
            invokespecial io.netty.handler.codec.mqtt.MqttUnsubscribePayload.<init>:(Ljava/util/List;)V
            astore 4 /* payload */
        start local 4 // io.netty.handler.codec.mqtt.MqttUnsubscribePayload payload
         9: .line 640
            aload 2 /* fixedHeader */
            aload 3 /* variableHeader */
            aload 4 /* payload */
            invokestatic io.netty.handler.codec.mqtt.MqttMessageFactory.newMessage:(Lio/netty/handler/codec/mqtt/MqttFixedHeader;Ljava/lang/Object;Ljava/lang/Object;)Lio/netty/handler/codec/mqtt/MqttMessage;
            astore 5 /* unsubscribe */
        start local 5 // io.netty.handler.codec.mqtt.MqttMessage unsubscribe
        10: .line 642
            aload 0 /* this */
            aload 5 /* unsubscribe */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.write:(Lio/netty/handler/codec/mqtt/MqttMessage;)Lio/vertx/core/Future;
            pop
        11: .line 644
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.ctx:Lio/vertx/core/impl/ContextInternal;
            aload 3 /* variableHeader */
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.messageId:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.impl.ContextInternal.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
            areturn
        end local 5 // io.netty.handler.codec.mqtt.MqttMessage unsubscribe
        end local 4 // io.netty.handler.codec.mqtt.MqttUnsubscribePayload payload
        end local 3 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
        end local 2 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        end local 1 // java.lang.String topic
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   12     0            this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   12     1           topic  Ljava/lang/String;
            7   12     2     fixedHeader  Lio/netty/handler/codec/mqtt/MqttFixedHeader;
            8   12     3  variableHeader  Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
            9   12     4         payload  Lio/netty/handler/codec/mqtt/MqttUnsubscribePayload;
           10   12     5     unsubscribe  Lio/netty/handler/codec/mqtt/MqttMessage;
    Signature: (Ljava/lang/String;)Lio/vertx/core/Future<Ljava/lang/Integer;>;
    MethodParameters:
       Name  Flags
      topic  

  public synchronized io.vertx.mqtt.MqttClient pingResponseHandler(io.vertx.core.Handler<java.lang.Void>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.Handler pingResponseHandler
         0: .line 652
            aload 0 /* this */
            aload 1 /* pingResponseHandler */
            putfield io.vertx.mqtt.impl.MqttClientImpl.pingrespHandler:Lio/vertx/core/Handler;
         1: .line 653
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler pingResponseHandler
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0                 this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    2     1  pingResponseHandler  Lio/vertx/core/Handler<Ljava/lang/Void;>;
    Signature: (Lio/vertx/core/Handler<Ljava/lang/Void;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
                     Name  Flags
      pingResponseHandler  

  private synchronized io.vertx.core.Handler<java.lang.Void> pingResponseHandler();
    descriptor: ()Lio/vertx/core/Handler;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 657
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.pingrespHandler:Lio/vertx/core/Handler;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
    Signature: ()Lio/vertx/core/Handler<Ljava/lang/Void;>;

  public synchronized io.vertx.mqtt.MqttClient exceptionHandler(io.vertx.core.Handler<java.lang.Throwable>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.Handler handler
         0: .line 665
            aload 0 /* this */
            aload 1 /* handler */
            putfield io.vertx.mqtt.impl.MqttClientImpl.exceptionHandler:Lio/vertx/core/Handler;
         1: .line 666
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler handler
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    2     1  handler  Lio/vertx/core/Handler<Ljava/lang/Throwable;>;
    Signature: (Lio/vertx/core/Handler<Ljava/lang/Throwable;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
         Name  Flags
      handler  

  private synchronized io.vertx.core.Handler<java.lang.Throwable> exceptionHandler();
    descriptor: ()Lio/vertx/core/Handler;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 670
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.exceptionHandler:Lio/vertx/core/Handler;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
    Signature: ()Lio/vertx/core/Handler<Ljava/lang/Throwable;>;

  public synchronized io.vertx.mqtt.MqttClient closeHandler(io.vertx.core.Handler<java.lang.Void>);
    descriptor: (Lio/vertx/core/Handler;)Lio/vertx/mqtt/MqttClient;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.Handler closeHandler
         0: .line 678
            aload 0 /* this */
            aload 1 /* closeHandler */
            putfield io.vertx.mqtt.impl.MqttClientImpl.closeHandler:Lio/vertx/core/Handler;
         1: .line 679
            aload 0 /* this */
            areturn
        end local 1 // io.vertx.core.Handler closeHandler
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    2     1  closeHandler  Lio/vertx/core/Handler<Ljava/lang/Void;>;
    Signature: (Lio/vertx/core/Handler<Ljava/lang/Void;>;)Lio/vertx/mqtt/MqttClient;
    MethodParameters:
              Name  Flags
      closeHandler  

  private synchronized io.vertx.core.Handler<java.lang.Void> closeHandler();
    descriptor: ()Lio/vertx/core/Handler;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 683
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.closeHandler:Lio/vertx/core/Handler;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
    Signature: ()Lio/vertx/core/Handler<Ljava/lang/Void;>;

  public io.vertx.mqtt.MqttClient ping();
    descriptor: ()Lio/vertx/mqtt/MqttClient;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 704
            invokestatic io.vertx.core.Vertx.currentContext:()Lio/vertx/core/Context;
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.ctx:Lio/vertx/core/impl/ContextInternal;
            if_acmpne 8
         1: .line 707
            new io.netty.handler.codec.mqtt.MqttFixedHeader
            dup
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PINGREQ:Lio/netty/handler/codec/mqtt/MqttMessageType;
            iconst_0
            getstatic io.netty.handler.codec.mqtt.MqttQoS.AT_MOST_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
            iconst_0
            iconst_0
            invokespecial io.netty.handler.codec.mqtt.MqttFixedHeader.<init>:(Lio/netty/handler/codec/mqtt/MqttMessageType;ZLio/netty/handler/codec/mqtt/MqttQoS;ZI)V
         2: .line 706
            astore 1 /* fixedHeader */
        start local 1 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
         3: .line 709
            aload 1 /* fixedHeader */
            aconst_null
            aconst_null
            invokestatic io.netty.handler.codec.mqtt.MqttMessageFactory.newMessage:(Lio/netty/handler/codec/mqtt/MqttFixedHeader;Ljava/lang/Object;Ljava/lang/Object;)Lio/netty/handler/codec/mqtt/MqttMessage;
            astore 2 /* pingreq */
        start local 2 // io.netty.handler.codec.mqtt.MqttMessage pingreq
         4: .line 711
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.vertx:Lio/vertx/core/impl/VertxInternal;
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.keepAliveTimeout:J
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/mqtt/impl/MqttClientImpl;)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/mqtt/impl/MqttClientImpl.lambda$11(Ljava/lang/Long;)V (7)
                  (Ljava/lang/Long;)V
            invokeinterface io.vertx.core.impl.VertxInternal.setTimer:(JLio/vertx/core/Handler;)J
            lstore 3 /* id */
        start local 3 // long id
         5: .line 715
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.pings:Ljava/util/Deque;
            new io.vertx.mqtt.impl.MqttClientImpl$Ping
            dup
            aload 0 /* this */
            lload 3 /* id */
            invokespecial io.vertx.mqtt.impl.MqttClientImpl$Ping.<init>:(Lio/vertx/mqtt/impl/MqttClientImpl;J)V
            invokeinterface java.util.Deque.add:(Ljava/lang/Object;)Z
            pop
         6: .line 717
            aload 0 /* this */
            aload 2 /* pingreq */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.write:(Lio/netty/handler/codec/mqtt/MqttMessage;)Lio/vertx/core/Future;
            pop
        end local 3 // long id
        end local 2 // io.netty.handler.codec.mqtt.MqttMessage pingreq
        end local 1 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
         7: .line 718
            goto 9
         8: .line 719
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.ctx:Lio/vertx/core/impl/ContextInternal;
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/mqtt/impl/MqttClientImpl;)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/mqtt/impl/MqttClientImpl.lambda$12(Ljava/lang/Void;)V (7)
                  (Ljava/lang/Void;)V
            invokeinterface io.vertx.core.impl.ContextInternal.runOnContext:(Lio/vertx/core/Handler;)V
         9: .line 721
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   10     0         this  Lio/vertx/mqtt/impl/MqttClientImpl;
            3    7     1  fixedHeader  Lio/netty/handler/codec/mqtt/MqttFixedHeader;
            4    7     2      pingreq  Lio/netty/handler/codec/mqtt/MqttMessage;
            5    7     3           id  J

  public synchronized java.lang.String clientId();
    descriptor: ()Ljava/lang/String;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 726
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getClientId:()Ljava/lang/String;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;

  public synchronized boolean isConnected();
    descriptor: ()Z
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 731
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CONNECTED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;

  private void publishAcknowledge(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int publishMessageId
         0: .line 742
            new io.netty.handler.codec.mqtt.MqttFixedHeader
            dup
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PUBACK:Lio/netty/handler/codec/mqtt/MqttMessageType;
            iconst_0
            getstatic io.netty.handler.codec.mqtt.MqttQoS.AT_MOST_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
            iconst_0
            iconst_0
            invokespecial io.netty.handler.codec.mqtt.MqttFixedHeader.<init>:(Lio/netty/handler/codec/mqtt/MqttMessageType;ZLio/netty/handler/codec/mqtt/MqttQoS;ZI)V
         1: .line 741
            astore 2 /* fixedHeader */
        start local 2 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
         2: .line 745
            iload 1 /* publishMessageId */
            invokestatic io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.from:(I)Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
         3: .line 744
            astore 3 /* variableHeader */
        start local 3 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
         4: .line 747
            aload 2 /* fixedHeader */
            aload 3 /* variableHeader */
            aconst_null
            invokestatic io.netty.handler.codec.mqtt.MqttMessageFactory.newMessage:(Lio/netty/handler/codec/mqtt/MqttFixedHeader;Ljava/lang/Object;Ljava/lang/Object;)Lio/netty/handler/codec/mqtt/MqttMessage;
            astore 4 /* puback */
        start local 4 // io.netty.handler.codec.mqtt.MqttMessage puback
         5: .line 749
            aload 0 /* this */
            aload 4 /* puback */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.write:(Lio/netty/handler/codec/mqtt/MqttMessage;)Lio/vertx/core/Future;
            pop
         6: .line 750
            return
        end local 4 // io.netty.handler.codec.mqtt.MqttMessage puback
        end local 3 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
        end local 2 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        end local 1 // int publishMessageId
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0              this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    7     1  publishMessageId  I
            2    7     2       fixedHeader  Lio/netty/handler/codec/mqtt/MqttFixedHeader;
            4    7     3    variableHeader  Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
            5    7     4            puback  Lio/netty/handler/codec/mqtt/MqttMessage;
    MethodParameters:
                  Name  Flags
      publishMessageId  

  private void publishReceived(io.vertx.mqtt.messages.MqttPublishMessage);
    descriptor: (Lio/vertx/mqtt/messages/MqttPublishMessage;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.mqtt.messages.MqttPublishMessage publishMessage
         0: .line 760
            new io.netty.handler.codec.mqtt.MqttFixedHeader
            dup
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PUBREC:Lio/netty/handler/codec/mqtt/MqttMessageType;
            iconst_0
            getstatic io.netty.handler.codec.mqtt.MqttQoS.AT_MOST_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
            iconst_0
            iconst_0
            invokespecial io.netty.handler.codec.mqtt.MqttFixedHeader.<init>:(Lio/netty/handler/codec/mqtt/MqttMessageType;ZLio/netty/handler/codec/mqtt/MqttQoS;ZI)V
         1: .line 759
            astore 2 /* fixedHeader */
        start local 2 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
         2: .line 763
            aload 1 /* publishMessage */
            invokeinterface io.vertx.mqtt.messages.MqttPublishMessage.messageId:()I
            invokestatic io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.from:(I)Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
         3: .line 762
            astore 3 /* variableHeader */
        start local 3 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
         4: .line 765
            aload 2 /* fixedHeader */
            aload 3 /* variableHeader */
            aconst_null
            invokestatic io.netty.handler.codec.mqtt.MqttMessageFactory.newMessage:(Lio/netty/handler/codec/mqtt/MqttFixedHeader;Ljava/lang/Object;Ljava/lang/Object;)Lio/netty/handler/codec/mqtt/MqttMessage;
            astore 4 /* pubrec */
        start local 4 // io.netty.handler.codec.mqtt.MqttMessage pubrec
         5: .line 767
            aload 0 /* this */
            dup
            astore 5
            monitorenter
         6: .line 768
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.qos2inbound:Ljava/util/HashMap;
            aload 1 /* publishMessage */
            invokeinterface io.vertx.mqtt.messages.MqttPublishMessage.messageId:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 1 /* publishMessage */
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 767
            aload 5
            monitorexit
         8: goto 11
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.mqtt.messages.MqttPublishMessage io.netty.handler.codec.mqtt.MqttFixedHeader io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader io.netty.handler.codec.mqtt.MqttMessage io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
         9: aload 5
            monitorexit
        10: athrow
        11: .line 770
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* pubrec */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.write:(Lio/netty/handler/codec/mqtt/MqttMessage;)Lio/vertx/core/Future;
            pop
        12: .line 771
            return
        end local 4 // io.netty.handler.codec.mqtt.MqttMessage pubrec
        end local 3 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
        end local 2 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        end local 1 // io.vertx.mqtt.messages.MqttPublishMessage publishMessage
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0            this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   13     1  publishMessage  Lio/vertx/mqtt/messages/MqttPublishMessage;
            2   13     2     fixedHeader  Lio/netty/handler/codec/mqtt/MqttFixedHeader;
            4   13     3  variableHeader  Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
            5   13     4          pubrec  Lio/netty/handler/codec/mqtt/MqttMessage;
      Exception table:
        from    to  target  type
           6     8       9  any
           9    10       9  any
    MethodParameters:
                Name  Flags
      publishMessage  

  private void publishComplete(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int publishMessageId
         0: .line 781
            new io.netty.handler.codec.mqtt.MqttFixedHeader
            dup
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PUBCOMP:Lio/netty/handler/codec/mqtt/MqttMessageType;
            iconst_0
            getstatic io.netty.handler.codec.mqtt.MqttQoS.AT_MOST_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
            iconst_0
            iconst_0
            invokespecial io.netty.handler.codec.mqtt.MqttFixedHeader.<init>:(Lio/netty/handler/codec/mqtt/MqttMessageType;ZLio/netty/handler/codec/mqtt/MqttQoS;ZI)V
         1: .line 780
            astore 2 /* fixedHeader */
        start local 2 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
         2: .line 784
            iload 1 /* publishMessageId */
            invokestatic io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.from:(I)Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
         3: .line 783
            astore 3 /* variableHeader */
        start local 3 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
         4: .line 786
            aload 2 /* fixedHeader */
            aload 3 /* variableHeader */
            aconst_null
            invokestatic io.netty.handler.codec.mqtt.MqttMessageFactory.newMessage:(Lio/netty/handler/codec/mqtt/MqttFixedHeader;Ljava/lang/Object;Ljava/lang/Object;)Lio/netty/handler/codec/mqtt/MqttMessage;
            astore 4 /* pubcomp */
        start local 4 // io.netty.handler.codec.mqtt.MqttMessage pubcomp
         5: .line 788
            aload 0 /* this */
            aload 4 /* pubcomp */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.write:(Lio/netty/handler/codec/mqtt/MqttMessage;)Lio/vertx/core/Future;
            pop
         6: .line 789
            return
        end local 4 // io.netty.handler.codec.mqtt.MqttMessage pubcomp
        end local 3 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
        end local 2 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        end local 1 // int publishMessageId
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0              this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    7     1  publishMessageId  I
            2    7     2       fixedHeader  Lio/netty/handler/codec/mqtt/MqttFixedHeader;
            4    7     3    variableHeader  Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
            5    7     4           pubcomp  Lio/netty/handler/codec/mqtt/MqttMessage;
    MethodParameters:
                  Name  Flags
      publishMessageId  

  private void publishRelease(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int publishMessageId
         0: .line 799
            new io.netty.handler.codec.mqtt.MqttFixedHeader
            dup
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PUBREL:Lio/netty/handler/codec/mqtt/MqttMessageType;
            iconst_0
            getstatic io.netty.handler.codec.mqtt.MqttQoS.AT_LEAST_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
            iconst_0
            iconst_0
            invokespecial io.netty.handler.codec.mqtt.MqttFixedHeader.<init>:(Lio/netty/handler/codec/mqtt/MqttMessageType;ZLio/netty/handler/codec/mqtt/MqttQoS;ZI)V
         1: .line 798
            astore 2 /* fixedHeader */
        start local 2 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
         2: .line 802
            iload 1 /* publishMessageId */
            invokestatic io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.from:(I)Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
         3: .line 801
            astore 3 /* variableHeader */
        start local 3 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
         4: .line 804
            aload 2 /* fixedHeader */
            aload 3 /* variableHeader */
            aconst_null
            invokestatic io.netty.handler.codec.mqtt.MqttMessageFactory.newMessage:(Lio/netty/handler/codec/mqtt/MqttFixedHeader;Ljava/lang/Object;Ljava/lang/Object;)Lio/netty/handler/codec/mqtt/MqttMessage;
            astore 4 /* pubrel */
        start local 4 // io.netty.handler.codec.mqtt.MqttMessage pubrel
         5: .line 806
            aload 0 /* this */
            dup
            astore 5
            monitorenter
         6: .line 807
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.qos2outbound:Ljava/util/HashMap;
            iload 1 /* publishMessageId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            new io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
            dup
            aload 0 /* this */
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/mqtt/impl/MqttClientImpl;)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/mqtt/impl/MqttClientImpl.handlePubcompTimeout(I)V (7)
                  (Ljava/lang/Integer;)V
            iload 1 /* publishMessageId */
            invokespecial io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket.<init>:(Lio/vertx/mqtt/impl/MqttClientImpl;Lio/vertx/core/Handler;I)V
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 806
            aload 5
            monitorexit
         8: goto 11
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int io.netty.handler.codec.mqtt.MqttFixedHeader io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader io.netty.handler.codec.mqtt.MqttMessage io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
         9: aload 5
            monitorexit
        10: athrow
        11: .line 809
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* pubrel */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.write:(Lio/netty/handler/codec/mqtt/MqttMessage;)Lio/vertx/core/Future;
            pop
        12: .line 810
            return
        end local 4 // io.netty.handler.codec.mqtt.MqttMessage pubrel
        end local 3 // io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader variableHeader
        end local 2 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        end local 1 // int publishMessageId
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   13     0              this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   13     1  publishMessageId  I
            2   13     2       fixedHeader  Lio/netty/handler/codec/mqtt/MqttFixedHeader;
            4   13     3    variableHeader  Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
            5   13     4            pubrel  Lio/netty/handler/codec/mqtt/MqttMessage;
      Exception table:
        from    to  target  type
           6     8       9  any
           9    10       9  any
    MethodParameters:
                  Name  Flags
      publishMessageId  

  private void initChannel(io.vertx.core.net.impl.NetSocketInternal);
    descriptor: (Lio/vertx/core/net/impl/NetSocketInternal;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=4, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.core.net.impl.NetSocketInternal sock
         0: .line 814
            aload 1 /* sock */
            invokeinterface io.vertx.core.net.impl.NetSocketInternal.channelHandlerContext:()Lio/netty/channel/ChannelHandlerContext;
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            astore 2 /* pipeline */
        start local 2 // io.netty.channel.ChannelPipeline pipeline
         1: .line 817
            aload 2 /* pipeline */
            ldc "handler"
            ldc "mqttEncoder"
            getstatic io.netty.handler.codec.mqtt.MqttEncoder.INSTANCE:Lio/netty/handler/codec/mqtt/MqttEncoder;
            invokeinterface io.netty.channel.ChannelPipeline.addBefore:(Ljava/lang/String;Ljava/lang/String;Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
         2: .line 819
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getMaxMessageSize:()I
            ifle 5
         3: .line 820
            aload 2 /* pipeline */
            ldc "handler"
            ldc "mqttDecoder"
            new io.netty.handler.codec.mqtt.MqttDecoder
            dup
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getMaxMessageSize:()I
            invokespecial io.netty.handler.codec.mqtt.MqttDecoder.<init>:(I)V
            invokeinterface io.netty.channel.ChannelPipeline.addBefore:(Ljava/lang/String;Ljava/lang/String;Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
         4: .line 821
            goto 6
         5: .line 823
      StackMap locals: io.netty.channel.ChannelPipeline
      StackMap stack:
            aload 2 /* pipeline */
            ldc "handler"
            ldc "mqttDecoder"
            new io.netty.handler.codec.mqtt.MqttDecoder
            dup
            invokespecial io.netty.handler.codec.mqtt.MqttDecoder.<init>:()V
            invokeinterface io.netty.channel.ChannelPipeline.addBefore:(Ljava/lang/String;Ljava/lang/String;Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
         6: .line 826
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.isAutoKeepAlive:()Z
            ifeq 12
         7: .line 827
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getKeepAliveInterval:()I
            ifeq 12
         8: .line 829
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getKeepAliveInterval:()I
            istore 3 /* keepAliveInterval */
        start local 3 // int keepAliveInterval
         9: .line 832
            aload 2 /* pipeline */
            ldc "handler"
            ldc "idle"
        10: .line 833
            new io.vertx.mqtt.impl.MqttClientImpl$1
            dup
            aload 0 /* this */
            iconst_0
            iconst_0
            iload 3 /* keepAliveInterval */
            invokespecial io.vertx.mqtt.impl.MqttClientImpl$1.<init>:(Lio/vertx/mqtt/impl/MqttClientImpl;III)V
        11: .line 832
            invokeinterface io.netty.channel.ChannelPipeline.addBefore:(Ljava/lang/String;Ljava/lang/String;Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
        end local 3 // int keepAliveInterval
        12: .line 843
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.netty.channel.ChannelPipeline pipeline
        end local 1 // io.vertx.core.net.impl.NetSocketInternal sock
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   13     0               this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   13     1               sock  Lio/vertx/core/net/impl/NetSocketInternal;
            1   13     2           pipeline  Lio/netty/channel/ChannelPipeline;
            9   12     3  keepAliveInterval  I
    MethodParameters:
      Name  Flags
      sock  

  private synchronized int nextMessageId();
    descriptor: ()I
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 853
            aload 0 /* this */
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.messageIdCounter:I
            ldc 65535
            irem
            ifeq 1
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.messageIdCounter:I
            iconst_1
            iadd
            goto 2
      StackMap locals:
      StackMap stack: io.vertx.mqtt.impl.MqttClientImpl
         1: iconst_1
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: io.vertx.mqtt.impl.MqttClientImpl int
         2: putfield io.vertx.mqtt.impl.MqttClientImpl.messageIdCounter:I
         3: .line 854
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.messageIdCounter:I
            ireturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;

  private synchronized io.vertx.core.net.impl.NetSocketInternal connection();
    descriptor: ()Lio/vertx/core/net/impl/NetSocketInternal;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 858
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.connection:Lio/vertx/core/net/impl/NetSocketInternal;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;

  private io.vertx.core.Future<java.lang.Void> write(io.netty.handler.codec.mqtt.MqttMessage);
    descriptor: (Lio/netty/handler/codec/mqtt/MqttMessage;)Lio/vertx/core/Future;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.netty.handler.codec.mqtt.MqttMessage mqttMessage
         0: .line 862
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Sending packet %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* mqttMessage */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
         1: .line 863
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.connection:()Lio/vertx/core/net/impl/NetSocketInternal;
            aload 1 /* mqttMessage */
            invokeinterface io.vertx.core.net.impl.NetSocketInternal.writeMessage:(Ljava/lang/Object;)Lio/vertx/core/Future;
            areturn
        end local 1 // io.netty.handler.codec.mqtt.MqttMessage mqttMessage
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    2     1  mqttMessage  Lio/netty/handler/codec/mqtt/MqttMessage;
    Signature: (Lio/netty/handler/codec/mqtt/MqttMessage;)Lio/vertx/core/Future<Ljava/lang/Void;>;
    MethodParameters:
             Name  Flags
      mqttMessage  

  private void handleClosed();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 874
            aload 0 /* this */
            dup
            astore 5
            monitorenter
         1: .line 875
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.client:Lio/vertx/core/net/NetClient;
            astore 3 /* client */
        start local 3 // io.vertx.core.net.NetClient client
         2: .line 876
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.connectPromise:Lio/vertx/core/Promise;
            astore 1 /* connectPromise */
        start local 1 // io.vertx.core.Promise connectPromise
         3: .line 877
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.disconnectPromise:Lio/vertx/core/Promise;
            astore 2 /* disconnectPromise */
        start local 2 // io.vertx.core.Promise disconnectPromise
         4: .line 878
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.pings:Ljava/util/Deque;
            astore 4 /* pings */
        start local 4 // java.util.Deque pings
         5: .line 879
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.disconnectPromise:Lio/vertx/core/Promise;
         6: .line 880
            aload 0 /* this */
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            putfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
         7: .line 881
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.connection:Lio/vertx/core/net/impl/NetSocketInternal;
         8: .line 882
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.ctx:Lio/vertx/core/impl/ContextInternal;
         9: .line 883
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.client:Lio/vertx/core/net/NetClient;
        10: .line 884
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield io.vertx.mqtt.impl.MqttClientImpl.pings:Ljava/util/Deque;
        11: .line 874
            aload 5
            monitorexit
        12: goto 15
        end local 4 // java.util.Deque pings
        end local 3 // io.vertx.core.net.NetClient client
        end local 2 // io.vertx.core.Promise disconnectPromise
        end local 1 // io.vertx.core.Promise connectPromise
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl top top top top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
        13: aload 5
            monitorexit
        14: athrow
        start local 1 // io.vertx.core.Promise connectPromise
        start local 2 // io.vertx.core.Promise disconnectPromise
        start local 3 // io.vertx.core.net.NetClient client
        start local 4 // java.util.Deque pings
        15: .line 888
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.core.Promise io.vertx.core.Promise io.vertx.core.net.NetClient java.util.Deque
      StackMap stack:
            aload 4 /* pings */
            invokedynamic accept()Ljava/util/function/Consumer;
              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/mqtt/impl/MqttClientImpl.lambda$14(Lio/vertx/mqtt/impl/MqttClientImpl$Ping;)V (6)
                  (Lio/vertx/mqtt/impl/MqttClientImpl$Ping;)V
            invokeinterface java.util.Deque.forEach:(Ljava/util/function/Consumer;)V
        16: .line 892
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.closeHandler:()Lio/vertx/core/Handler;
            astore 5 /* handler */
        start local 5 // io.vertx.core.Handler handler
        17: .line 893
            aload 5 /* handler */
            ifnull 19
        18: .line 894
            aload 5 /* handler */
            aconst_null
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        19: .line 896
      StackMap locals: io.vertx.core.Handler
      StackMap stack:
            aload 2 /* disconnectPromise */
            invokeinterface io.vertx.core.Promise.complete:()V
        20: .line 897
            aload 1 /* connectPromise */
            ifnull 22
        21: .line 898
            aload 1 /* connectPromise */
            ldc "Closed"
            invokeinterface io.vertx.core.Promise.fail:(Ljava/lang/String;)V
        22: .line 900
      StackMap locals:
      StackMap stack:
            aload 3 /* client */
            invokeinterface io.vertx.core.net.NetClient.close:()Lio/vertx/core/Future;
            pop
        23: .line 901
            return
        end local 5 // io.vertx.core.Handler handler
        end local 4 // java.util.Deque pings
        end local 3 // io.vertx.core.net.NetClient client
        end local 2 // io.vertx.core.Promise disconnectPromise
        end local 1 // io.vertx.core.Promise connectPromise
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   24     0               this  Lio/vertx/mqtt/impl/MqttClientImpl;
            3   13     1     connectPromise  Lio/vertx/core/Promise<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
           15   24     1     connectPromise  Lio/vertx/core/Promise<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
            4   13     2  disconnectPromise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
           15   24     2  disconnectPromise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
            2   13     3             client  Lio/vertx/core/net/NetClient;
           15   24     3             client  Lio/vertx/core/net/NetClient;
            5   13     4              pings  Ljava/util/Deque<Lio/vertx/mqtt/impl/MqttClientImpl$Ping;>;
           15   24     4              pings  Ljava/util/Deque<Lio/vertx/mqtt/impl/MqttClientImpl$Ping;>;
           17   24     5            handler  Lio/vertx/core/Handler<Ljava/lang/Void;>;
      Exception table:
        from    to  target  type
           1    12      13  any
          13    14      13  any

  private void handleMessage(io.netty.channel.ChannelHandlerContext, java.lang.Object);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=12, args_size=3
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.netty.channel.ChannelHandlerContext chctx
        start local 2 // java.lang.Object msg
         0: .line 912
            aload 2 /* msg */
            instanceof io.netty.handler.codec.mqtt.MqttMessage
            ifeq 48
         1: .line 914
            aload 2 /* msg */
            checkcast io.netty.handler.codec.mqtt.MqttMessage
            astore 3 /* mqttMessage */
        start local 3 // io.netty.handler.codec.mqtt.MqttMessage mqttMessage
         2: .line 916
            aload 3 /* mqttMessage */
            invokevirtual io.netty.handler.codec.mqtt.MqttMessage.decoderResult:()Lio/netty/handler/codec/DecoderResult;
            astore 4 /* result */
        start local 4 // io.netty.handler.codec.DecoderResult result
         3: .line 917
            aload 4 /* result */
            invokevirtual io.netty.handler.codec.DecoderResult.isFailure:()Z
            ifeq 6
         4: .line 918
            aload 1 /* chctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            aload 4 /* result */
            invokevirtual io.netty.handler.codec.DecoderResult.cause:()Ljava/lang/Throwable;
            invokeinterface io.netty.channel.ChannelPipeline.fireExceptionCaught:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPipeline;
            pop
         5: .line 919
            return
         6: .line 921
      StackMap locals: io.netty.handler.codec.mqtt.MqttMessage io.netty.handler.codec.DecoderResult
      StackMap stack:
            aload 4 /* result */
            invokevirtual io.netty.handler.codec.DecoderResult.isFinished:()Z
            ifne 9
         7: .line 922
            aload 1 /* chctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            new java.lang.Exception
            dup
            ldc "Unfinished message"
            invokespecial java.lang.Exception.<init>:(Ljava/lang/String;)V
            invokeinterface io.netty.channel.ChannelPipeline.fireExceptionCaught:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPipeline;
            pop
         8: .line 923
            return
         9: .line 926
      StackMap locals:
      StackMap stack:
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Incoming packet %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* msg */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
        10: .line 927
            invokestatic io.vertx.mqtt.impl.MqttClientImpl.$SWITCH_TABLE$io$netty$handler$codec$mqtt$MqttMessageType:()[I
            aload 3 /* mqttMessage */
            invokevirtual io.netty.handler.codec.mqtt.MqttMessage.fixedHeader:()Lio/netty/handler/codec/mqtt/MqttFixedHeader;
            invokevirtual io.netty.handler.codec.mqtt.MqttFixedHeader.messageType:()Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            iaload
            tableswitch { // 2 - 13
                    2: 11
                    3: 17
                    4: 28
                    5: 30
                    6: 32
                    7: 34
                    8: 46
                    9: 36
                   10: 46
                   11: 42
                   12: 46
                   13: 44
              default: 46
          }
        11: .line 931
      StackMap locals:
      StackMap stack:
            aload 3 /* mqttMessage */
            checkcast io.netty.handler.codec.mqtt.MqttConnAckMessage
            astore 5 /* connack */
        start local 5 // io.netty.handler.codec.mqtt.MqttConnAckMessage connack
        12: .line 934
            aload 5 /* connack */
            invokevirtual io.netty.handler.codec.mqtt.MqttConnAckMessage.variableHeader:()Lio/netty/handler/codec/mqtt/MqttConnAckVariableHeader;
            invokevirtual io.netty.handler.codec.mqtt.MqttConnAckVariableHeader.connectReturnCode:()Lio/netty/handler/codec/mqtt/MqttConnectReturnCode;
        13: .line 935
            aload 5 /* connack */
            invokevirtual io.netty.handler.codec.mqtt.MqttConnAckMessage.variableHeader:()Lio/netty/handler/codec/mqtt/MqttConnAckVariableHeader;
            invokevirtual io.netty.handler.codec.mqtt.MqttConnAckVariableHeader.isSessionPresent:()Z
        14: .line 933
            invokestatic io.vertx.mqtt.messages.MqttConnAckMessage.create:(Lio/netty/handler/codec/mqtt/MqttConnectReturnCode;Z)Lio/vertx/mqtt/messages/MqttConnAckMessage;
            astore 6 /* mqttConnAckMessage */
        start local 6 // io.vertx.mqtt.messages.MqttConnAckMessage mqttConnAckMessage
        15: .line 936
            aload 0 /* this */
            aload 6 /* mqttConnAckMessage */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.handleConnack:(Lio/vertx/mqtt/messages/MqttConnAckMessage;)V
        16: .line 937
            goto 49
        end local 6 // io.vertx.mqtt.messages.MqttConnAckMessage mqttConnAckMessage
        end local 5 // io.netty.handler.codec.mqtt.MqttConnAckMessage connack
        17: .line 941
      StackMap locals:
      StackMap stack:
            aload 3 /* mqttMessage */
            checkcast io.netty.handler.codec.mqtt.MqttPublishMessage
            astore 7 /* publish */
        start local 7 // io.netty.handler.codec.mqtt.MqttPublishMessage publish
        18: .line 942
            aload 7 /* publish */
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishMessage.payload:()Lio/netty/buffer/ByteBuf;
            aload 1 /* chctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.alloc:()Lio/netty/buffer/ByteBufAllocator;
            invokestatic io.vertx.core.net.impl.VertxHandler.safeBuffer:(Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBufAllocator;)Lio/netty/buffer/ByteBuf;
            astore 8 /* newBuf */
        start local 8 // io.netty.buffer.ByteBuf newBuf
        19: .line 945
            aload 7 /* publish */
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishMessage.variableHeader:()Lio/netty/handler/codec/mqtt/MqttPublishVariableHeader;
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishVariableHeader.packetId:()I
        20: .line 946
            aload 7 /* publish */
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishMessage.fixedHeader:()Lio/netty/handler/codec/mqtt/MqttFixedHeader;
            invokevirtual io.netty.handler.codec.mqtt.MqttFixedHeader.qosLevel:()Lio/netty/handler/codec/mqtt/MqttQoS;
        21: .line 947
            aload 7 /* publish */
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishMessage.fixedHeader:()Lio/netty/handler/codec/mqtt/MqttFixedHeader;
            invokevirtual io.netty.handler.codec.mqtt.MqttFixedHeader.isDup:()Z
        22: .line 948
            aload 7 /* publish */
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishMessage.fixedHeader:()Lio/netty/handler/codec/mqtt/MqttFixedHeader;
            invokevirtual io.netty.handler.codec.mqtt.MqttFixedHeader.isRetain:()Z
        23: .line 949
            aload 7 /* publish */
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishMessage.variableHeader:()Lio/netty/handler/codec/mqtt/MqttPublishVariableHeader;
            invokevirtual io.netty.handler.codec.mqtt.MqttPublishVariableHeader.topicName:()Ljava/lang/String;
        24: .line 950
            aload 8 /* newBuf */
        25: .line 944
            invokestatic io.vertx.mqtt.messages.MqttPublishMessage.create:(ILio/netty/handler/codec/mqtt/MqttQoS;ZZLjava/lang/String;Lio/netty/buffer/ByteBuf;)Lio/vertx/mqtt/messages/MqttPublishMessage;
            astore 9 /* mqttPublishMessage */
        start local 9 // io.vertx.mqtt.messages.MqttPublishMessage mqttPublishMessage
        26: .line 951
            aload 0 /* this */
            aload 9 /* mqttPublishMessage */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.handlePublish:(Lio/vertx/mqtt/messages/MqttPublishMessage;)V
        27: .line 952
            goto 49
        end local 9 // io.vertx.mqtt.messages.MqttPublishMessage mqttPublishMessage
        end local 8 // io.netty.buffer.ByteBuf newBuf
        end local 7 // io.netty.handler.codec.mqtt.MqttPublishMessage publish
        28: .line 955
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* mqttMessage */
            invokevirtual io.netty.handler.codec.mqtt.MqttMessage.variableHeader:()Ljava/lang/Object;
            checkcast io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.messageId:()I
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.handlePuback:(I)V
        29: .line 956
            goto 49
        30: .line 959
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* mqttMessage */
            invokevirtual io.netty.handler.codec.mqtt.MqttMessage.variableHeader:()Ljava/lang/Object;
            checkcast io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.messageId:()I
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.handlePubrec:(I)V
        31: .line 960
            goto 49
        32: .line 963
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* mqttMessage */
            invokevirtual io.netty.handler.codec.mqtt.MqttMessage.variableHeader:()Ljava/lang/Object;
            checkcast io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.messageId:()I
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.handlePubrel:(I)V
        33: .line 964
            goto 49
        34: .line 967
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* mqttMessage */
            invokevirtual io.netty.handler.codec.mqtt.MqttMessage.variableHeader:()Ljava/lang/Object;
            checkcast io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.messageId:()I
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.handlePubcomp:(I)V
        35: .line 968
            goto 49
        36: .line 972
      StackMap locals:
      StackMap stack:
            aload 3 /* mqttMessage */
            checkcast io.netty.handler.codec.mqtt.MqttSubAckMessage
            astore 10 /* unsuback */
        start local 10 // io.netty.handler.codec.mqtt.MqttSubAckMessage unsuback
        37: .line 975
            aload 10 /* unsuback */
            invokevirtual io.netty.handler.codec.mqtt.MqttSubAckMessage.variableHeader:()Lio/netty/handler/codec/mqtt/MqttMessageIdVariableHeader;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.messageId:()I
        38: .line 976
            aload 10 /* unsuback */
            invokevirtual io.netty.handler.codec.mqtt.MqttSubAckMessage.payload:()Lio/netty/handler/codec/mqtt/MqttSubAckPayload;
            invokevirtual io.netty.handler.codec.mqtt.MqttSubAckPayload.grantedQoSLevels:()Ljava/util/List;
        39: .line 974
            invokestatic io.vertx.mqtt.messages.MqttSubAckMessage.create:(ILjava/util/List;)Lio/vertx/mqtt/messages/MqttSubAckMessage;
            astore 11 /* mqttSubAckMessage */
        start local 11 // io.vertx.mqtt.messages.MqttSubAckMessage mqttSubAckMessage
        40: .line 977
            aload 0 /* this */
            aload 11 /* mqttSubAckMessage */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.handleSuback:(Lio/vertx/mqtt/messages/MqttSubAckMessage;)V
        41: .line 978
            goto 49
        end local 11 // io.vertx.mqtt.messages.MqttSubAckMessage mqttSubAckMessage
        end local 10 // io.netty.handler.codec.mqtt.MqttSubAckMessage unsuback
        42: .line 981
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* mqttMessage */
            invokevirtual io.netty.handler.codec.mqtt.MqttMessage.variableHeader:()Ljava/lang/Object;
            checkcast io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.messageId:()I
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.handleUnsuback:(I)V
        43: .line 982
            goto 49
        44: .line 985
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.handlePingresp:()V
        45: .line 986
            goto 49
        46: .line 990
      StackMap locals:
      StackMap stack:
            aload 1 /* chctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            new java.lang.Exception
            dup
            new java.lang.StringBuilder
            dup
            ldc "Wrong message type "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* msg */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.Exception.<init>:(Ljava/lang/String;)V
            invokeinterface io.netty.channel.ChannelPipeline.fireExceptionCaught:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPipeline;
            pop
        end local 4 // io.netty.handler.codec.DecoderResult result
        end local 3 // io.netty.handler.codec.mqtt.MqttMessage mqttMessage
        47: .line 994
            goto 49
        48: .line 996
      StackMap locals:
      StackMap stack:
            aload 1 /* chctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            new java.lang.Exception
            dup
            ldc "Wrong message type"
            invokespecial java.lang.Exception.<init>:(Ljava/lang/String;)V
            invokeinterface io.netty.channel.ChannelPipeline.fireExceptionCaught:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPipeline;
            pop
        49: .line 998
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Object msg
        end local 1 // io.netty.channel.ChannelHandlerContext chctx
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   50     0                this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   50     1               chctx  Lio/netty/channel/ChannelHandlerContext;
            0   50     2                 msg  Ljava/lang/Object;
            2   47     3         mqttMessage  Lio/netty/handler/codec/mqtt/MqttMessage;
            3   47     4              result  Lio/netty/handler/codec/DecoderResult;
           12   17     5             connack  Lio/netty/handler/codec/mqtt/MqttConnAckMessage;
           15   17     6  mqttConnAckMessage  Lio/vertx/mqtt/messages/MqttConnAckMessage;
           18   28     7             publish  Lio/netty/handler/codec/mqtt/MqttPublishMessage;
           19   28     8              newBuf  Lio/netty/buffer/ByteBuf;
           26   28     9  mqttPublishMessage  Lio/vertx/mqtt/messages/MqttPublishMessage;
           37   42    10            unsuback  Lio/netty/handler/codec/mqtt/MqttSubAckMessage;
           40   42    11   mqttSubAckMessage  Lio/vertx/mqtt/messages/MqttSubAckMessage;
    MethodParameters:
       Name  Flags
      chctx  
      msg    

  private void handlePingresp();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 1005
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.pings:Ljava/util/Deque;
            invokeinterface java.util.Deque.poll:()Ljava/lang/Object;
            checkcast io.vertx.mqtt.impl.MqttClientImpl$Ping
            astore 1 /* ping */
        start local 1 // io.vertx.mqtt.impl.MqttClientImpl$Ping ping
         1: .line 1006
            aload 1 /* ping */
            ifnull 3
         2: .line 1007
            aload 1 /* ping */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl$Ping.ack:()V
         3: .line 1010
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl$Ping
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.pingResponseHandler:()Lio/vertx/core/Handler;
            astore 2 /* handler */
        start local 2 // io.vertx.core.Handler handler
         4: .line 1011
            aload 2 /* handler */
            ifnull 6
         5: .line 1012
            aload 2 /* handler */
            aconst_null
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         6: .line 1014
      StackMap locals: io.vertx.core.Handler
      StackMap stack:
            return
        end local 2 // io.vertx.core.Handler handler
        end local 1 // io.vertx.mqtt.impl.MqttClientImpl$Ping ping
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lio/vertx/mqtt/impl/MqttClientImpl;
            1    7     1     ping  Lio/vertx/mqtt/impl/MqttClientImpl$Ping;
            4    7     2  handler  Lio/vertx/core/Handler<Ljava/lang/Void;>;

  private void handleUnsuback(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int unsubackMessageId
         0: .line 1023
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.unsubscribeCompletionHandler:()Lio/vertx/core/Handler;
            astore 2 /* handler */
        start local 2 // io.vertx.core.Handler handler
         1: .line 1024
            aload 2 /* handler */
            ifnull 3
         2: .line 1025
            aload 2 /* handler */
            iload 1 /* unsubackMessageId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         3: .line 1027
      StackMap locals: io.vertx.core.Handler
      StackMap stack:
            return
        end local 2 // io.vertx.core.Handler handler
        end local 1 // int unsubackMessageId
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    4     0               this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    4     1  unsubackMessageId  I
            1    4     2            handler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
    MethodParameters:
                   Name  Flags
      unsubackMessageId  

  private void handlePuback(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int pubackMessageId
         0: .line 1036
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 1038
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.qos1outbound:Ljava/util/HashMap;
            iload 1 /* pubackMessageId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
            astore 3 /* removedPacket */
        start local 3 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket removedPacket
         2: .line 1040
            aload 3 /* removedPacket */
            ifnonnull 9
         3: .line 1041
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Received PUBACK packet without having related PUBLISH packet in storage"
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
         4: .line 1043
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishCompletionUnknownPacketIdHandler:()Lio/vertx/core/Handler;
            astore 4 /* handler */
        start local 4 // io.vertx.core.Handler handler
         5: .line 1044
            aload 4 /* handler */
            ifnull 7
         6: .line 1045
            aload 4 /* handler */
            iload 1 /* pubackMessageId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         7: .line 1047
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket io.vertx.core.Handler
      StackMap stack:
            aload 2
            monitorexit
         8: return
        end local 4 // io.vertx.core.Handler handler
         9: .line 1049
      StackMap locals:
      StackMap stack:
            aload 3 /* removedPacket */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket.cancelTimer:()Z
            pop
        10: .line 1050
            aload 0 /* this */
            dup
            getfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
            iconst_1
            isub
            putfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
        end local 3 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket removedPacket
        11: .line 1036
            aload 2
            monitorexit
        12: goto 15
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
        13: aload 2
            monitorexit
        14: athrow
        15: .line 1052
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishCompletionHandler:()Lio/vertx/core/Handler;
            astore 2 /* handler */
        start local 2 // io.vertx.core.Handler handler
        16: .line 1053
            aload 2 /* handler */
            ifnull 18
        17: .line 1054
            aload 2 /* handler */
            iload 1 /* pubackMessageId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        18: .line 1056
      StackMap locals: io.vertx.core.Handler
      StackMap stack:
            return
        end local 2 // io.vertx.core.Handler handler
        end local 1 // int pubackMessageId
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   19     0             this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   19     1  pubackMessageId  I
            2   11     3    removedPacket  Lio/vertx/mqtt/impl/MqttClientImpl$ExpiringPacket;
            5    9     4          handler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
           16   19     2          handler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
      Exception table:
        from    to  target  type
           1     8      13  any
           9    12      13  any
          13    14      13  any
    MethodParameters:
                 Name  Flags
      pubackMessageId  

  private void handlePubackTimeout(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int packetId
         0: .line 1060
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         1: .line 1061
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.qos1outbound:Ljava/util/HashMap;
            iload 1 /* packetId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
            astore 2 /* expiredMessage */
        start local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
         2: .line 1063
            aload 2 /* expiredMessage */
            ifnonnull 6
         3: .line 1065
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "PUBLISH expiration timer fired but QoS 1 message has already been PUBACKed by server"
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
         4: .line 1066
            aload 3
            monitorexit
         5: return
         6: .line 1060
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack:
            aload 3
            monitorexit
         7: goto 10
        end local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
         8: aload 3
            monitorexit
         9: athrow
        start local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
        10: .line 1069
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
      StackMap stack:
            aload 0 /* this */
            dup
            getfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
            iconst_1
            isub
            putfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
        11: .line 1070
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishCompletionExpirationHandler:()Lio/vertx/core/Handler;
            astore 3 /* handler */
        start local 3 // io.vertx.core.Handler handler
        12: .line 1071
            aload 3 /* handler */
            ifnull 14
        13: .line 1072
            aload 3 /* handler */
            aload 2 /* expiredMessage */
            getfield io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket.packetId:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        14: .line 1074
      StackMap locals: io.vertx.core.Handler
      StackMap stack:
            return
        end local 3 // io.vertx.core.Handler handler
        end local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
        end local 1 // int packetId
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   15     0            this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   15     1        packetId  I
            2    8     2  expiredMessage  Lio/vertx/mqtt/impl/MqttClientImpl$ExpiringPacket;
           10   15     2  expiredMessage  Lio/vertx/mqtt/impl/MqttClientImpl$ExpiringPacket;
           12   15     3         handler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
      Exception table:
        from    to  target  type
           1     5       8  any
           6     7       8  any
           8     9       8  any
    MethodParameters:
          Name  Flags
      packetId  

  private void handlePubcomp(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int pubcompMessageId
         0: .line 1083
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 1084
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.qos2outbound:Ljava/util/HashMap;
            iload 1 /* pubcompMessageId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
            astore 3 /* removedPacket */
        start local 3 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket removedPacket
         2: .line 1086
            aload 3 /* removedPacket */
            ifnonnull 9
         3: .line 1087
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Received PUBCOMP packet without having related PUBREL packet in storage"
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
         4: .line 1088
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishCompletionUnknownPacketIdHandler:()Lio/vertx/core/Handler;
            astore 4 /* handler */
        start local 4 // io.vertx.core.Handler handler
         5: .line 1089
            aload 4 /* handler */
            ifnull 7
         6: .line 1090
            aload 4 /* handler */
            iload 1 /* pubcompMessageId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         7: .line 1092
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket io.vertx.core.Handler
      StackMap stack:
            aload 2
            monitorexit
         8: return
        end local 4 // io.vertx.core.Handler handler
         9: .line 1094
      StackMap locals:
      StackMap stack:
            aload 3 /* removedPacket */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket.cancelTimer:()Z
            pop
        10: .line 1095
            aload 0 /* this */
            dup
            getfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
            iconst_1
            isub
            putfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
        end local 3 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket removedPacket
        11: .line 1083
            aload 2
            monitorexit
        12: goto 15
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
        13: aload 2
            monitorexit
        14: athrow
        15: .line 1097
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishCompletionHandler:()Lio/vertx/core/Handler;
            astore 2 /* handler */
        start local 2 // io.vertx.core.Handler handler
        16: .line 1098
            aload 2 /* handler */
            ifnull 18
        17: .line 1099
            aload 2 /* handler */
            iload 1 /* pubcompMessageId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        18: .line 1101
      StackMap locals: io.vertx.core.Handler
      StackMap stack:
            return
        end local 2 // io.vertx.core.Handler handler
        end local 1 // int pubcompMessageId
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   19     0              this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   19     1  pubcompMessageId  I
            2   11     3     removedPacket  Lio/vertx/mqtt/impl/MqttClientImpl$ExpiringPacket;
            5    9     4           handler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
           16   19     2           handler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
      Exception table:
        from    to  target  type
           1     8      13  any
           9    12      13  any
          13    14      13  any
    MethodParameters:
                  Name  Flags
      pubcompMessageId  

  private void handlePubcompTimeout(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int packetId
         0: .line 1105
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         1: .line 1106
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.qos2outbound:Ljava/util/HashMap;
            iload 1 /* packetId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
            astore 2 /* expiredMessage */
        start local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
         2: .line 1108
            aload 2 /* expiredMessage */
            ifnonnull 6
         3: .line 1109
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "PUBCOMP expiration timer fired but QoS 2 message has already been PUBCOMPed by server"
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
         4: .line 1110
            aload 3
            monitorexit
         5: return
         6: .line 1105
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack:
            aload 3
            monitorexit
         7: goto 10
        end local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
         8: aload 3
            monitorexit
         9: athrow
        start local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
        10: .line 1113
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
      StackMap stack:
            aload 0 /* this */
            dup
            getfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
            iconst_1
            isub
            putfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
        11: .line 1114
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishCompletionExpirationHandler:()Lio/vertx/core/Handler;
            astore 3 /* handler */
        start local 3 // io.vertx.core.Handler handler
        12: .line 1115
            aload 3 /* handler */
            ifnull 14
        13: .line 1116
            aload 3 /* handler */
            aload 2 /* expiredMessage */
            getfield io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket.packetId:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        14: .line 1118
      StackMap locals: io.vertx.core.Handler
      StackMap stack:
            return
        end local 3 // io.vertx.core.Handler handler
        end local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
        end local 1 // int packetId
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   15     0            this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   15     1        packetId  I
            2    8     2  expiredMessage  Lio/vertx/mqtt/impl/MqttClientImpl$ExpiringPacket;
           10   15     2  expiredMessage  Lio/vertx/mqtt/impl/MqttClientImpl$ExpiringPacket;
           12   15     3         handler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
      Exception table:
        from    to  target  type
           1     5       8  any
           6     7       8  any
           8     9       8  any
    MethodParameters:
          Name  Flags
      packetId  

  private void handlePubrec(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int pubrecMessageId
         0: .line 1127
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 1128
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.qos2outbound:Ljava/util/HashMap;
            iload 1 /* pubrecMessageId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
            astore 3 /* removedPacket */
        start local 3 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket removedPacket
         2: .line 1130
            aload 3 /* removedPacket */
            ifnonnull 9
         3: .line 1131
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Received PUBREC packet without having related PUBLISH packet in storage"
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
         4: .line 1132
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishCompletionUnknownPacketIdHandler:()Lio/vertx/core/Handler;
            astore 4 /* handler */
        start local 4 // io.vertx.core.Handler handler
         5: .line 1133
            aload 4 /* handler */
            ifnull 7
         6: .line 1134
            aload 4 /* handler */
            iload 1 /* pubrecMessageId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         7: .line 1136
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket io.vertx.core.Handler
      StackMap stack:
            aload 2
            monitorexit
         8: return
        end local 4 // io.vertx.core.Handler handler
         9: .line 1138
      StackMap locals:
      StackMap stack:
            aload 3 /* removedPacket */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket.cancelTimer:()Z
            pop
        end local 3 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket removedPacket
        10: .line 1127
            aload 2
            monitorexit
        11: goto 14
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
        12: aload 2
            monitorexit
        13: athrow
        14: .line 1140
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* pubrecMessageId */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishRelease:(I)V
        15: .line 1141
            return
        end local 1 // int pubrecMessageId
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   16     0             this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   16     1  pubrecMessageId  I
            2   10     3    removedPacket  Lio/vertx/mqtt/impl/MqttClientImpl$ExpiringPacket;
            5    9     4          handler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
      Exception table:
        from    to  target  type
           1     8      12  any
           9    11      12  any
          12    13      12  any
    MethodParameters:
                 Name  Flags
      pubrecMessageId  

  private void handlePubrecTimeout(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int packetId
         0: .line 1145
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         1: .line 1146
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.qos2outbound:Ljava/util/HashMap;
            iload 1 /* packetId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
            astore 2 /* expiredMessage */
        start local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
         2: .line 1148
            aload 2 /* expiredMessage */
            ifnonnull 6
         3: .line 1149
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "PUBREC expiration timer fired but QoS 2 message has already been PUBRECed by server"
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
         4: .line 1150
            aload 3
            monitorexit
         5: return
         6: .line 1145
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack:
            aload 3
            monitorexit
         7: goto 10
        end local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
         8: aload 3
            monitorexit
         9: athrow
        start local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
        10: .line 1153
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket
      StackMap stack:
            aload 0 /* this */
            dup
            getfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
            iconst_1
            isub
            putfield io.vertx.mqtt.impl.MqttClientImpl.countInflightQueue:I
        11: .line 1154
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishCompletionExpirationHandler:()Lio/vertx/core/Handler;
            astore 3 /* handler */
        start local 3 // io.vertx.core.Handler handler
        12: .line 1155
            aload 3 /* handler */
            ifnull 14
        13: .line 1156
            aload 3 /* handler */
            aload 2 /* expiredMessage */
            getfield io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket.packetId:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        14: .line 1158
      StackMap locals: io.vertx.core.Handler
      StackMap stack:
            return
        end local 3 // io.vertx.core.Handler handler
        end local 2 // io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket expiredMessage
        end local 1 // int packetId
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   15     0            this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   15     1        packetId  I
            2    8     2  expiredMessage  Lio/vertx/mqtt/impl/MqttClientImpl$ExpiringPacket;
           10   15     2  expiredMessage  Lio/vertx/mqtt/impl/MqttClientImpl$ExpiringPacket;
           12   15     3         handler  Lio/vertx/core/Handler<Ljava/lang/Integer;>;
      Exception table:
        from    to  target  type
           1     5       8  any
           6     7       8  any
           8     9       8  any
    MethodParameters:
          Name  Flags
      packetId  

  private void handleSuback(io.vertx.mqtt.messages.MqttSubAckMessage);
    descriptor: (Lio/vertx/mqtt/messages/MqttSubAckMessage;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.mqtt.messages.MqttSubAckMessage msg
         0: .line 1167
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.subscribeCompletionHandler:()Lio/vertx/core/Handler;
            astore 2 /* handler */
        start local 2 // io.vertx.core.Handler handler
         1: .line 1168
            aload 2 /* handler */
            ifnull 3
         2: .line 1169
            aload 2 /* handler */
            aload 1 /* msg */
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         3: .line 1171
      StackMap locals: io.vertx.core.Handler
      StackMap stack:
            return
        end local 2 // io.vertx.core.Handler handler
        end local 1 // io.vertx.mqtt.messages.MqttSubAckMessage msg
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    4     1      msg  Lio/vertx/mqtt/messages/MqttSubAckMessage;
            1    4     2  handler  Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttSubAckMessage;>;
    MethodParameters:
      Name  Flags
      msg   

  private void handlePublish(io.vertx.mqtt.messages.MqttPublishMessage);
    descriptor: (Lio/vertx/mqtt/messages/MqttPublishMessage;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.mqtt.messages.MqttPublishMessage msg
         0: .line 1181
            invokestatic io.vertx.mqtt.impl.MqttClientImpl.$SWITCH_TABLE$io$netty$handler$codec$mqtt$MqttQoS:()[I
            aload 1 /* msg */
            invokeinterface io.vertx.mqtt.messages.MqttPublishMessage.qosLevel:()Lio/netty/handler/codec/mqtt/MqttQoS;
            invokevirtual io.netty.handler.codec.mqtt.MqttQoS.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 1
                    2: 5
                    3: 10
              default: 11
          }
         1: .line 1184
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishHandler:()Lio/vertx/core/Handler;
            astore 2 /* handler */
        start local 2 // io.vertx.core.Handler handler
         2: .line 1185
            aload 2 /* handler */
            ifnull 11
         3: .line 1186
            aload 2 /* handler */
            aload 1 /* msg */
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         4: .line 1188
            goto 11
        end local 2 // io.vertx.core.Handler handler
         5: .line 1191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* msg */
            invokeinterface io.vertx.mqtt.messages.MqttPublishMessage.messageId:()I
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishAcknowledge:(I)V
         6: .line 1192
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishHandler:()Lio/vertx/core/Handler;
            astore 2 /* handler */
        start local 2 // io.vertx.core.Handler handler
         7: .line 1193
            aload 2 /* handler */
            ifnull 11
         8: .line 1194
            aload 2 /* handler */
            aload 1 /* msg */
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         9: .line 1196
            goto 11
        end local 2 // io.vertx.core.Handler handler
        10: .line 1199
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* msg */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishReceived:(Lio/vertx/mqtt/messages/MqttPublishMessage;)V
        11: .line 1203
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.vertx.mqtt.messages.MqttPublishMessage msg
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   12     1      msg  Lio/vertx/mqtt/messages/MqttPublishMessage;
            2    5     2  handler  Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttPublishMessage;>;
            7   10     2  handler  Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttPublishMessage;>;
    MethodParameters:
      Name  Flags
      msg   

  private void handlePubrel(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // int pubrelMessageId
         0: .line 1212
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         1: .line 1213
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.qos2inbound:Ljava/util/HashMap;
            iload 1 /* pubrelMessageId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual java.util.HashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.vertx.mqtt.messages.MqttMessage
            astore 2 /* message */
        start local 2 // io.vertx.mqtt.messages.MqttMessage message
         2: .line 1215
            aload 2 /* message */
            ifnonnull 6
         3: .line 1216
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Received PUBREL packet without having related PUBREC packet in storage"
            invokeinterface io.vertx.core.impl.logging.Logger.warn:(Ljava/lang/Object;)V
         4: .line 1217
            aload 3
            monitorexit
         5: return
         6: .line 1219
      StackMap locals: io.vertx.mqtt.messages.MqttMessage io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack:
            aload 0 /* this */
            iload 1 /* pubrelMessageId */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishComplete:(I)V
         7: .line 1212
            aload 3
            monitorexit
         8: goto 11
        end local 2 // io.vertx.mqtt.messages.MqttMessage message
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
         9: aload 3
            monitorexit
        10: athrow
        start local 2 // io.vertx.mqtt.messages.MqttMessage message
        11: .line 1221
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl int io.vertx.mqtt.messages.MqttMessage
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.publishHandler:()Lio/vertx/core/Handler;
            astore 3 /* handler */
        start local 3 // io.vertx.core.Handler handler
        12: .line 1222
            aload 3 /* handler */
            ifnull 14
        13: .line 1223
            aload 3 /* handler */
            aload 2 /* message */
            checkcast io.vertx.mqtt.messages.MqttPublishMessage
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
        14: .line 1225
      StackMap locals: io.vertx.core.Handler
      StackMap stack:
            return
        end local 3 // io.vertx.core.Handler handler
        end local 2 // io.vertx.mqtt.messages.MqttMessage message
        end local 1 // int pubrelMessageId
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   15     0             this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   15     1  pubrelMessageId  I
            2    9     2          message  Lio/vertx/mqtt/messages/MqttMessage;
           11   15     2          message  Lio/vertx/mqtt/messages/MqttMessage;
           12   15     3          handler  Lio/vertx/core/Handler<Lio/vertx/mqtt/messages/MqttPublishMessage;>;
      Exception table:
        from    to  target  type
           1     5       9  any
           6     8       9  any
           9    10       9  any
    MethodParameters:
                 Name  Flags
      pubrelMessageId  

  private void handleConnack(io.vertx.mqtt.messages.MqttConnAckMessage);
    descriptor: (Lio/vertx/mqtt/messages/MqttConnAckMessage;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // io.vertx.mqtt.messages.MqttConnAckMessage msg
         0: .line 1234
            aload 1 /* msg */
            invokeinterface io.vertx.mqtt.messages.MqttConnAckMessage.code:()Lio/netty/handler/codec/mqtt/MqttConnectReturnCode;
            getstatic io.netty.handler.codec.mqtt.MqttConnectReturnCode.CONNECTION_ACCEPTED:Lio/netty/handler/codec/mqtt/MqttConnectReturnCode;
            if_acmpne 1
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CONNECTED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            pop
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSING:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            pop
         2: .line 1237
      StackMap locals:
      StackMap stack:
            aload 1 /* msg */
            invokeinterface io.vertx.mqtt.messages.MqttConnAckMessage.code:()Lio/netty/handler/codec/mqtt/MqttConnectReturnCode;
            getstatic io.netty.handler.codec.mqtt.MqttConnectReturnCode.CONNECTION_ACCEPTED:Lio/netty/handler/codec/mqtt/MqttConnectReturnCode;
            if_acmpne 15
         3: .line 1240
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         4: .line 1241
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.connection:Lio/vertx/core/net/impl/NetSocketInternal;
            astore 2 /* connection */
        start local 2 // io.vertx.core.net.impl.NetSocketInternal connection
         5: .line 1242
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.connectPromise:Lio/vertx/core/Promise;
            astore 3 /* connectPromise */
        start local 3 // io.vertx.core.Promise connectPromise
         6: .line 1243
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.connectPromise:Lio/vertx/core/Promise;
         7: .line 1244
            aload 0 /* this */
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CONNECTED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            putfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
         8: .line 1240
            aload 4
            monitorexit
         9: goto 12
        end local 3 // io.vertx.core.Promise connectPromise
        end local 2 // io.vertx.core.net.impl.NetSocketInternal connection
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.mqtt.messages.MqttConnAckMessage top top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
        10: aload 4
            monitorexit
        11: athrow
        start local 2 // io.vertx.core.net.impl.NetSocketInternal connection
        start local 3 // io.vertx.core.Promise connectPromise
        12: .line 1246
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.mqtt.messages.MqttConnAckMessage io.vertx.core.net.impl.NetSocketInternal io.vertx.core.Promise
      StackMap stack:
            aload 2 /* connection */
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/mqtt/impl/MqttClientImpl;)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/mqtt/impl/MqttClientImpl.lambda$15(Ljava/lang/Void;)V (7)
                  (Ljava/lang/Void;)V
            invokeinterface io.vertx.core.net.impl.NetSocketInternal.closeHandler:(Lio/vertx/core/Handler;)Lio/vertx/core/net/NetSocket;
            pop
        13: .line 1247
            aload 3 /* connectPromise */
            aload 1 /* msg */
            invokeinterface io.vertx.core.Promise.complete:(Ljava/lang/Object;)V
        end local 3 // io.vertx.core.Promise connectPromise
        end local 2 // io.vertx.core.net.impl.NetSocketInternal connection
        14: .line 1248
            goto 35
        15: .line 1253
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 6
            monitorenter
        16: .line 1254
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.connectPromise:Lio/vertx/core/Promise;
            astore 2 /* connectPromise */
        start local 2 // io.vertx.core.Promise connectPromise
        17: .line 1255
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.disconnectPromise:Lio/vertx/core/Promise;
            astore 3 /* disconnectPromise */
        start local 3 // io.vertx.core.Promise disconnectPromise
        18: .line 1256
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.connection:Lio/vertx/core/net/impl/NetSocketInternal;
            astore 4 /* connection */
        start local 4 // io.vertx.core.net.impl.NetSocketInternal connection
        19: .line 1257
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.client:Lio/vertx/core/net/NetClient;
            astore 5 /* client */
        start local 5 // io.vertx.core.net.NetClient client
        20: .line 1258
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.connectPromise:Lio/vertx/core/Promise;
        21: .line 1259
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.disconnectPromise:Lio/vertx/core/Promise;
        22: .line 1260
            aload 0 /* this */
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            putfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
        23: .line 1261
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.connection:Lio/vertx/core/net/impl/NetSocketInternal;
        24: .line 1262
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.client:Lio/vertx/core/net/NetClient;
        25: .line 1253
            aload 6
            monitorexit
        26: goto 29
        end local 5 // io.vertx.core.net.NetClient client
        end local 4 // io.vertx.core.net.impl.NetSocketInternal connection
        end local 3 // io.vertx.core.Promise disconnectPromise
        end local 2 // io.vertx.core.Promise connectPromise
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.mqtt.messages.MqttConnAckMessage top top top top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
        27: aload 6
            monitorexit
        28: athrow
        start local 2 // io.vertx.core.Promise connectPromise
        start local 3 // io.vertx.core.Promise disconnectPromise
        start local 4 // io.vertx.core.net.impl.NetSocketInternal connection
        start local 5 // io.vertx.core.net.NetClient client
        29: .line 1264
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.mqtt.messages.MqttConnAckMessage io.vertx.core.Promise io.vertx.core.Promise io.vertx.core.net.impl.NetSocketInternal io.vertx.core.net.NetClient
      StackMap stack:
            aload 4 /* connection */
            aconst_null
            invokeinterface io.vertx.core.net.impl.NetSocketInternal.closeHandler:(Lio/vertx/core/Handler;)Lio/vertx/core/net/NetSocket;
            pop
        30: .line 1265
            new io.vertx.mqtt.MqttConnectionException
            dup
            aload 1 /* msg */
            invokeinterface io.vertx.mqtt.messages.MqttConnAckMessage.code:()Lio/netty/handler/codec/mqtt/MqttConnectReturnCode;
            invokespecial io.vertx.mqtt.MqttConnectionException.<init>:(Lio/netty/handler/codec/mqtt/MqttConnectReturnCode;)V
            astore 6 /* exception */
        start local 6 // io.vertx.mqtt.MqttConnectionException exception
        31: .line 1266
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Connection refused by the server - code: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* msg */
            invokeinterface io.vertx.mqtt.messages.MqttConnAckMessage.code:()Lio/netty/handler/codec/mqtt/MqttConnectReturnCode;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface io.vertx.core.impl.logging.Logger.error:(Ljava/lang/Object;)V
        32: .line 1267
            aload 2 /* connectPromise */
            aload 6 /* exception */
            invokeinterface io.vertx.core.Promise.fail:(Ljava/lang/Throwable;)V
        33: .line 1268
            aload 3 /* disconnectPromise */
            invokeinterface io.vertx.core.Promise.complete:()V
        34: .line 1269
            aload 5 /* client */
            invokeinterface io.vertx.core.net.NetClient.close:()Lio/vertx/core/Future;
            pop
        end local 6 // io.vertx.mqtt.MqttConnectionException exception
        end local 5 // io.vertx.core.net.NetClient client
        end local 4 // io.vertx.core.net.impl.NetSocketInternal connection
        end local 3 // io.vertx.core.Promise disconnectPromise
        end local 2 // io.vertx.core.Promise connectPromise
        35: .line 1271
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.mqtt.messages.MqttConnAckMessage
      StackMap stack:
            return
        end local 1 // io.vertx.mqtt.messages.MqttConnAckMessage msg
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   36     0               this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   36     1                msg  Lio/vertx/mqtt/messages/MqttConnAckMessage;
            5   10     2         connection  Lio/vertx/core/net/impl/NetSocketInternal;
           12   14     2         connection  Lio/vertx/core/net/impl/NetSocketInternal;
            6   10     3     connectPromise  Lio/vertx/core/Promise<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
           12   14     3     connectPromise  Lio/vertx/core/Promise<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
           17   27     2     connectPromise  Lio/vertx/core/Promise<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
           29   35     2     connectPromise  Lio/vertx/core/Promise<Lio/vertx/mqtt/messages/MqttConnAckMessage;>;
           18   27     3  disconnectPromise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
           29   35     3  disconnectPromise  Lio/vertx/core/Promise<Ljava/lang/Void;>;
           19   27     4         connection  Lio/vertx/core/net/impl/NetSocketInternal;
           29   35     4         connection  Lio/vertx/core/net/impl/NetSocketInternal;
           20   27     5             client  Lio/vertx/core/net/NetClient;
           29   35     5             client  Lio/vertx/core/net/NetClient;
           31   35     6          exception  Lio/vertx/mqtt/MqttConnectionException;
      Exception table:
        from    to  target  type
           4     9      10  any
          10    11      10  any
          16    26      27  any
          27    28      27  any
    MethodParameters:
      Name  Flags
      msg   

  private void handleException(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.Throwable t
         0: .line 1280
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.exceptionHandler:()Lio/vertx/core/Handler;
            astore 2 /* handler */
        start local 2 // io.vertx.core.Handler handler
         1: .line 1281
            aload 2 /* handler */
            ifnull 3
         2: .line 1282
            aload 2 /* handler */
            aload 1 /* t */
            invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
         3: .line 1284
      StackMap locals: io.vertx.core.Handler
      StackMap stack:
            return
        end local 2 // io.vertx.core.Handler handler
        end local 1 // java.lang.Throwable t
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    4     1        t  Ljava/lang/Throwable;
            1    4     2  handler  Lio/vertx/core/Handler<Ljava/lang/Throwable;>;
    MethodParameters:
      Name  Flags
      t     

  private java.lang.String generateRandomClientId();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
         0: .line 1290
            invokestatic java.util.UUID.randomUUID:()Ljava/util/UUID;
            invokevirtual java.util.UUID.toString:()Ljava/lang/String;
            areturn
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;

  private boolean isValidTopicName(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.String topicName
         0: .line 1300
            aload 0 /* this */
            aload 1 /* topicName */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.isValidStringSizeInUTF8:(Ljava/lang/String;)Z
            ifne 2
         1: .line 1301
            iconst_0
            ireturn
         2: .line 1304
      StackMap locals:
      StackMap stack:
            getstatic io.vertx.mqtt.impl.MqttClientImpl.validTopicNamePattern:Ljava/util/regex/Pattern;
            aload 1 /* topicName */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 2 /* matcher */
        start local 2 // java.util.regex.Matcher matcher
         3: .line 1305
            aload 2 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ireturn
        end local 2 // java.util.regex.Matcher matcher
        end local 1 // java.lang.String topicName
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    4     1  topicName  Ljava/lang/String;
            3    4     2    matcher  Ljava/util/regex/Matcher;
    MethodParameters:
           Name  Flags
      topicName  

  private boolean isValidTopicFilter(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.String topicFilter
         0: .line 1315
            aload 0 /* this */
            aload 1 /* topicFilter */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.isValidStringSizeInUTF8:(Ljava/lang/String;)Z
            ifne 2
         1: .line 1316
            iconst_0
            ireturn
         2: .line 1319
      StackMap locals:
      StackMap stack:
            getstatic io.vertx.mqtt.impl.MqttClientImpl.validTopicFilterPattern:Ljava/util/regex/Pattern;
            aload 1 /* topicFilter */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 2 /* matcher */
        start local 2 // java.util.regex.Matcher matcher
         3: .line 1320
            aload 2 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ireturn
        end local 2 // java.util.regex.Matcher matcher
        end local 1 // java.lang.String topicFilter
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    4     1  topicFilter  Ljava/lang/String;
            3    4     2      matcher  Ljava/util/regex/Matcher;
    MethodParameters:
             Name  Flags
      topicFilter  

  private boolean isValidStringSizeInUTF8(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.String string
         0: .line 1331
            aload 1 /* string */
            ldc "UTF-8"
            invokevirtual java.lang.String.getBytes:(Ljava/lang/String;)[B
            arraylength
            istore 2 /* length */
        start local 2 // int length
         1: .line 1332
            iload 2 /* length */
            iconst_1
            if_icmplt 2
            iload 2 /* length */
            ldc 65535
            if_icmpgt 2
            iconst_1
            ireturn
      StackMap locals: int
      StackMap stack:
         2: iconst_0
         3: ireturn
        end local 2 // int length
         4: .line 1333
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String
      StackMap stack: java.io.UnsupportedEncodingException
            astore 2 /* e */
        start local 2 // java.io.UnsupportedEncodingException e
         5: .line 1334
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "UTF-8 charset is not supported"
            aload 2 /* e */
            invokeinterface io.vertx.core.impl.logging.Logger.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 2 // java.io.UnsupportedEncodingException e
         6: .line 1337
            iconst_0
            ireturn
        end local 1 // java.lang.String string
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    7     1  string  Ljava/lang/String;
            1    4     2  length  I
            5    6     2       e  Ljava/io/UnsupportedEncodingException;
      Exception table:
        from    to  target  type
           0     3       4  Class java.io.UnsupportedEncodingException
    MethodParameters:
        Name  Flags
      string  

  static int[] $SWITCH_TABLE$io$vertx$mqtt$impl$MqttClientImpl$Status();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 81
            getstatic io.vertx.mqtt.impl.MqttClientImpl.$SWITCH_TABLE$io$vertx$mqtt$impl$MqttClientImpl$Status:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic io.vertx.mqtt.impl.MqttClientImpl$Status.values:()[Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl$Status.ordinal:()I
            iconst_1
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSING:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl$Status.ordinal:()I
            iconst_4
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CONNECTED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl$Status.ordinal:()I
            iconst_3
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CONNECTING:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl$Status.ordinal:()I
            iconst_2
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            dup
            putstatic io.vertx.mqtt.impl.MqttClientImpl.$SWITCH_TABLE$io$vertx$mqtt$impl$MqttClientImpl$Status:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError

  static int[] $SWITCH_TABLE$io$netty$handler$codec$mqtt$MqttQoS();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 81
            getstatic io.vertx.mqtt.impl.MqttClientImpl.$SWITCH_TABLE$io$netty$handler$codec$mqtt$MqttQoS:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic io.netty.handler.codec.mqtt.MqttQoS.values:()[Lio/netty/handler/codec/mqtt/MqttQoS;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttQoS.AT_LEAST_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
            invokevirtual io.netty.handler.codec.mqtt.MqttQoS.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttQoS.AT_MOST_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
            invokevirtual io.netty.handler.codec.mqtt.MqttQoS.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttQoS.EXACTLY_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
            invokevirtual io.netty.handler.codec.mqtt.MqttQoS.ordinal:()I
            iconst_3
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttQoS.FAILURE:Lio/netty/handler/codec/mqtt/MqttQoS;
            invokevirtual io.netty.handler.codec.mqtt.MqttQoS.ordinal:()I
            iconst_4
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            dup
            putstatic io.vertx.mqtt.impl.MqttClientImpl.$SWITCH_TABLE$io$netty$handler$codec$mqtt$MqttQoS:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError

  static int[] $SWITCH_TABLE$io$netty$handler$codec$mqtt$MqttMessageType();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 81
            getstatic io.vertx.mqtt.impl.MqttClientImpl.$SWITCH_TABLE$io$netty$handler$codec$mqtt$MqttMessageType:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic io.netty.handler.codec.mqtt.MqttMessageType.values:()[Lio/netty/handler/codec/mqtt/MqttMessageType;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.CONNACK:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.CONNECT:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.DISCONNECT:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            bipush 14
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PINGREQ:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            bipush 12
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PINGRESP:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            bipush 13
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PUBACK:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            iconst_4
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PUBCOMP:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            bipush 7
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PUBLISH:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            iconst_3
            iastore
        24: goto 26
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        25: pop
      StackMap locals:
      StackMap stack:
        26: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PUBREC:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            iconst_5
            iastore
        27: goto 29
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        28: pop
      StackMap locals:
      StackMap stack:
        29: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.PUBREL:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            bipush 6
            iastore
        30: goto 32
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        31: pop
      StackMap locals:
      StackMap stack:
        32: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.SUBACK:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            bipush 9
            iastore
        33: goto 35
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        34: pop
      StackMap locals:
      StackMap stack:
        35: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.SUBSCRIBE:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            bipush 8
            iastore
        36: goto 38
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        37: pop
      StackMap locals:
      StackMap stack:
        38: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.UNSUBACK:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            bipush 11
            iastore
        39: goto 41
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        40: pop
      StackMap locals:
      StackMap stack:
        41: aload 0
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.UNSUBSCRIBE:Lio/netty/handler/codec/mqtt/MqttMessageType;
            invokevirtual io.netty.handler.codec.mqtt.MqttMessageType.ordinal:()I
            bipush 10
            iastore
        42: goto 44
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        43: pop
      StackMap locals:
      StackMap stack:
        44: aload 0
            dup
            putstatic io.vertx.mqtt.impl.MqttClientImpl.$SWITCH_TABLE$io$netty$handler$codec$mqtt$MqttMessageType:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
          23    24      25  Class java.lang.NoSuchFieldError
          26    27      28  Class java.lang.NoSuchFieldError
          29    30      31  Class java.lang.NoSuchFieldError
          32    33      34  Class java.lang.NoSuchFieldError
          35    36      37  Class java.lang.NoSuchFieldError
          38    39      40  Class java.lang.NoSuchFieldError
          41    42      43  Class java.lang.NoSuchFieldError

  private void lambda$0(java.lang.String, int, io.vertx.core.net.NetClient, java.lang.String, io.vertx.core.impl.future.PromiseInternal, io.vertx.core.impl.future.PromiseInternal, java.lang.Void);
    descriptor: (Ljava/lang/String;ILio/vertx/core/net/NetClient;Ljava/lang/String;Lio/vertx/core/impl/future/PromiseInternal;Lio/vertx/core/impl/future/PromiseInternal;Ljava/lang/Void;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=10, locals=8, args_size=8
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 7 // java.lang.Void v
         0: .line 228
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Trying to connect with %s:%d"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1
            aastore
            dup
            iconst_1
            iload 2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface io.vertx.core.impl.logging.Logger.debug:(Ljava/lang/Object;)V
         1: .line 230
            aload 3
            iload 2
            aload 1
            aload 4
            aload 0 /* this */
            aload 1
            iload 2
            aload 3
            aload 5
            aload 6
            invokedynamic handle(Lio/vertx/mqtt/impl/MqttClientImpl;Ljava/lang/String;ILio/vertx/core/net/NetClient;Lio/vertx/core/impl/future/PromiseInternal;Lio/vertx/core/impl/future/PromiseInternal;)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/mqtt/impl/MqttClientImpl.lambda$1(Ljava/lang/String;ILio/vertx/core/net/NetClient;Lio/vertx/core/impl/future/PromiseInternal;Lio/vertx/core/impl/future/PromiseInternal;Lio/vertx/core/AsyncResult;)V (7)
                  (Lio/vertx/core/AsyncResult;)V
            invokeinterface io.vertx.core.net.NetClient.connect:(ILjava/lang/String;Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/net/NetClient;
            pop
         2: .line 323
            return
        end local 7 // java.lang.Void v
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    3     7     v  Ljava/lang/Void;

  private boolean lambda$7(java.util.Map$Entry);
    descriptor: (Ljava/util/Map$Entry;)Z
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.util.Map$Entry e
         0: .line 552
            aload 0 /* this */
            aload 1 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.isValidTopicFilter:(Ljava/lang/String;)Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 1 // java.util.Map$Entry e
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    3     1     e  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/Integer;>;

  private static io.netty.handler.codec.mqtt.MqttTopicSubscription lambda$10(java.util.Map$Entry);
    descriptor: (Ljava/util/Map$Entry;)Lio/netty/handler/codec/mqtt/MqttTopicSubscription;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.util.Map$Entry e
         0: .line 572
            new io.netty.handler.codec.mqtt.MqttTopicSubscription
            dup
            aload 0 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aload 0 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            invokestatic io.netty.handler.codec.mqtt.MqttQoS.valueOf:(I)Lio/netty/handler/codec/mqtt/MqttQoS;
            invokespecial io.netty.handler.codec.mqtt.MqttTopicSubscription.<init>:(Ljava/lang/String;Lio/netty/handler/codec/mqtt/MqttQoS;)V
            areturn
        end local 0 // java.util.Map$Entry e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     e  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/Integer;>;

  private void lambda$11(java.lang.Long);
    descriptor: (Ljava/lang/Long;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.Long _id
         0: .line 712
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.disconnect:()Lio/vertx/core/Future;
            pop
         1: .line 713
            return
        end local 1 // java.lang.Long _id
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    2     1   _id  Ljava/lang/Long;

  private void lambda$12(java.lang.Void);
    descriptor: (Ljava/lang/Void;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.Void v
         0: .line 719
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.ping:()Lio/vertx/mqtt/MqttClient;
            return
        end local 1 // java.lang.Void v
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    1     1     v  Ljava/lang/Void;

  private static void lambda$14(io.vertx.mqtt.impl.MqttClientImpl$Ping);
    descriptor: (Lio/vertx/mqtt/impl/MqttClientImpl$Ping;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl$Ping ping
         0: .line 889
            aload 0 /* ping */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl$Ping.cancel:()V
         1: .line 890
            return
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl$Ping ping
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  ping  Lio/vertx/mqtt/impl/MqttClientImpl$Ping;

  private void lambda$15(java.lang.Void);
    descriptor: (Ljava/lang/Void;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 1 // java.lang.Void v
         0: .line 1246
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.handleClosed:()V
            return
        end local 1 // java.lang.Void v
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    1     1     v  Ljava/lang/Void;

  private void lambda$1(java.lang.String, int, io.vertx.core.net.NetClient, io.vertx.core.impl.future.PromiseInternal, io.vertx.core.impl.future.PromiseInternal, io.vertx.core.AsyncResult);
    descriptor: (Ljava/lang/String;ILio/vertx/core/net/NetClient;Lio/vertx/core/impl/future/PromiseInternal;Lio/vertx/core/impl/future/PromiseInternal;Lio/vertx/core/AsyncResult;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=11, locals=14, args_size=7
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 6 // io.vertx.core.AsyncResult done
         0: .line 233
            aload 6 /* done */
            invokeinterface io.vertx.core.AsyncResult.failed:()Z
            ifeq 15
         1: .line 234
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Can't connect to %s:%d"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1
            aastore
            dup
            iconst_1
            iload 2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 6 /* done */
            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 235
            aload 0 /* this */
            dup
            astore 7
            monitorenter
         3: .line 236
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.connectPromise:Lio/vertx/core/Promise;
         4: .line 237
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.disconnectPromise:Lio/vertx/core/Promise;
         5: .line 238
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.ctx:Lio/vertx/core/impl/ContextInternal;
         6: .line 239
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.client:Lio/vertx/core/net/NetClient;
         7: .line 235
            aload 7
            monitorexit
         8: goto 11
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
         9: aload 7
            monitorexit
        10: athrow
        11: .line 241
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface io.vertx.core.net.NetClient.close:()Lio/vertx/core/Future;
            pop
        12: .line 242
            aload 4
            aload 6 /* done */
            invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
            invokeinterface io.vertx.core.impl.future.PromiseInternal.fail:(Ljava/lang/Throwable;)V
        13: .line 243
            aload 5
            invokeinterface io.vertx.core.impl.future.PromiseInternal.complete:()V
        14: .line 244
            goto 77
        15: .line 245
      StackMap locals:
      StackMap stack:
            getstatic io.vertx.mqtt.impl.MqttClientImpl.log:Lio/vertx/core/impl/logging/Logger;
            ldc "Connection with %s:%d established successfully"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1
            aastore
            dup
            iconst_1
            iload 2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface io.vertx.core.impl.logging.Logger.info:(Ljava/lang/Object;)V
        16: .line 248
            aload 0 /* this */
            dup
            astore 8
            monitorenter
        17: .line 249
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSING:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            if_acmpne 18
            iconst_1
            goto 19
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack:
        18: iconst_0
      StackMap locals:
      StackMap stack: int
        19: dup
            istore 7 /* closing */
        start local 7 // boolean closing
        20: ifeq 25
        21: .line 250
            aload 0 /* this */
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            putfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
        22: .line 251
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.client:Lio/vertx/core/net/NetClient;
        23: .line 252
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.connectPromise:Lio/vertx/core/Promise;
        24: .line 253
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.disconnectPromise:Lio/vertx/core/Promise;
        25: .line 248
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult int io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack:
            aload 8
            monitorexit
        26: goto 29
        end local 7 // boolean closing
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult top io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
        27: aload 8
            monitorexit
        28: athrow
        start local 7 // boolean closing
        29: .line 257
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult int
      StackMap stack:
            aload 6 /* done */
            invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
            checkcast io.vertx.core.net.impl.NetSocketInternal
            astore 8 /* soi */
        start local 8 // io.vertx.core.net.impl.NetSocketInternal soi
        30: .line 259
            iload 7 /* closing */
            ifeq 35
        31: .line 260
            aload 8 /* soi */
            invokeinterface io.vertx.core.net.impl.NetSocketInternal.close:()Lio/vertx/core/Future;
            pop
        32: .line 261
            aload 4
            ldc "Disconnected"
            invokeinterface io.vertx.core.impl.future.PromiseInternal.fail:(Ljava/lang/String;)V
        33: .line 262
            aload 5
            invokeinterface io.vertx.core.impl.future.PromiseInternal.complete:()V
        34: .line 263
            return
        35: .line 266
      StackMap locals: io.vertx.core.net.impl.NetSocketInternal
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.isAutoGeneratedClientId:()Z
            ifeq 37
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getClientId:()Ljava/lang/String;
            ifnull 36
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getClientId:()Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 37
        36: .line 267
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            aload 0 /* this */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.generateRandomClientId:()Ljava/lang/String;
            invokevirtual io.vertx.mqtt.MqttClientOptions.setClientId:(Ljava/lang/String;)Lio/vertx/mqtt/MqttClientOptions;
            pop
        37: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* soi */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.initChannel:(Lio/vertx/core/net/impl/NetSocketInternal;)V
        38: .line 271
            aload 0 /* this */
            dup
            astore 9
            monitorenter
        39: .line 272
            aload 0 /* this */
            aload 8 /* soi */
            putfield io.vertx.mqtt.impl.MqttClientImpl.connection:Lio/vertx/core/net/impl/NetSocketInternal;
        40: .line 271
            aload 9
            monitorexit
        41: goto 44
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult int io.vertx.core.net.impl.NetSocketInternal io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
        42: aload 9
            monitorexit
        43: athrow
        44: .line 275
      StackMap locals:
      StackMap stack:
            aload 8 /* soi */
            aload 0 /* this */
            aload 8 /* soi */
            invokedynamic handle(Lio/vertx/mqtt/impl/MqttClientImpl;Lio/vertx/core/net/impl/NetSocketInternal;)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/mqtt/impl/MqttClientImpl.lambda$2(Lio/vertx/core/net/impl/NetSocketInternal;Ljava/lang/Object;)V (7)
                  (Ljava/lang/Object;)V
            invokeinterface io.vertx.core.net.impl.NetSocketInternal.messageHandler:(Lio/vertx/core/Handler;)Lio/vertx/core/net/impl/NetSocketInternal;
            pop
        45: .line 276
            aload 8 /* soi */
            aload 0 /* this */
            aload 3
            aload 4
            aload 5
            invokedynamic handle(Lio/vertx/mqtt/impl/MqttClientImpl;Lio/vertx/core/net/NetClient;Lio/vertx/core/impl/future/PromiseInternal;Lio/vertx/core/impl/future/PromiseInternal;)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/mqtt/impl/MqttClientImpl.lambda$3(Lio/vertx/core/net/NetClient;Lio/vertx/core/impl/future/PromiseInternal;Lio/vertx/core/impl/future/PromiseInternal;Ljava/lang/Void;)V (7)
                  (Ljava/lang/Void;)V
            invokeinterface io.vertx.core.net.impl.NetSocketInternal.closeHandler:(Lio/vertx/core/Handler;)Lio/vertx/core/net/NetSocket;
            pop
        46: .line 289
            aload 8 /* soi */
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/mqtt/impl/MqttClientImpl;)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/mqtt/impl/MqttClientImpl.handleException(Ljava/lang/Throwable;)V (7)
                  (Ljava/lang/Throwable;)V
            invokeinterface io.vertx.core.net.impl.NetSocketInternal.exceptionHandler:(Lio/vertx/core/Handler;)Lio/vertx/core/net/NetSocket;
            pop
        47: .line 291
            new io.netty.handler.codec.mqtt.MqttFixedHeader
            dup
            getstatic io.netty.handler.codec.mqtt.MqttMessageType.CONNECT:Lio/netty/handler/codec/mqtt/MqttMessageType;
        48: .line 292
            iconst_0
        49: .line 293
            getstatic io.netty.handler.codec.mqtt.MqttQoS.AT_MOST_ONCE:Lio/netty/handler/codec/mqtt/MqttQoS;
        50: .line 294
            iconst_0
        51: .line 295
            iconst_0
        52: .line 291
            invokespecial io.netty.handler.codec.mqtt.MqttFixedHeader.<init>:(Lio/netty/handler/codec/mqtt/MqttMessageType;ZLio/netty/handler/codec/mqtt/MqttQoS;ZI)V
            astore 10 /* fixedHeader */
        start local 10 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        53: .line 297
            new io.netty.handler.codec.mqtt.MqttConnectVariableHeader
            dup
        54: .line 298
            ldc "MQTT"
        55: .line 299
            iconst_4
        56: .line 300
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.hasUsername:()Z
        57: .line 301
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.hasPassword:()Z
        58: .line 302
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.isWillRetain:()Z
        59: .line 303
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getWillQoS:()I
        60: .line 304
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.isWillFlag:()Z
        61: .line 305
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.isCleanSession:()Z
        62: .line 306
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getKeepAliveInterval:()I
        63: .line 297
            invokespecial io.netty.handler.codec.mqtt.MqttConnectVariableHeader.<init>:(Ljava/lang/String;IZZZIZZI)V
            astore 11 /* variableHeader */
        start local 11 // io.netty.handler.codec.mqtt.MqttConnectVariableHeader variableHeader
        64: .line 309
            new io.netty.handler.codec.mqtt.MqttConnectPayload
            dup
        65: .line 310
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getClientId:()Ljava/lang/String;
            ifnonnull 66
            ldc ""
            goto 67
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult int io.vertx.core.net.impl.NetSocketInternal top io.netty.handler.codec.mqtt.MqttFixedHeader io.netty.handler.codec.mqtt.MqttConnectVariableHeader
      StackMap stack: new 64 new 64
        66: aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getClientId:()Ljava/lang/String;
        67: .line 311
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult int io.vertx.core.net.impl.NetSocketInternal top io.netty.handler.codec.mqtt.MqttFixedHeader io.netty.handler.codec.mqtt.MqttConnectVariableHeader
      StackMap stack: new 64 new 64 java.lang.String
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getWillTopic:()Ljava/lang/String;
        68: .line 312
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getWillMessage:()Ljava/lang/String;
            ifnull 69
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getWillMessage:()Ljava/lang/String;
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            goto 70
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult int io.vertx.core.net.impl.NetSocketInternal top io.netty.handler.codec.mqtt.MqttFixedHeader io.netty.handler.codec.mqtt.MqttConnectVariableHeader
      StackMap stack: new 64 new 64 java.lang.String java.lang.String
        69: aconst_null
        70: .line 313
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult int io.vertx.core.net.impl.NetSocketInternal top io.netty.handler.codec.mqtt.MqttFixedHeader io.netty.handler.codec.mqtt.MqttConnectVariableHeader
      StackMap stack: new 64 new 64 java.lang.String java.lang.String byte[]
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.hasUsername:()Z
            ifeq 71
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getUsername:()Ljava/lang/String;
            goto 72
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult int io.vertx.core.net.impl.NetSocketInternal top io.netty.handler.codec.mqtt.MqttFixedHeader io.netty.handler.codec.mqtt.MqttConnectVariableHeader
      StackMap stack: new 64 new 64 java.lang.String java.lang.String byte[]
        71: aconst_null
        72: .line 314
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult int io.vertx.core.net.impl.NetSocketInternal top io.netty.handler.codec.mqtt.MqttFixedHeader io.netty.handler.codec.mqtt.MqttConnectVariableHeader
      StackMap stack: new 64 new 64 java.lang.String java.lang.String byte[] java.lang.String
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.hasPassword:()Z
            ifeq 73
            aload 0 /* this */
            getfield io.vertx.mqtt.impl.MqttClientImpl.options:Lio/vertx/mqtt/MqttClientOptions;
            invokevirtual io.vertx.mqtt.MqttClientOptions.getPassword:()Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:()[B
            goto 74
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult int io.vertx.core.net.impl.NetSocketInternal top io.netty.handler.codec.mqtt.MqttFixedHeader io.netty.handler.codec.mqtt.MqttConnectVariableHeader
      StackMap stack: new 64 new 64 java.lang.String java.lang.String byte[] java.lang.String
        73: aconst_null
        74: .line 309
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult int io.vertx.core.net.impl.NetSocketInternal top io.netty.handler.codec.mqtt.MqttFixedHeader io.netty.handler.codec.mqtt.MqttConnectVariableHeader
      StackMap stack: new 64 new 64 java.lang.String java.lang.String byte[] java.lang.String byte[]
            invokespecial io.netty.handler.codec.mqtt.MqttConnectPayload.<init>:(Ljava/lang/String;Ljava/lang/String;[BLjava/lang/String;[B)V
            astore 12 /* payload */
        start local 12 // io.netty.handler.codec.mqtt.MqttConnectPayload payload
        75: .line 317
            aload 10 /* fixedHeader */
            aload 11 /* variableHeader */
            aload 12 /* payload */
            invokestatic io.netty.handler.codec.mqtt.MqttMessageFactory.newMessage:(Lio/netty/handler/codec/mqtt/MqttFixedHeader;Ljava/lang/Object;Ljava/lang/Object;)Lio/netty/handler/codec/mqtt/MqttMessage;
            astore 13 /* connect */
        start local 13 // io.netty.handler.codec.mqtt.MqttMessage connect
        76: .line 319
            aload 0 /* this */
            aload 13 /* connect */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.write:(Lio/netty/handler/codec/mqtt/MqttMessage;)Lio/vertx/core/Future;
            pop
        end local 13 // io.netty.handler.codec.mqtt.MqttMessage connect
        end local 12 // io.netty.handler.codec.mqtt.MqttConnectPayload payload
        end local 11 // io.netty.handler.codec.mqtt.MqttConnectVariableHeader variableHeader
        end local 10 // io.netty.handler.codec.mqtt.MqttFixedHeader fixedHeader
        end local 8 // io.vertx.core.net.impl.NetSocketInternal soi
        end local 7 // boolean closing
        77: .line 322
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl java.lang.String int io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal io.vertx.core.AsyncResult
      StackMap stack:
            return
        end local 6 // io.vertx.core.AsyncResult done
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   78     0            this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   78     6            done  Lio/vertx/core/AsyncResult<Lio/vertx/core/net/NetSocket;>;
           20   27     7         closing  Z
           29   77     7         closing  Z
           30   77     8             soi  Lio/vertx/core/net/impl/NetSocketInternal;
           53   77    10     fixedHeader  Lio/netty/handler/codec/mqtt/MqttFixedHeader;
           64   77    11  variableHeader  Lio/netty/handler/codec/mqtt/MqttConnectVariableHeader;
           75   77    12         payload  Lio/netty/handler/codec/mqtt/MqttConnectPayload;
           76   77    13         connect  Lio/netty/handler/codec/mqtt/MqttMessage;
      Exception table:
        from    to  target  type
           3     8       9  any
           9    10       9  any
          17    26      27  any
          27    28      27  any
          39    41      42  any
          42    43      42  any

  private void lambda$2(io.vertx.core.net.impl.NetSocketInternal, java.lang.Object);
    descriptor: (Lio/vertx/core/net/impl/NetSocketInternal;Ljava/lang/Object;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 2 // java.lang.Object msg
         0: .line 275
            aload 0 /* this */
            aload 1
            invokeinterface io.vertx.core.net.impl.NetSocketInternal.channelHandlerContext:()Lio/netty/channel/ChannelHandlerContext;
            aload 2 /* msg */
            invokevirtual io.vertx.mqtt.impl.MqttClientImpl.handleMessage:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V
            return
        end local 2 // java.lang.Object msg
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0    1     2   msg  Ljava/lang/Object;

  private void lambda$3(io.vertx.core.net.NetClient, io.vertx.core.impl.future.PromiseInternal, io.vertx.core.impl.future.PromiseInternal, java.lang.Void);
    descriptor: (Lio/vertx/core/net/NetClient;Lio/vertx/core/impl/future/PromiseInternal;Lio/vertx/core/impl/future/PromiseInternal;Ljava/lang/Void;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=6, args_size=5
        start local 0 // io.vertx.mqtt.impl.MqttClientImpl this
        start local 4 // java.lang.Void v2
         0: .line 277
            aload 1
            invokeinterface io.vertx.core.net.NetClient.close:()Lio/vertx/core/Future;
            pop
         1: .line 278
            aload 0 /* this */
            dup
            astore 5
            monitorenter
         2: .line 279
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.connection:Lio/vertx/core/net/impl/NetSocketInternal;
         3: .line 280
            aload 0 /* this */
            getstatic io.vertx.mqtt.impl.MqttClientImpl$Status.CLOSED:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
            putfield io.vertx.mqtt.impl.MqttClientImpl.status:Lio/vertx/mqtt/impl/MqttClientImpl$Status;
         4: .line 281
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.connectPromise:Lio/vertx/core/Promise;
         5: .line 282
            aload 0 /* this */
            aconst_null
            putfield io.vertx.mqtt.impl.MqttClientImpl.disconnectPromise:Lio/vertx/core/Promise;
         6: .line 278
            aload 5
            monitorexit
         7: goto 10
      StackMap locals: io.vertx.mqtt.impl.MqttClientImpl io.vertx.core.net.NetClient io.vertx.core.impl.future.PromiseInternal io.vertx.core.impl.future.PromiseInternal java.lang.Void io.vertx.mqtt.impl.MqttClientImpl
      StackMap stack: java.lang.Throwable
         8: aload 5
            monitorexit
         9: athrow
        10: .line 284
      StackMap locals:
      StackMap stack:
            aload 2
            ldc "Closed"
            invokeinterface io.vertx.core.impl.future.PromiseInternal.fail:(Ljava/lang/String;)V
        11: .line 285
            aload 3
            invokeinterface io.vertx.core.impl.future.PromiseInternal.complete:()V
        12: .line 286
            return
        end local 4 // java.lang.Void v2
        end local 0 // io.vertx.mqtt.impl.MqttClientImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lio/vertx/mqtt/impl/MqttClientImpl;
            0   13     4    v2  Ljava/lang/Void;
      Exception table:
        from    to  target  type
           2     7       8  any
           8     9       8  any
}
SourceFile: "MqttClientImpl.java"
NestMembers:
  io.vertx.mqtt.impl.MqttClientImpl$1  io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket  io.vertx.mqtt.impl.MqttClientImpl$Ping  io.vertx.mqtt.impl.MqttClientImpl$Status
InnerClasses:
  io.vertx.mqtt.impl.MqttClientImpl$1
  private ExpiringPacket = io.vertx.mqtt.impl.MqttClientImpl$ExpiringPacket of io.vertx.mqtt.impl.MqttClientImpl
  private Ping = io.vertx.mqtt.impl.MqttClientImpl$Ping of io.vertx.mqtt.impl.MqttClientImpl
  private final Status = io.vertx.mqtt.impl.MqttClientImpl$Status of io.vertx.mqtt.impl.MqttClientImpl
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract Entry = java.util.Map$Entry of java.util.Map