public abstract class io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler extends io.netty.channel.SimpleChannelInboundHandler<java.lang.Object>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler
  super_class: io.netty.channel.SimpleChannelInboundHandler
{
  public static final java.lang.String ID;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "websocket-handler"

  protected final org.slf4j.Logger LOG;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final io.micronaut.core.bind.ArgumentBinderRegistry<io.micronaut.websocket.bind.WebSocketState> webSocketBinder;
    descriptor: Lio/micronaut/core/bind/ArgumentBinderRegistry;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Lio/micronaut/core/bind/ArgumentBinderRegistry<Lio/micronaut/websocket/bind/WebSocketState;>;

  protected final java.util.Map<java.lang.String, java.lang.Object> uriVariables;
    descriptor: Ljava/util/Map;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;

  protected final io.micronaut.websocket.context.WebSocketBean<?> webSocketBean;
    descriptor: Lio/micronaut/websocket/context/WebSocketBean;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Lio/micronaut/websocket/context/WebSocketBean<*>;

  protected final io.micronaut.http.HttpRequest<?> originatingRequest;
    descriptor: Lio/micronaut/http/HttpRequest;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Lio/micronaut/http/HttpRequest<*>;

  protected final io.micronaut.inject.MethodExecutionHandle<?, ?> messageHandler;
    descriptor: Lio/micronaut/inject/MethodExecutionHandle;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Lio/micronaut/inject/MethodExecutionHandle<**>;

  protected final io.micronaut.http.netty.websocket.NettyRxWebSocketSession session;
    descriptor: Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry;
    descriptor: Lio/micronaut/http/codec/MediaTypeCodecRegistry;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final io.netty.handler.codec.http.websocketx.WebSocketVersion webSocketVersion;
    descriptor: Lio/netty/handler/codec/http/websocketx/WebSocketVersion;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final io.micronaut.http.netty.websocket.WebSocketSessionRepository webSocketSessionRepository;
    descriptor: Lio/micronaut/http/netty/websocket/WebSocketSessionRepository;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private final io.micronaut.core.type.Argument<?> bodyArgument;
    descriptor: Lio/micronaut/core/type/Argument;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lio/micronaut/core/type/Argument<*>;

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

  protected void <init>(io.netty.channel.ChannelHandlerContext, io.micronaut.http.bind.RequestBinderRegistry, io.micronaut.http.codec.MediaTypeCodecRegistry, io.micronaut.websocket.context.WebSocketBean<?>, io.micronaut.http.HttpRequest<?>, java.util.Map<java.lang.String, java.lang.Object>, io.netty.handler.codec.http.websocketx.WebSocketVersion, io.micronaut.http.netty.websocket.WebSocketSessionRepository);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/http/bind/RequestBinderRegistry;Lio/micronaut/http/codec/MediaTypeCodecRegistry;Lio/micronaut/websocket/context/WebSocketBean;Lio/micronaut/http/HttpRequest;Ljava/util/Map;Lio/netty/handler/codec/http/websocketx/WebSocketVersion;Lio/micronaut/http/netty/websocket/WebSocketSessionRepository;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=16, args_size=9
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.micronaut.http.bind.RequestBinderRegistry binderRegistry
        start local 3 // io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry
        start local 4 // io.micronaut.websocket.context.WebSocketBean webSocketBean
        start local 5 // io.micronaut.http.HttpRequest request
        start local 6 // java.util.Map uriVariables
        start local 7 // io.netty.handler.codec.http.websocketx.WebSocketVersion version
        start local 8 // io.micronaut.http.netty.websocket.WebSocketSessionRepository webSocketSessionRepository
         0: .line 101
            aload 0 /* this */
            invokespecial io.netty.channel.SimpleChannelInboundHandler.<init>:()V
         1: .line 75
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
         2: .line 87
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.closed:Ljava/util/concurrent/atomic/AtomicBoolean;
         3: .line 110
            aload 0 /* this */
            aload 8 /* webSocketSessionRepository */
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketSessionRepository:Lio/micronaut/http/netty/websocket/WebSocketSessionRepository;
         4: .line 111
            aload 0 /* this */
            new io.micronaut.websocket.bind.WebSocketStateBinderRegistry
            dup
            aload 2 /* binderRegistry */
            invokespecial io.micronaut.websocket.bind.WebSocketStateBinderRegistry.<init>:(Lio/micronaut/http/bind/RequestBinderRegistry;)V
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBinder:Lio/micronaut/core/bind/ArgumentBinderRegistry;
         5: .line 112
            aload 0 /* this */
            aload 6 /* uriVariables */
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.uriVariables:Ljava/util/Map;
         6: .line 113
            aload 0 /* this */
            aload 4 /* webSocketBean */
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBean:Lio/micronaut/websocket/context/WebSocketBean;
         7: .line 114
            aload 0 /* this */
            aload 5 /* request */
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.originatingRequest:Lio/micronaut/http/HttpRequest;
         8: .line 115
            aload 0 /* this */
            aload 4 /* webSocketBean */
            invokeinterface io.micronaut.websocket.context.WebSocketBean.messageMethod:()Ljava/util/Optional;
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.micronaut.inject.MethodExecutionHandle
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.messageHandler:Lio/micronaut/inject/MethodExecutionHandle;
         9: .line 116
            aload 0 /* this */
            aload 3 /* mediaTypeCodecRegistry */
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.mediaTypeCodecRegistry:Lio/micronaut/http/codec/MediaTypeCodecRegistry;
        10: .line 117
            aload 0 /* this */
            aload 7 /* version */
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketVersion:Lio/netty/handler/codec/http/websocketx/WebSocketVersion;
        11: .line 118
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.createWebSocketSession:(Lio/netty/channel/ChannelHandlerContext;)Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
        12: .line 120
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            ifnull 55
        13: .line 122
            new io.micronaut.core.bind.DefaultExecutableBinder
            dup
            invokespecial io.micronaut.core.bind.DefaultExecutableBinder.<init>:()V
            astore 9 /* binder */
        start local 9 // io.micronaut.core.bind.ExecutableBinder binder
        14: .line 124
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.messageHandler:Lio/micronaut/inject/MethodExecutionHandle;
            ifnull 26
        15: .line 125
            aload 9 /* binder */
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.messageHandler:Lio/micronaut/inject/MethodExecutionHandle;
            invokeinterface io.micronaut.inject.MethodExecutionHandle.getExecutableMethod:()Lio/micronaut/inject/ExecutableMethod;
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBinder:Lio/micronaut/core/bind/ArgumentBinderRegistry;
            new io.micronaut.websocket.bind.WebSocketState
            dup
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.originatingRequest:Lio/micronaut/http/HttpRequest;
            invokespecial io.micronaut.websocket.bind.WebSocketState.<init>:(Lio/micronaut/websocket/WebSocketSession;Lio/micronaut/http/HttpRequest;)V
            invokeinterface io.micronaut.core.bind.ExecutableBinder.tryBind:(Lio/micronaut/core/type/Executable;Lio/micronaut/core/bind/ArgumentBinderRegistry;Ljava/lang/Object;)Lio/micronaut/core/bind/BoundExecutable;
            astore 10 /* bound */
        start local 10 // io.micronaut.core.bind.BoundExecutable bound
        16: .line 126
            aload 10 /* bound */
            invokeinterface io.micronaut.core.bind.BoundExecutable.getUnboundArguments:()Ljava/util/List;
            astore 11 /* unboundArguments */
        start local 11 // java.util.List unboundArguments
        17: .line 128
            aload 11 /* unboundArguments */
            invokeinterface java.util.List.size:()I
            iconst_1
            if_icmpne 20
        18: .line 129
            aload 0 /* this */
            aload 11 /* unboundArguments */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.micronaut.core.type.Argument
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.bodyArgument:Lio/micronaut/core/type/Argument;
        19: .line 130
            goto 27
        20: .line 131
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext io.micronaut.http.bind.RequestBinderRegistry io.micronaut.http.codec.MediaTypeCodecRegistry io.micronaut.websocket.context.WebSocketBean io.micronaut.http.HttpRequest java.util.Map io.netty.handler.codec.http.websocketx.WebSocketVersion io.micronaut.http.netty.websocket.WebSocketSessionRepository io.micronaut.core.bind.ExecutableBinder io.micronaut.core.bind.BoundExecutable java.util.List
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.bodyArgument:Lio/micronaut/core/type/Argument;
        21: .line 132
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 23
        22: .line 133
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "WebSocket @OnMessage method "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* webSocketBean */
            invokeinterface io.micronaut.websocket.context.WebSocketBean.getTarget:()Ljava/lang/Object;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.messageHandler:Lio/micronaut/inject/MethodExecutionHandle;
            invokeinterface io.micronaut.inject.MethodExecutionHandle.getExecutableMethod:()Lio/micronaut/inject/ExecutableMethod;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " should define exactly 1 message parameter, but found 2 possible candidates: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 11 /* unboundArguments */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;)V
        23: .line 136
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            invokevirtual io.micronaut.http.netty.websocket.NettyRxWebSocketSession.isOpen:()Z
            ifeq 27
        24: .line 137
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            getstatic io.micronaut.websocket.CloseReason.INTERNAL_ERROR:Lio/micronaut/websocket/CloseReason;
            invokevirtual io.micronaut.http.netty.websocket.NettyRxWebSocketSession.close:(Lio/micronaut/websocket/CloseReason;)V
        end local 11 // java.util.List unboundArguments
        end local 10 // io.micronaut.core.bind.BoundExecutable bound
        25: .line 140
            goto 27
        26: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.bodyArgument:Lio/micronaut/core/type/Argument;
        27: .line 144
      StackMap locals:
      StackMap stack:
            aload 4 /* webSocketBean */
            invokeinterface io.micronaut.websocket.context.WebSocketBean.openMethod:()Ljava/util/Optional;
            astore 10 /* executionHandle */
        start local 10 // java.util.Optional executionHandle
        28: .line 145
            aload 10 /* executionHandle */
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 56
        29: .line 146
            aload 10 /* executionHandle */
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast io.micronaut.inject.MethodExecutionHandle
            astore 11 /* openMethod */
        start local 11 // io.micronaut.inject.MethodExecutionHandle openMethod
        30: .line 147
            aconst_null
            astore 12 /* boundExecutable */
        start local 12 // io.micronaut.core.bind.BoundExecutable boundExecutable
        31: .line 149
            aload 0 /* this */
            aload 5 /* request */
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBinder:Lio/micronaut/core/bind/ArgumentBinderRegistry;
            aload 11 /* openMethod */
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.bindMethod:(Lio/micronaut/http/HttpRequest;Lio/micronaut/core/bind/ArgumentBinderRegistry;Lio/micronaut/inject/MethodExecutionHandle;Ljava/util/List;)Lio/micronaut/core/bind/BoundExecutable;
            astore 12 /* boundExecutable */
        32: .line 150
            goto 38
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext io.micronaut.http.bind.RequestBinderRegistry io.micronaut.http.codec.MediaTypeCodecRegistry io.micronaut.websocket.context.WebSocketBean io.micronaut.http.HttpRequest java.util.Map io.netty.handler.codec.http.websocketx.WebSocketVersion io.micronaut.http.netty.websocket.WebSocketSessionRepository io.micronaut.core.bind.ExecutableBinder java.util.Optional io.micronaut.inject.MethodExecutionHandle io.micronaut.core.bind.BoundExecutable
      StackMap stack: java.lang.Throwable
        33: astore 13 /* e */
        start local 13 // java.lang.Throwable e
        34: .line 151
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 36
        35: .line 152
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Error Binding method @OnOpen for WebSocket ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* webSocketBean */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 13 /* e */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 13 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        36: .line 155
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            invokevirtual io.micronaut.http.netty.websocket.NettyRxWebSocketSession.isOpen:()Z
            ifeq 38
        37: .line 156
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            getstatic io.micronaut.websocket.CloseReason.INTERNAL_ERROR:Lio/micronaut/websocket/CloseReason;
            invokevirtual io.micronaut.http.netty.websocket.NettyRxWebSocketSession.close:(Lio/micronaut/websocket/CloseReason;)V
        end local 13 // java.lang.Throwable e
        38: .line 160
      StackMap locals:
      StackMap stack:
            aload 12 /* boundExecutable */
            ifnull 56
        39: .line 162
            aload 12 /* boundExecutable */
            astore 13 /* finalBoundExecutable */
        start local 13 // io.micronaut.core.bind.BoundExecutable finalBoundExecutable
        40: .line 163
            aload 0 /* this */
            aload 13 /* finalBoundExecutable */
            aload 11 /* openMethod */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.invokeExecutable:(Lio/micronaut/core/bind/BoundExecutable;Lio/micronaut/inject/MethodExecutionHandle;)Ljava/lang/Object;
            astore 14 /* result */
        start local 14 // java.lang.Object result
        41: .line 164
            aload 14 /* result */
            invokestatic io.micronaut.core.async.publisher.Publishers.isConvertibleToPublisher:(Ljava/lang/Object;)Z
            ifeq 56
        42: .line 165
            aload 0 /* this */
            aload 1 /* ctx */
            aload 14 /* result */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.instrumentPublisher:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)Lio/reactivex/Flowable;
            astore 15 /* flowable */
        start local 15 // io.reactivex.Flowable flowable
        43: .line 166
            aload 15 /* flowable */
        44: .line 167
            invokedynamic accept()Lio/reactivex/functions/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/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler.lambda$0(Ljava/lang/Object;)V (6)
                  (Ljava/lang/Object;)V
        45: .line 169
            aload 0 /* this */
            aload 4 /* webSocketBean */
            invokedynamic accept(Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;Lio/micronaut/websocket/context/WebSocketBean;)Lio/reactivex/functions/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/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler.lambda$1(Lio/micronaut/websocket/context/WebSocketBean;Ljava/lang/Throwable;)V (7)
                  (Ljava/lang/Throwable;)V
        46: .line 177
            invokedynamic run()Lio/reactivex/functions/Action;
              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:
                  ()V
                  io/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler.lambda$2()V (6)
                  ()V
        47: .line 166
            invokevirtual io.reactivex.Flowable.subscribe:(Lio/reactivex/functions/Consumer;Lio/reactivex/functions/Consumer;Lio/reactivex/functions/Action;)Lio/reactivex/disposables/Disposable;
            pop
        end local 15 // io.reactivex.Flowable flowable
        end local 14 // java.lang.Object result
        end local 13 // io.micronaut.core.bind.BoundExecutable finalBoundExecutable
        48: .line 181
            goto 56
      StackMap locals:
      StackMap stack: java.lang.Throwable
        49: astore 13 /* e */
        start local 13 // java.lang.Throwable e
        50: .line 182
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 52
        51: .line 183
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Error Opening WebSocket ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* webSocketBean */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 13 /* e */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 13 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        52: .line 185
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            invokevirtual io.micronaut.http.netty.websocket.NettyRxWebSocketSession.isOpen:()Z
            ifeq 56
        53: .line 186
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            getstatic io.micronaut.websocket.CloseReason.INTERNAL_ERROR:Lio/micronaut/websocket/CloseReason;
            invokevirtual io.micronaut.http.netty.websocket.NettyRxWebSocketSession.close:(Lio/micronaut/websocket/CloseReason;)V
        end local 13 // java.lang.Throwable e
        end local 12 // io.micronaut.core.bind.BoundExecutable boundExecutable
        end local 11 // io.micronaut.inject.MethodExecutionHandle openMethod
        end local 10 // java.util.Optional executionHandle
        end local 9 // io.micronaut.core.bind.ExecutableBinder binder
        54: .line 191
            goto 56
        55: .line 192
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext io.micronaut.http.bind.RequestBinderRegistry io.micronaut.http.codec.MediaTypeCodecRegistry io.micronaut.websocket.context.WebSocketBean io.micronaut.http.HttpRequest java.util.Map io.netty.handler.codec.http.websocketx.WebSocketVersion io.micronaut.http.netty.websocket.WebSocketSessionRepository
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.bodyArgument:Lio/micronaut/core/type/Argument;
        56: .line 194
      StackMap locals:
      StackMap stack:
            return
        end local 8 // io.micronaut.http.netty.websocket.WebSocketSessionRepository webSocketSessionRepository
        end local 7 // io.netty.handler.codec.http.websocketx.WebSocketVersion version
        end local 6 // java.util.Map uriVariables
        end local 5 // io.micronaut.http.HttpRequest request
        end local 4 // io.micronaut.websocket.context.WebSocketBean webSocketBean
        end local 3 // io.micronaut.http.codec.MediaTypeCodecRegistry mediaTypeCodecRegistry
        end local 2 // io.micronaut.http.bind.RequestBinderRegistry binderRegistry
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   57     0                        this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0   57     1                         ctx  Lio/netty/channel/ChannelHandlerContext;
            0   57     2              binderRegistry  Lio/micronaut/http/bind/RequestBinderRegistry;
            0   57     3      mediaTypeCodecRegistry  Lio/micronaut/http/codec/MediaTypeCodecRegistry;
            0   57     4               webSocketBean  Lio/micronaut/websocket/context/WebSocketBean<*>;
            0   57     5                     request  Lio/micronaut/http/HttpRequest<*>;
            0   57     6                uriVariables  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            0   57     7                     version  Lio/netty/handler/codec/http/websocketx/WebSocketVersion;
            0   57     8  webSocketSessionRepository  Lio/micronaut/http/netty/websocket/WebSocketSessionRepository;
           14   54     9                      binder  Lio/micronaut/core/bind/ExecutableBinder<Lio/micronaut/websocket/bind/WebSocketState;>;
           16   25    10                       bound  Lio/micronaut/core/bind/BoundExecutable<**>;
           17   25    11            unboundArguments  Ljava/util/List<Lio/micronaut/core/type/Argument<*>;>;
           28   54    10             executionHandle  Ljava/util/Optional<+Lio/micronaut/inject/MethodExecutionHandle<**>;>;
           30   54    11                  openMethod  Lio/micronaut/inject/MethodExecutionHandle<**>;
           31   54    12             boundExecutable  Lio/micronaut/core/bind/BoundExecutable;
           34   38    13                           e  Ljava/lang/Throwable;
           40   48    13        finalBoundExecutable  Lio/micronaut/core/bind/BoundExecutable;
           41   48    14                      result  Ljava/lang/Object;
           43   48    15                    flowable  Lio/reactivex/Flowable<*>;
           50   54    13                           e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
          31    32      33  Class java.lang.Throwable
          39    48      49  Class java.lang.Throwable
    Signature: (Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/http/bind/RequestBinderRegistry;Lio/micronaut/http/codec/MediaTypeCodecRegistry;Lio/micronaut/websocket/context/WebSocketBean<*>;Lio/micronaut/http/HttpRequest<*>;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;Lio/netty/handler/codec/http/websocketx/WebSocketVersion;Lio/micronaut/http/netty/websocket/WebSocketSessionRepository;)V
    MethodParameters:
                            Name  Flags
      ctx                         
      binderRegistry              
      mediaTypeCodecRegistry      
      webSocketBean               
      request                     
      uriVariables                
      version                     
      webSocketSessionRepository  

  public io.micronaut.core.type.Argument<?> getBodyArgument();
    descriptor: ()Lio/micronaut/core/type/Argument;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
         0: .line 200
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.bodyArgument:Lio/micronaut/core/type/Argument;
            areturn
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
    Signature: ()Lio/micronaut/core/type/Argument<*>;

  public io.micronaut.http.netty.websocket.NettyRxWebSocketSession getSession();
    descriptor: ()Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
         0: .line 207
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            areturn
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;

  public void exceptionCaught(io.netty.channel.ChannelHandlerContext, java.lang.Throwable);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Throwable cause
         0: .line 212
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBean:Lio/micronaut/websocket/context/WebSocketBean;
            invokeinterface io.micronaut.websocket.context.WebSocketBean.errorMethod:()Ljava/util/Optional;
            astore 3 /* opt */
        start local 3 // java.util.Optional opt
         1: .line 214
            aload 3 /* opt */
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 24
         2: .line 215
            aload 3 /* opt */
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast io.micronaut.inject.MethodExecutionHandle
            astore 4 /* errorMethod */
        start local 4 // io.micronaut.inject.MethodExecutionHandle errorMethod
         3: .line 217
            aload 0 /* this */
         4: .line 218
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.originatingRequest:Lio/micronaut/http/HttpRequest;
         5: .line 219
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBinder:Lio/micronaut/core/bind/ArgumentBinderRegistry;
         6: .line 220
            aload 4 /* errorMethod */
         7: .line 221
            aload 2 /* cause */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
         8: .line 217
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.bindMethod:(Lio/micronaut/http/HttpRequest;Lio/micronaut/core/bind/ArgumentBinderRegistry;Lio/micronaut/inject/MethodExecutionHandle;Ljava/util/List;)Lio/micronaut/core/bind/BoundExecutable;
            astore 5 /* boundExecutable */
        start local 5 // io.micronaut.core.bind.BoundExecutable boundExecutable
         9: .line 224
            aload 4 /* errorMethod */
            invokeinterface io.micronaut.inject.MethodExecutionHandle.getTarget:()Ljava/lang/Object;
            astore 6 /* target */
        start local 6 // java.lang.Object target
        10: .line 227
            aload 5 /* boundExecutable */
            aload 6 /* target */
            invokeinterface io.micronaut.core.bind.BoundExecutable.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* result */
        start local 7 // java.lang.Object result
        11: .line 228
            goto 17
        end local 7 // java.lang.Object result
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext java.lang.Throwable java.util.Optional io.micronaut.inject.MethodExecutionHandle io.micronaut.core.bind.BoundExecutable java.lang.Object
      StackMap stack: java.lang.Exception
        12: astore 8 /* e */
        start local 8 // java.lang.Exception e
        13: .line 230
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 15
        14: .line 231
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Error invoking to @OnError handler "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* target */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* errorMethod */
            invokeinterface io.micronaut.inject.MethodExecutionHandle.getExecutableMethod:()Lio/micronaut/inject/ExecutableMethod;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 8 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        15: .line 233
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext java.lang.Throwable java.util.Optional io.micronaut.inject.MethodExecutionHandle io.micronaut.core.bind.BoundExecutable java.lang.Object top java.lang.Exception
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            aload 8 /* e */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.handleUnexpected:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
        16: .line 234
            return
        end local 8 // java.lang.Exception e
        start local 7 // java.lang.Object result
        17: .line 236
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext java.lang.Throwable java.util.Optional io.micronaut.inject.MethodExecutionHandle io.micronaut.core.bind.BoundExecutable java.lang.Object java.lang.Object
      StackMap stack:
            aload 7 /* result */
            invokestatic io.micronaut.core.async.publisher.Publishers.isConvertibleToPublisher:(Ljava/lang/Object;)Z
            ifeq 25
        18: .line 237
            aload 0 /* this */
            aload 1 /* ctx */
            aload 7 /* result */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.instrumentPublisher:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)Lio/reactivex/Flowable;
            astore 8 /* flowable */
        start local 8 // io.reactivex.Flowable flowable
        19: .line 238
            aload 8 /* flowable */
            invokevirtual io.reactivex.Flowable.toList:()Lio/reactivex/Single;
            aload 0 /* this */
            aload 6 /* target */
            aload 4 /* errorMethod */
            aload 1 /* ctx */
            invokedynamic accept(Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;Ljava/lang/Object;Lio/micronaut/inject/MethodExecutionHandle;Lio/netty/channel/ChannelHandlerContext;)Lio/reactivex/functions/BiConsumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)V
                  io/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler.lambda$3(Ljava/lang/Object;Lio/micronaut/inject/MethodExecutionHandle;Lio/netty/channel/ChannelHandlerContext;Ljava/util/List;Ljava/lang/Throwable;)V (7)
                  (Ljava/util/List;Ljava/lang/Throwable;)V
            invokevirtual io.reactivex.Single.subscribe:(Lio/reactivex/functions/BiConsumer;)Lio/reactivex/disposables/Disposable;
            pop
        end local 8 // io.reactivex.Flowable flowable
        end local 7 // java.lang.Object result
        end local 6 // java.lang.Object target
        end local 5 // io.micronaut.core.bind.BoundExecutable boundExecutable
        20: .line 246
            goto 25
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext java.lang.Throwable java.util.Optional io.micronaut.inject.MethodExecutionHandle
      StackMap stack: io.micronaut.core.bind.exceptions.UnsatisfiedArgumentException
        21: pop
        22: .line 247
            aload 0 /* this */
            aload 1 /* ctx */
            aload 2 /* cause */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.handleUnexpected:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
        end local 4 // io.micronaut.inject.MethodExecutionHandle errorMethod
        23: .line 250
            goto 25
        24: .line 251
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            aload 2 /* cause */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.handleUnexpected:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
        25: .line 253
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.Optional opt
        end local 2 // java.lang.Throwable cause
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   26     0             this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0   26     1              ctx  Lio/netty/channel/ChannelHandlerContext;
            0   26     2            cause  Ljava/lang/Throwable;
            1   26     3              opt  Ljava/util/Optional<+Lio/micronaut/inject/MethodExecutionHandle<**>;>;
            3   23     4      errorMethod  Lio/micronaut/inject/MethodExecutionHandle<**>;
            9   20     5  boundExecutable  Lio/micronaut/core/bind/BoundExecutable;
           10   20     6           target  Ljava/lang/Object;
           11   12     7           result  Ljava/lang/Object;
           17   20     7           result  Ljava/lang/Object;
           13   17     8                e  Ljava/lang/Exception;
           19   20     8         flowable  Lio/reactivex/Flowable<*>;
      Exception table:
        from    to  target  type
          10    11      12  Class java.lang.Exception
           3    16      21  Class io.micronaut.core.bind.exceptions.UnsatisfiedArgumentException
          17    20      21  Class io.micronaut.core.bind.exceptions.UnsatisfiedArgumentException
    MethodParameters:
       Name  Flags
      ctx    
      cause  

  public void handlerRemoved(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 257
            aload 0 /* this */
            aload 1 /* ctx */
            getstatic io.micronaut.websocket.CloseReason.ABNORMAL_CLOSURE:Lio/micronaut/websocket/CloseReason;
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.handleCloseReason:(Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/websocket/CloseReason;)V
         1: .line 258
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    2     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  protected abstract io.micronaut.http.netty.websocket.NettyRxWebSocketSession createWebSocketSession(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      ctx   

  protected io.reactivex.Flowable<?> instrumentPublisher(io.netty.channel.ChannelHandlerContext, );
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)Lio/reactivex/Flowable;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Object result
         0: .line 276
            aload 2 /* result */
            ldc Lio/reactivex/Flowable;
            invokestatic io.micronaut.core.async.publisher.Publishers.convertPublisher:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast io.reactivex.Flowable
            astore 3 /* actual */
        start local 3 // io.reactivex.Flowable actual
         1: .line 277
            aload 3 /* actual */
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            invokeinterface io.netty.channel.Channel.eventLoop:()Lio/netty/channel/EventLoop;
            invokestatic io.reactivex.schedulers.Schedulers.from:(Ljava/util/concurrent/Executor;)Lio/reactivex/Scheduler;
            invokevirtual io.reactivex.Flowable.subscribeOn:(Lio/reactivex/Scheduler;)Lio/reactivex/Flowable;
            areturn
        end local 3 // io.reactivex.Flowable actual
        end local 2 // java.lang.Object result
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    2     1     ctx  Lio/netty/channel/ChannelHandlerContext;
            0    2     2  result  Ljava/lang/Object;
            1    2     3  actual  Lio/reactivex/Flowable<*>;
    Signature: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)Lio/reactivex/Flowable<*>;
    MethodParameters:
        Name  Flags
      ctx     
      result  

  protected  invokeExecutable(io.micronaut.core.bind.BoundExecutable, io.micronaut.inject.MethodExecutionHandle<?, ?>);
    descriptor: (Lio/micronaut/core/bind/BoundExecutable;Lio/micronaut/inject/MethodExecutionHandle;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.micronaut.core.bind.BoundExecutable boundExecutable
        start local 2 // io.micronaut.inject.MethodExecutionHandle messageHandler
         0: .line 288
            aload 1 /* boundExecutable */
            aload 2 /* messageHandler */
            invokeinterface io.micronaut.inject.MethodExecutionHandle.getTarget:()Ljava/lang/Object;
            invokeinterface io.micronaut.core.bind.BoundExecutable.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // io.micronaut.inject.MethodExecutionHandle messageHandler
        end local 1 // io.micronaut.core.bind.BoundExecutable boundExecutable
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    1     1  boundExecutable  Lio/micronaut/core/bind/BoundExecutable;
            0    1     2   messageHandler  Lio/micronaut/inject/MethodExecutionHandle<**>;
    Signature: (Lio/micronaut/core/bind/BoundExecutable;Lio/micronaut/inject/MethodExecutionHandle<**>;)Ljava/lang/Object;
    MethodParameters:
                 Name  Flags
      boundExecutable  
      messageHandler   

  protected void channelRead0(io.netty.channel.ChannelHandlerContext, java.lang.Object);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Object msg
         0: .line 293
            aload 2 /* msg */
            instanceof io.netty.handler.codec.http.websocketx.WebSocketFrame
            ifeq 3
         1: .line 294
            aload 0 /* this */
            aload 1 /* ctx */
            aload 2 /* msg */
            checkcast io.netty.handler.codec.http.websocketx.WebSocketFrame
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.handleWebSocketFrame:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/websocketx/WebSocketFrame;)V
         2: .line 295
            goto 4
         3: .line 296
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            aload 2 /* msg */
            invokeinterface io.netty.channel.ChannelHandlerContext.fireChannelRead:(Ljava/lang/Object;)Lio/netty/channel/ChannelHandlerContext;
            pop
         4: .line 298
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Object msg
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    5     1   ctx  Lio/netty/channel/ChannelHandlerContext;
            0    5     2   msg  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      ctx   
      msg   

  protected void handleWebSocketFrame(io.netty.channel.ChannelHandlerContext, io.netty.handler.codec.http.websocketx.WebSocketFrame);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/websocketx/WebSocketFrame;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=11, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.netty.handler.codec.http.websocketx.WebSocketFrame msg
         0: .line 307
            aload 2 /* msg */
            instanceof io.netty.handler.codec.http.websocketx.TextWebSocketFrame
            ifne 1
            aload 2 /* msg */
            instanceof io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame
            ifeq 57
         1: .line 309
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.messageHandler:Lio/micronaut/inject/MethodExecutionHandle;
            ifnonnull 9
         2: .line 310
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 4
         3: .line 311
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "WebSocket bean ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBean:Lio/micronaut/websocket/context/WebSocketBean;
            invokeinterface io.micronaut.websocket.context.WebSocketBean.getTarget:()Ljava/lang/Object;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] received message, but defined no @OnMessage handler. Dropping frame..."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
         4: .line 313
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
         5: .line 314
            aload 1 /* ctx */
         6: .line 315
            getstatic io.micronaut.websocket.CloseReason.UNSUPPORTED_DATA:Lio/micronaut/websocket/CloseReason;
         7: .line 313
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.writeCloseFrameAndTerminate:(Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/websocket/CloseReason;)V
         8: .line 317
            goto 71
         9: .line 319
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.getBodyArgument:()Lio/micronaut/core/type/Argument;
            astore 3 /* bodyArgument */
        start local 3 // io.micronaut.core.type.Argument bodyArgument
        10: .line 320
            getstatic io.micronaut.core.convert.ConversionService.SHARED:Lio/micronaut/core/convert/ConversionService;
            aload 2 /* msg */
            invokevirtual io.netty.handler.codec.http.websocketx.WebSocketFrame.content:()Lio/netty/buffer/ByteBuf;
            aload 3 /* bodyArgument */
            invokeinterface io.micronaut.core.convert.ConversionService.convert:(Ljava/lang/Object;Lio/micronaut/core/type/Argument;)Ljava/util/Optional;
            astore 4 /* converted */
        start local 4 // java.util.Optional converted
        11: .line 322
            aload 4 /* converted */
            invokevirtual java.util.Optional.isPresent:()Z
            ifne 24
        12: .line 325
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.messageHandler:Lio/micronaut/inject/MethodExecutionHandle;
            ldc Lio/micronaut/http/annotation/Consumes;
            invokeinterface io.micronaut.inject.MethodExecutionHandle.stringValue:(Ljava/lang/Class;)Ljava/util/Optional;
            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/micronaut/http/MediaType.<init>(Ljava/lang/String;)V (8)
                  (Ljava/lang/String;)Lio/micronaut/http/MediaType;
            invokevirtual java.util.Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
            getstatic io.micronaut.http.MediaType.APPLICATION_JSON_TYPE:Lio/micronaut/http/MediaType;
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.micronaut.http.MediaType
            astore 5 /* mediaType */
        start local 5 // io.micronaut.http.MediaType mediaType
        13: .line 326
            goto 17
        end local 5 // io.micronaut.http.MediaType mediaType
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.http.websocketx.WebSocketFrame io.micronaut.core.type.Argument java.util.Optional
      StackMap stack: java.lang.IllegalArgumentException
        14: astore 6 /* e */
        start local 6 // java.lang.IllegalArgumentException e
        15: .line 327
            aload 0 /* this */
            aload 1 /* ctx */
            aload 6 /* e */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.exceptionCaught:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
        16: .line 328
            return
        end local 6 // java.lang.IllegalArgumentException e
        start local 5 // io.micronaut.http.MediaType mediaType
        17: .line 331
      StackMap locals: io.micronaut.http.MediaType
      StackMap stack:
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.mediaTypeCodecRegistry:Lio/micronaut/http/codec/MediaTypeCodecRegistry;
            aload 5 /* mediaType */
            invokeinterface io.micronaut.http.codec.MediaTypeCodecRegistry.findCodec:(Lio/micronaut/http/MediaType;)Ljava/util/Optional;
            aload 3 /* bodyArgument */
            aload 1 /* ctx */
            aload 2 /* msg */
            invokedynamic apply(Lio/micronaut/core/type/Argument;Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/websocketx/WebSocketFrame;)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/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler.lambda$5(Lio/micronaut/core/type/Argument;Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/websocketx/WebSocketFrame;Lio/micronaut/http/codec/MediaTypeCodec;)Ljava/lang/Object; (6)
                  (Lio/micronaut/http/codec/MediaTypeCodec;)Ljava/lang/Object;
            invokevirtual java.util.Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
            astore 4 /* converted */
        18: .line 332
            goto 24
      StackMap locals:
      StackMap stack: io.micronaut.http.codec.CodecException
        19: astore 6 /* e */
        start local 6 // io.micronaut.http.codec.CodecException e
        20: .line 333
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 22
        21: .line 334
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Error Processing WebSocket Message ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBean:Lio/micronaut/websocket/context/WebSocketBean;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* e */
            invokevirtual io.micronaut.http.codec.CodecException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        22: .line 336
      StackMap locals: io.micronaut.http.codec.CodecException
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            aload 6 /* e */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.exceptionCaught:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
        23: .line 337
            return
        end local 6 // io.micronaut.http.codec.CodecException e
        end local 5 // io.micronaut.http.MediaType mediaType
        24: .line 341
      StackMap locals:
      StackMap stack:
            aload 4 /* converted */
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 51
        25: .line 342
            aload 4 /* converted */
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            astore 5 /* v */
        start local 5 // java.lang.Object v
        26: .line 344
            aload 0 /* this */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.getSession:()Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            astore 6 /* currentSession */
        start local 6 // io.micronaut.http.netty.websocket.NettyRxWebSocketSession currentSession
        27: .line 345
            new io.micronaut.core.bind.DefaultExecutableBinder
            dup
        28: .line 346
            aload 3 /* bodyArgument */
            aload 5 /* v */
            invokestatic java.util.Collections.singletonMap:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
        29: .line 345
            invokespecial io.micronaut.core.bind.DefaultExecutableBinder.<init>:(Ljava/util/Map;)V
            astore 7 /* executableBinder */
        start local 7 // io.micronaut.core.bind.ExecutableBinder executableBinder
        30: .line 350
            aload 7 /* executableBinder */
        31: .line 351
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.messageHandler:Lio/micronaut/inject/MethodExecutionHandle;
            invokeinterface io.micronaut.inject.MethodExecutionHandle.getExecutableMethod:()Lio/micronaut/inject/ExecutableMethod;
        32: .line 352
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBinder:Lio/micronaut/core/bind/ArgumentBinderRegistry;
        33: .line 353
            new io.micronaut.websocket.bind.WebSocketState
            dup
            aload 6 /* currentSession */
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.originatingRequest:Lio/micronaut/http/HttpRequest;
            invokespecial io.micronaut.websocket.bind.WebSocketState.<init>:(Lio/micronaut/websocket/WebSocketSession;Lio/micronaut/http/HttpRequest;)V
        34: .line 350
            invokeinterface io.micronaut.core.bind.ExecutableBinder.bind:(Lio/micronaut/core/type/Executable;Lio/micronaut/core/bind/ArgumentBinderRegistry;Ljava/lang/Object;)Lio/micronaut/core/bind/BoundExecutable;
            astore 8 /* boundExecutable */
        start local 8 // io.micronaut.core.bind.BoundExecutable boundExecutable
        35: .line 356
            aload 0 /* this */
            aload 8 /* boundExecutable */
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.messageHandler:Lio/micronaut/inject/MethodExecutionHandle;
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.invokeExecutable:(Lio/micronaut/core/bind/BoundExecutable;Lio/micronaut/inject/MethodExecutionHandle;)Ljava/lang/Object;
            astore 9 /* result */
        start local 9 // java.lang.Object result
        36: .line 357
            aload 9 /* result */
            invokestatic io.micronaut.core.async.publisher.Publishers.isConvertibleToPublisher:(Ljava/lang/Object;)Z
            ifeq 44
        37: .line 358
            aload 0 /* this */
            aload 1 /* ctx */
            aload 9 /* result */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.instrumentPublisher:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)Lio/reactivex/Flowable;
            astore 10 /* flowable */
        start local 10 // io.reactivex.Flowable flowable
        38: .line 359
            aload 10 /* flowable */
        39: .line 360
            invokedynamic accept()Lio/reactivex/functions/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/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler.lambda$6(Ljava/lang/Object;)V (6)
                  (Ljava/lang/Object;)V
        40: .line 362
            aload 0 /* this */
            aload 1 /* ctx */
            invokedynamic accept(Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;Lio/netty/channel/ChannelHandlerContext;)Lio/reactivex/functions/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/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler.lambda$7(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V (7)
                  (Ljava/lang/Throwable;)V
        41: .line 368
            aload 0 /* this */
            aload 1 /* ctx */
            aload 5 /* v */
            invokedynamic run(Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)Lio/reactivex/functions/Action;
              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:
                  ()V
                  io/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler.lambda$8(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V (7)
                  ()V
        42: .line 359
            invokevirtual io.reactivex.Flowable.subscribe:(Lio/reactivex/functions/Consumer;Lio/reactivex/functions/Consumer;Lio/reactivex/functions/Action;)Lio/reactivex/disposables/Disposable;
            pop
        end local 10 // io.reactivex.Flowable flowable
        43: .line 370
            goto 71
        44: .line 371
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.http.websocketx.WebSocketFrame io.micronaut.core.type.Argument java.util.Optional java.lang.Object io.micronaut.http.netty.websocket.NettyRxWebSocketSession io.micronaut.core.bind.ExecutableBinder io.micronaut.core.bind.BoundExecutable java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            aload 5 /* v */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.messageHandled:(Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;Ljava/lang/Object;)V
        end local 9 // java.lang.Object result
        end local 8 // io.micronaut.core.bind.BoundExecutable boundExecutable
        45: .line 373
            goto 71
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.http.websocketx.WebSocketFrame io.micronaut.core.type.Argument java.util.Optional java.lang.Object io.micronaut.http.netty.websocket.NettyRxWebSocketSession io.micronaut.core.bind.ExecutableBinder
      StackMap stack: java.lang.Throwable
        46: astore 8 /* e */
        start local 8 // java.lang.Throwable e
        47: .line 374
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 49
        48: .line 375
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Error Processing WebSocket Message ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBean:Lio/micronaut/websocket/context/WebSocketBean;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* e */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 8 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        49: .line 377
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            aload 8 /* e */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.exceptionCaught:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
        end local 8 // java.lang.Throwable e
        end local 7 // io.micronaut.core.bind.ExecutableBinder executableBinder
        end local 6 // io.micronaut.http.netty.websocket.NettyRxWebSocketSession currentSession
        end local 5 // java.lang.Object v
        50: .line 380
            goto 71
        51: .line 381
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext io.netty.handler.codec.http.websocketx.WebSocketFrame io.micronaut.core.type.Argument java.util.Optional
      StackMap stack:
            aload 0 /* this */
        52: .line 382
            aload 1 /* ctx */
        53: .line 383
            getstatic io.micronaut.websocket.CloseReason.UNSUPPORTED_DATA:Lio/micronaut/websocket/CloseReason;
            invokevirtual io.micronaut.websocket.CloseReason.getCode:()I
        54: .line 384
            new java.lang.StringBuilder
            dup
            getstatic io.micronaut.websocket.CloseReason.UNSUPPORTED_DATA:Lio/micronaut/websocket/CloseReason;
            invokevirtual io.micronaut.websocket.CloseReason.getReason:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "Received data cannot be converted to target type: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* bodyArgument */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        55: .line 381
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.writeCloseFrameAndTerminate:(Lio/netty/channel/ChannelHandlerContext;ILjava/lang/String;)V
        end local 4 // java.util.Optional converted
        end local 3 // io.micronaut.core.type.Argument bodyArgument
        56: .line 389
            goto 71
      StackMap locals:
      StackMap stack:
        57: aload 2 /* msg */
            instanceof io.netty.handler.codec.http.websocketx.PingWebSocketFrame
            ifeq 61
        58: .line 391
            aload 2 /* msg */
            invokevirtual io.netty.handler.codec.http.websocketx.WebSocketFrame.retain:()Lio/netty/handler/codec/http/websocketx/WebSocketFrame;
            checkcast io.netty.handler.codec.http.websocketx.PingWebSocketFrame
            astore 3 /* frame */
        start local 3 // io.netty.handler.codec.http.websocketx.PingWebSocketFrame frame
        59: .line 392
            aload 1 /* ctx */
            new io.netty.handler.codec.http.websocketx.PongWebSocketFrame
            dup
            aload 3 /* frame */
            invokevirtual io.netty.handler.codec.http.websocketx.PingWebSocketFrame.content:()Lio/netty/buffer/ByteBuf;
            invokespecial io.netty.handler.codec.http.websocketx.PongWebSocketFrame.<init>:(Lio/netty/buffer/ByteBuf;)V
            invokeinterface io.netty.channel.ChannelHandlerContext.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
            pop
        end local 3 // io.netty.handler.codec.http.websocketx.PingWebSocketFrame frame
        60: .line 394
            goto 71
      StackMap locals:
      StackMap stack:
        61: aload 2 /* msg */
            instanceof io.netty.handler.codec.http.websocketx.PongWebSocketFrame
            ifeq 63
        62: .line 395
            return
        63: .line 396
      StackMap locals:
      StackMap stack:
            aload 2 /* msg */
            instanceof io.netty.handler.codec.http.websocketx.CloseWebSocketFrame
            ifeq 67
        64: .line 397
            aload 2 /* msg */
            checkcast io.netty.handler.codec.http.websocketx.CloseWebSocketFrame
            astore 3 /* cwsf */
        start local 3 // io.netty.handler.codec.http.websocketx.CloseWebSocketFrame cwsf
        65: .line 398
            aload 0 /* this */
            aload 1 /* ctx */
            aload 3 /* cwsf */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.handleCloseFrame:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/websocketx/CloseWebSocketFrame;)V
        end local 3 // io.netty.handler.codec.http.websocketx.CloseWebSocketFrame cwsf
        66: .line 399
            goto 71
        67: .line 400
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
        68: .line 401
            aload 1 /* ctx */
        69: .line 402
            getstatic io.micronaut.websocket.CloseReason.UNSUPPORTED_DATA:Lio/micronaut/websocket/CloseReason;
        70: .line 400
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.writeCloseFrameAndTerminate:(Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/websocket/CloseReason;)V
        71: .line 405
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.netty.handler.codec.http.websocketx.WebSocketFrame msg
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   72     0              this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0   72     1               ctx  Lio/netty/channel/ChannelHandlerContext;
            0   72     2               msg  Lio/netty/handler/codec/http/websocketx/WebSocketFrame;
           10   56     3      bodyArgument  Lio/micronaut/core/type/Argument<*>;
           11   56     4         converted  Ljava/util/Optional<*>;
           13   14     5         mediaType  Lio/micronaut/http/MediaType;
           17   24     5         mediaType  Lio/micronaut/http/MediaType;
           15   17     6                 e  Ljava/lang/IllegalArgumentException;
           20   24     6                 e  Lio/micronaut/http/codec/CodecException;
           26   50     5                 v  Ljava/lang/Object;
           27   50     6    currentSession  Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
           30   50     7  executableBinder  Lio/micronaut/core/bind/ExecutableBinder<Lio/micronaut/websocket/bind/WebSocketState;>;
           35   45     8   boundExecutable  Lio/micronaut/core/bind/BoundExecutable;
           36   45     9            result  Ljava/lang/Object;
           38   43    10          flowable  Lio/reactivex/Flowable<*>;
           47   50     8                 e  Ljava/lang/Throwable;
           59   60     3             frame  Lio/netty/handler/codec/http/websocketx/PingWebSocketFrame;
           65   66     3              cwsf  Lio/netty/handler/codec/http/websocketx/CloseWebSocketFrame;
      Exception table:
        from    to  target  type
          12    13      14  Class java.lang.IllegalArgumentException
          17    18      19  Class io.micronaut.http.codec.CodecException
          30    45      46  Class java.lang.Throwable
    MethodParameters:
      Name  Flags
      ctx   
      msg   

  protected void messageHandled(io.netty.channel.ChannelHandlerContext, io.micronaut.http.netty.websocket.NettyRxWebSocketSession, java.lang.Object);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=4, args_size=4
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.micronaut.http.netty.websocket.NettyRxWebSocketSession session
        start local 3 // java.lang.Object message
         0: .line 416
            return
        end local 3 // java.lang.Object message
        end local 2 // io.micronaut.http.netty.websocket.NettyRxWebSocketSession session
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    1     1      ctx  Lio/netty/channel/ChannelHandlerContext;
            0    1     2  session  Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            0    1     3  message  Ljava/lang/Object;
    MethodParameters:
         Name  Flags
      ctx      
      session  
      message  

  protected void writeCloseFrameAndTerminate(io.netty.channel.ChannelHandlerContext, io.micronaut.websocket.CloseReason);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/websocket/CloseReason;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.micronaut.websocket.CloseReason closeReason
         0: .line 424
            aload 2 /* closeReason */
            invokevirtual io.micronaut.websocket.CloseReason.getCode:()I
            istore 3 /* code */
        start local 3 // int code
         1: .line 425
            aload 2 /* closeReason */
            invokevirtual io.micronaut.websocket.CloseReason.getReason:()Ljava/lang/String;
            astore 4 /* reason */
        start local 4 // java.lang.String reason
         2: .line 426
            aload 0 /* this */
            aload 1 /* ctx */
            iload 3 /* code */
            aload 4 /* reason */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.writeCloseFrameAndTerminate:(Lio/netty/channel/ChannelHandlerContext;ILjava/lang/String;)V
         3: .line 427
            return
        end local 4 // java.lang.String reason
        end local 3 // int code
        end local 2 // io.micronaut.websocket.CloseReason closeReason
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    4     1          ctx  Lio/netty/channel/ChannelHandlerContext;
            0    4     2  closeReason  Lio/micronaut/websocket/CloseReason;
            1    4     3         code  I
            2    4     4       reason  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      ctx          
      closeReason  

  private void handleCloseReason(io.netty.channel.ChannelHandlerContext, io.micronaut.websocket.CloseReason);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/websocket/CloseReason;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.micronaut.websocket.CloseReason cr
         0: .line 435
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.closed:Ljava/util/concurrent/atomic/AtomicBoolean;
            iconst_0
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
            ifeq 20
         1: .line 436
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 3
         2: .line 437
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            ldc "Closing WebSocket session {} with reason {}"
            aload 0 /* this */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.getSession:()Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            aload 2 /* cr */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 439
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBean:Lio/micronaut/websocket/context/WebSocketBean;
            invokeinterface io.micronaut.websocket.context.WebSocketBean.closeMethod:()Ljava/util/Optional;
            astore 3 /* opt */
        start local 3 // java.util.Optional opt
         4: .line 440
            aload 3 /* opt */
            invokevirtual java.util.Optional.isPresent:()Z
            ifeq 19
         5: .line 441
            aload 3 /* opt */
            invokevirtual java.util.Optional.get:()Ljava/lang/Object;
            checkcast io.micronaut.inject.MethodExecutionHandle
            astore 4 /* methodExecutionHandle */
        start local 4 // io.micronaut.inject.MethodExecutionHandle methodExecutionHandle
         6: .line 442
            aload 4 /* methodExecutionHandle */
            invokeinterface io.micronaut.inject.MethodExecutionHandle.getTarget:()Ljava/lang/Object;
            astore 5 /* target */
        start local 5 // java.lang.Object target
         7: .line 445
            aload 0 /* this */
         8: .line 446
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.originatingRequest:Lio/micronaut/http/HttpRequest;
         9: .line 447
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBinder:Lio/micronaut/core/bind/ArgumentBinderRegistry;
        10: .line 448
            aload 4 /* methodExecutionHandle */
        11: .line 449
            aload 2 /* cr */
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
        12: .line 445
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.bindMethod:(Lio/micronaut/http/HttpRequest;Lio/micronaut/core/bind/ArgumentBinderRegistry;Lio/micronaut/inject/MethodExecutionHandle;Ljava/util/List;)Lio/micronaut/core/bind/BoundExecutable;
            astore 6 /* boundExecutable */
        start local 6 // io.micronaut.core.bind.BoundExecutable boundExecutable
        13: .line 452
            aload 0 /* this */
            aload 1 /* ctx */
            aload 5 /* target */
            aload 6 /* boundExecutable */
            aload 4 /* methodExecutionHandle */
            iconst_1
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.invokeAndClose:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/micronaut/core/bind/BoundExecutable;Lio/micronaut/inject/MethodExecutionHandle;Z)V
        end local 6 // io.micronaut.core.bind.BoundExecutable boundExecutable
        14: .line 453
            goto 20
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext io.micronaut.websocket.CloseReason java.util.Optional io.micronaut.inject.MethodExecutionHandle java.lang.Object
      StackMap stack: java.lang.Throwable
        15: astore 6 /* e */
        start local 6 // java.lang.Throwable e
        16: .line 454
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 20
        17: .line 455
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Error invoking @OnClose handler for WebSocket bean ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* target */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* e */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 6 // java.lang.Throwable e
        end local 5 // java.lang.Object target
        end local 4 // io.micronaut.inject.MethodExecutionHandle methodExecutionHandle
        18: .line 458
            goto 20
        19: .line 459
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            aload 2 /* cr */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.writeCloseFrameAndTerminate:(Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/websocket/CloseReason;)V
        end local 3 // java.util.Optional opt
        20: .line 462
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.micronaut.websocket.CloseReason cr
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   21     0                   this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0   21     1                    ctx  Lio/netty/channel/ChannelHandlerContext;
            0   21     2                     cr  Lio/micronaut/websocket/CloseReason;
            4   20     3                    opt  Ljava/util/Optional<+Lio/micronaut/inject/MethodExecutionHandle<**>;>;
            6   18     4  methodExecutionHandle  Lio/micronaut/inject/MethodExecutionHandle<**>;
            7   18     5                 target  Ljava/lang/Object;
           13   14     6        boundExecutable  Lio/micronaut/core/bind/BoundExecutable;
           16   18     6                      e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           7    14      15  Class java.lang.Throwable
    MethodParameters:
      Name  Flags
      ctx   
      cr    

  private void handleCloseFrame(io.netty.channel.ChannelHandlerContext, io.netty.handler.codec.http.websocketx.CloseWebSocketFrame);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/websocketx/CloseWebSocketFrame;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.netty.handler.codec.http.websocketx.CloseWebSocketFrame cwsf
         0: .line 465
            new io.micronaut.websocket.CloseReason
            dup
            aload 2 /* cwsf */
            invokevirtual io.netty.handler.codec.http.websocketx.CloseWebSocketFrame.statusCode:()I
            aload 2 /* cwsf */
            invokevirtual io.netty.handler.codec.http.websocketx.CloseWebSocketFrame.reasonText:()Ljava/lang/String;
            invokespecial io.micronaut.websocket.CloseReason.<init>:(ILjava/lang/String;)V
            astore 3 /* cr */
        start local 3 // io.micronaut.websocket.CloseReason cr
         1: .line 466
            aload 0 /* this */
            aload 1 /* ctx */
            aload 3 /* cr */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.handleCloseReason:(Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/websocket/CloseReason;)V
         2: .line 467
            return
        end local 3 // io.micronaut.websocket.CloseReason cr
        end local 2 // io.netty.handler.codec.http.websocketx.CloseWebSocketFrame cwsf
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    3     1   ctx  Lio/netty/channel/ChannelHandlerContext;
            0    3     2  cwsf  Lio/netty/handler/codec/http/websocketx/CloseWebSocketFrame;
            1    3     3    cr  Lio/micronaut/websocket/CloseReason;
    MethodParameters:
      Name  Flags
      ctx   
      cwsf  

  private void invokeAndClose(io.netty.channel.ChannelHandlerContext, , io.micronaut.core.bind.BoundExecutable, io.micronaut.inject.MethodExecutionHandle<?, ?>, );
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/micronaut/core/bind/BoundExecutable;Lio/micronaut/inject/MethodExecutionHandle;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=6
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Object target
        start local 3 // io.micronaut.core.bind.BoundExecutable boundExecutable
        start local 4 // io.micronaut.inject.MethodExecutionHandle methodExecutionHandle
        start local 5 // boolean isClose
         0: .line 472
            aload 0 /* this */
            aload 3 /* boundExecutable */
            aload 4 /* methodExecutionHandle */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.invokeExecutable:(Lio/micronaut/core/bind/BoundExecutable;Lio/micronaut/inject/MethodExecutionHandle;)Ljava/lang/Object;
            astore 6 /* result */
        start local 6 // java.lang.Object result
         1: .line 473
            goto 7
        end local 6 // java.lang.Object result
      StackMap locals:
      StackMap stack: java.lang.Exception
         2: astore 7 /* e */
        start local 7 // java.lang.Exception e
         3: .line 474
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 5
         4: .line 475
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Error invoking @OnClose handler "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* target */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* methodExecutionHandle */
            invokeinterface io.micronaut.inject.MethodExecutionHandle.getExecutableMethod:()Lio/micronaut/inject/ExecutableMethod;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 7 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 7 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
         5: .line 477
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.micronaut.core.bind.BoundExecutable io.micronaut.inject.MethodExecutionHandle int top java.lang.Exception
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.close:()Lio/netty/channel/ChannelFuture;
            pop
         6: .line 478
            return
        end local 7 // java.lang.Exception e
        start local 6 // java.lang.Object result
         7: .line 481
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.micronaut.core.bind.BoundExecutable io.micronaut.inject.MethodExecutionHandle int java.lang.Object
      StackMap stack:
            aload 6 /* result */
            invokestatic io.micronaut.core.async.publisher.Publishers.isConvertibleToPublisher:(Ljava/lang/Object;)Z
            ifeq 11
         8: .line 482
            aload 0 /* this */
            aload 1 /* ctx */
            aload 6 /* result */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.instrumentPublisher:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)Lio/reactivex/Flowable;
            astore 7 /* flowable */
        start local 7 // io.reactivex.Flowable flowable
         9: .line 483
            aload 7 /* flowable */
            invokevirtual io.reactivex.Flowable.toList:()Lio/reactivex/Single;
            aload 0 /* this */
            iload 5 /* isClose */
            aload 2 /* target */
            aload 1 /* ctx */
            invokedynamic accept(Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;ZLjava/lang/Object;Lio/netty/channel/ChannelHandlerContext;)Lio/reactivex/functions/BiConsumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;Ljava/lang/Object;)V
                  io/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler.lambda$9(ZLjava/lang/Object;Lio/netty/channel/ChannelHandlerContext;Ljava/util/List;Ljava/lang/Throwable;)V (7)
                  (Ljava/util/List;Ljava/lang/Throwable;)V
            invokevirtual io.reactivex.Single.subscribe:(Lio/reactivex/functions/BiConsumer;)Lio/reactivex/disposables/Disposable;
            pop
        end local 7 // io.reactivex.Flowable flowable
        10: .line 490
            goto 12
        11: .line 491
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.close:()Lio/netty/channel/ChannelFuture;
            pop
        12: .line 493
      StackMap locals:
      StackMap stack:
            return
        end local 6 // java.lang.Object result
        end local 5 // boolean isClose
        end local 4 // io.micronaut.inject.MethodExecutionHandle methodExecutionHandle
        end local 3 // io.micronaut.core.bind.BoundExecutable boundExecutable
        end local 2 // java.lang.Object target
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   13     0                   this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0   13     1                    ctx  Lio/netty/channel/ChannelHandlerContext;
            0   13     2                 target  Ljava/lang/Object;
            0   13     3        boundExecutable  Lio/micronaut/core/bind/BoundExecutable;
            0   13     4  methodExecutionHandle  Lio/micronaut/inject/MethodExecutionHandle<**>;
            0   13     5                isClose  Z
            1    2     6                 result  Ljava/lang/Object;
            7   13     6                 result  Ljava/lang/Object;
            3    7     7                      e  Ljava/lang/Exception;
            9   10     7               flowable  Lio/reactivex/Flowable<*>;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Exception
    Signature: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/micronaut/core/bind/BoundExecutable;Lio/micronaut/inject/MethodExecutionHandle<**>;Z)V
    MethodParameters:
                       Name  Flags
      ctx                    
      target                 
      boundExecutable        
      methodExecutionHandle  
      isClose                

  private io.micronaut.core.bind.BoundExecutable bindMethod(io.micronaut.http.HttpRequest<?>, io.micronaut.core.bind.ArgumentBinderRegistry<io.micronaut.websocket.bind.WebSocketState>, io.micronaut.inject.MethodExecutionHandle<?, ?>, java.util.List<?>);
    descriptor: (Lio/micronaut/http/HttpRequest;Lio/micronaut/core/bind/ArgumentBinderRegistry;Lio/micronaut/inject/MethodExecutionHandle;Ljava/util/List;)Lio/micronaut/core/bind/BoundExecutable;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=8, args_size=5
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.micronaut.http.HttpRequest request
        start local 2 // io.micronaut.core.bind.ArgumentBinderRegistry binderRegistry
        start local 3 // io.micronaut.inject.MethodExecutionHandle openMethod
        start local 4 // java.util.List parameters
         0: .line 496
            aload 3 /* openMethod */
            invokeinterface io.micronaut.inject.MethodExecutionHandle.getExecutableMethod:()Lio/micronaut/inject/ExecutableMethod;
            astore 5 /* executable */
        start local 5 // io.micronaut.inject.ExecutableMethod executable
         1: .line 497
            aload 0 /* this */
            aload 5 /* executable */
            aload 4 /* parameters */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.prepareBoundVariables:(Lio/micronaut/inject/ExecutableMethod;Ljava/util/List;)Ljava/util/Map;
            astore 6 /* preBound */
        start local 6 // java.util.Map preBound
         2: .line 498
            new io.micronaut.core.bind.DefaultExecutableBinder
            dup
         3: .line 499
            aload 6 /* preBound */
         4: .line 498
            invokespecial io.micronaut.core.bind.DefaultExecutableBinder.<init>:(Ljava/util/Map;)V
            astore 7 /* executableBinder */
        start local 7 // io.micronaut.core.bind.ExecutableBinder executableBinder
         5: .line 501
            aload 7 /* executableBinder */
            aload 5 /* executable */
            aload 2 /* binderRegistry */
            new io.micronaut.websocket.bind.WebSocketState
            dup
            aload 0 /* this */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.getSession:()Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            aload 1 /* request */
            invokespecial io.micronaut.websocket.bind.WebSocketState.<init>:(Lio/micronaut/websocket/WebSocketSession;Lio/micronaut/http/HttpRequest;)V
            invokeinterface io.micronaut.core.bind.ExecutableBinder.bind:(Lio/micronaut/core/type/Executable;Lio/micronaut/core/bind/ArgumentBinderRegistry;Ljava/lang/Object;)Lio/micronaut/core/bind/BoundExecutable;
            areturn
        end local 7 // io.micronaut.core.bind.ExecutableBinder executableBinder
        end local 6 // java.util.Map preBound
        end local 5 // io.micronaut.inject.ExecutableMethod executable
        end local 4 // java.util.List parameters
        end local 3 // io.micronaut.inject.MethodExecutionHandle openMethod
        end local 2 // io.micronaut.core.bind.ArgumentBinderRegistry binderRegistry
        end local 1 // io.micronaut.http.HttpRequest request
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    6     0              this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    6     1           request  Lio/micronaut/http/HttpRequest<*>;
            0    6     2    binderRegistry  Lio/micronaut/core/bind/ArgumentBinderRegistry<Lio/micronaut/websocket/bind/WebSocketState;>;
            0    6     3        openMethod  Lio/micronaut/inject/MethodExecutionHandle<**>;
            0    6     4        parameters  Ljava/util/List<*>;
            1    6     5        executable  Lio/micronaut/inject/ExecutableMethod<**>;
            2    6     6          preBound  Ljava/util/Map<Lio/micronaut/core/type/Argument<*>;Ljava/lang/Object;>;
            5    6     7  executableBinder  Lio/micronaut/core/bind/ExecutableBinder<Lio/micronaut/websocket/bind/WebSocketState;>;
    Signature: (Lio/micronaut/http/HttpRequest<*>;Lio/micronaut/core/bind/ArgumentBinderRegistry<Lio/micronaut/websocket/bind/WebSocketState;>;Lio/micronaut/inject/MethodExecutionHandle<**>;Ljava/util/List<*>;)Lio/micronaut/core/bind/BoundExecutable;
    MethodParameters:
                Name  Flags
      request         
      binderRegistry  
      openMethod      
      parameters      

  private java.util.Map<io.micronaut.core.type.Argument<?>, java.lang.Object> prepareBoundVariables(io.micronaut.inject.ExecutableMethod<?, ?>, java.util.List<?>);
    descriptor: (Lio/micronaut/inject/ExecutableMethod;Ljava/util/List;)Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=11, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.micronaut.inject.ExecutableMethod executable
        start local 2 // java.util.List parameters
         0: .line 505
            new java.util.HashMap
            dup
            aload 1 /* executable */
            invokeinterface io.micronaut.inject.ExecutableMethod.getArguments:()[Lio/micronaut/core/type/Argument;
            arraylength
            invokespecial java.util.HashMap.<init>:(I)V
            astore 3 /* preBound */
        start local 3 // java.util.Map preBound
         1: .line 506
            aload 1 /* executable */
            invokeinterface io.micronaut.inject.ExecutableMethod.getArguments:()[Lio/micronaut/core/type/Argument;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 11
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.micronaut.inject.ExecutableMethod java.util.List java.util.Map top int int io.micronaut.core.type.Argument[]
      StackMap stack:
         2: aload 7
            iload 5
            aaload
            astore 4 /* argument */
        start local 4 // io.micronaut.core.type.Argument argument
         3: .line 507
            aload 4 /* argument */
            invokeinterface io.micronaut.core.type.Argument.getType:()Ljava/lang/Class;
            astore 8 /* type */
        start local 8 // java.lang.Class type
         4: .line 508
            aload 2 /* parameters */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 9
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.micronaut.inject.ExecutableMethod java.util.List java.util.Map io.micronaut.core.type.Argument int int io.micronaut.core.type.Argument[] java.lang.Class top java.util.Iterator
      StackMap stack:
         5: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 9 /* object */
        start local 9 // java.lang.Object object
         6: .line 509
            aload 8 /* type */
            aload 9 /* object */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 9
         7: .line 510
            aload 3 /* preBound */
            aload 4 /* argument */
            aload 9 /* object */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 511
            goto 10
        end local 9 // java.lang.Object object
         9: .line 508
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        end local 8 // java.lang.Class type
        end local 4 // io.micronaut.core.type.Argument argument
        10: .line 506
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler io.micronaut.inject.ExecutableMethod java.util.List java.util.Map top int int io.micronaut.core.type.Argument[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        11: iload 5
            iload 6
            if_icmplt 2
        12: .line 515
            aload 3 /* preBound */
            areturn
        end local 3 // java.util.Map preBound
        end local 2 // java.util.List parameters
        end local 1 // io.micronaut.inject.ExecutableMethod executable
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0   13     1  executable  Lio/micronaut/inject/ExecutableMethod<**>;
            0   13     2  parameters  Ljava/util/List<*>;
            1   13     3    preBound  Ljava/util/Map<Lio/micronaut/core/type/Argument<*>;Ljava/lang/Object;>;
            3   10     4    argument  Lio/micronaut/core/type/Argument;
            4   10     8        type  Ljava/lang/Class;
            6    9     9      object  Ljava/lang/Object;
    Signature: (Lio/micronaut/inject/ExecutableMethod<**>;Ljava/util/List<*>;)Ljava/util/Map<Lio/micronaut/core/type/Argument<*>;Ljava/lang/Object;>;
    MethodParameters:
            Name  Flags
      executable  
      parameters  

  private void handleUnexpected(io.netty.channel.ChannelHandlerContext, java.lang.Throwable);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Throwable cause
         0: .line 519
            aload 2 /* cause */
            instanceof java.io.IOException
            ifeq 4
         1: .line 520
            aload 2 /* cause */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            astore 3 /* msg */
        start local 3 // java.lang.String msg
         2: .line 521
            aload 3 /* msg */
            ifnull 4
            aload 3 /* msg */
            ldc "Connection reset"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 4
         3: .line 523
            return
        end local 3 // java.lang.String msg
         4: .line 527
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 6
         5: .line 528
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Unexpected Exception in WebSocket ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBean:Lio/micronaut/websocket/context/WebSocketBean;
            invokeinterface io.micronaut.websocket.context.WebSocketBean.getTarget:()Ljava/lang/Object;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* cause */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* cause */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
         6: .line 530
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            astore 3 /* channel */
        start local 3 // io.netty.channel.Channel channel
         7: .line 531
            aload 3 /* channel */
            invokeinterface io.netty.channel.Channel.isOpen:()Z
            ifeq 10
         8: .line 532
            getstatic io.micronaut.websocket.CloseReason.INTERNAL_ERROR:Lio/micronaut/websocket/CloseReason;
            astore 4 /* internalError */
        start local 4 // io.micronaut.websocket.CloseReason internalError
         9: .line 533
            aload 0 /* this */
            aload 1 /* ctx */
            aload 4 /* internalError */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.writeCloseFrameAndTerminate:(Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/websocket/CloseReason;)V
        end local 4 // io.micronaut.websocket.CloseReason internalError
        10: .line 535
      StackMap locals: io.netty.channel.Channel
      StackMap stack:
            return
        end local 3 // io.netty.channel.Channel channel
        end local 2 // java.lang.Throwable cause
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0           this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0   11     1            ctx  Lio/netty/channel/ChannelHandlerContext;
            0   11     2          cause  Ljava/lang/Throwable;
            2    4     3            msg  Ljava/lang/String;
            7   11     3        channel  Lio/netty/channel/Channel;
            9   10     4  internalError  Lio/micronaut/websocket/CloseReason;
    MethodParameters:
       Name  Flags
      ctx    
      cause  

  private void writeCloseFrameAndTerminate(io.netty.channel.ChannelHandlerContext, int, java.lang.String);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;ILjava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // int code
        start local 3 // java.lang.String reason
         0: .line 538
            new io.netty.handler.codec.http.websocketx.CloseWebSocketFrame
            dup
            iload 2 /* code */
            aload 3 /* reason */
            invokespecial io.netty.handler.codec.http.websocketx.CloseWebSocketFrame.<init>:(ILjava/lang/String;)V
            astore 4 /* closeFrame */
        start local 4 // io.netty.handler.codec.http.websocketx.CloseWebSocketFrame closeFrame
         1: .line 539
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            aload 4 /* closeFrame */
            invokeinterface io.netty.channel.Channel.writeAndFlush:(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;
         2: .line 540
            aload 0 /* this */
            aload 1 /* ctx */
            iload 2 /* code */
            aload 3 /* reason */
            invokedynamic operationComplete(Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;Lio/netty/channel/ChannelHandlerContext;ILjava/lang/String;)Lio/netty/util/concurrent/GenericFutureListener;
              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:
                  (Lio/netty/util/concurrent/Future;)V
                  io/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler.lambda$10(Lio/netty/channel/ChannelHandlerContext;ILjava/lang/String;Lio/netty/util/concurrent/Future;)V (7)
                  (Lio/netty/util/concurrent/Future;)V
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
         3: .line 541
            return
        end local 4 // io.netty.handler.codec.http.websocketx.CloseWebSocketFrame closeFrame
        end local 3 // java.lang.String reason
        end local 2 // int code
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    4     1         ctx  Lio/netty/channel/ChannelHandlerContext;
            0    4     2        code  I
            0    4     3      reason  Ljava/lang/String;
            1    4     4  closeFrame  Lio/netty/handler/codec/http/websocketx/CloseWebSocketFrame;
    MethodParameters:
        Name  Flags
      ctx     
      code    
      reason  

  private static void lambda$0(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // java.lang.Object o
         0: .line 168
            return
        end local 0 // java.lang.Object o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     o  Ljava/lang/Object;
    Exceptions:
      throws java.lang.Exception

  private void lambda$1(io.micronaut.websocket.context.WebSocketBean, java.lang.Throwable);
    descriptor: (Lio/micronaut/websocket/context/WebSocketBean;Ljava/lang/Throwable;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 2 // java.lang.Throwable error
         0: .line 170
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 2
         1: .line 171
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Error Opening WebSocket ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* error */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* error */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
         2: .line 173
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            invokevirtual io.micronaut.http.netty.websocket.NettyRxWebSocketSession.isOpen:()Z
            ifeq 4
         3: .line 174
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            getstatic io.micronaut.websocket.CloseReason.INTERNAL_ERROR:Lio/micronaut/websocket/CloseReason;
            invokevirtual io.micronaut.http.netty.websocket.NettyRxWebSocketSession.close:(Lio/micronaut/websocket/CloseReason;)V
         4: .line 176
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Throwable error
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    5     2  error  Ljava/lang/Throwable;
    Exceptions:
      throws java.lang.Exception

  private static void lambda$2();
    descriptor: ()V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=0, locals=0, args_size=0
         0: .line 178
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception

  private void lambda$3(java.lang.Object, io.micronaut.inject.MethodExecutionHandle, io.netty.channel.ChannelHandlerContext, java.util.List, java.lang.Throwable);
    descriptor: (Ljava/lang/Object;Lio/micronaut/inject/MethodExecutionHandle;Lio/netty/channel/ChannelHandlerContext;Ljava/util/List;Ljava/lang/Throwable;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=6, args_size=6
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 4 // java.util.List objects
        start local 5 // java.lang.Throwable throwable
         0: .line 239
            aload 5 /* throwable */
            ifnull 2
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 2
         1: .line 240
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Error subscribing to @OnError handler "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2
            invokeinterface io.micronaut.inject.MethodExecutionHandle.getExecutableMethod:()Lio/micronaut/inject/ExecutableMethod;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* throwable */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* throwable */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
         2: .line 242
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3
            aload 5 /* throwable */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.handleUnexpected:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
         3: .line 243
            return
        end local 5 // java.lang.Throwable throwable
        end local 4 // java.util.List objects
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    4     4    objects  Ljava/util/List<*>;
            0    4     5  throwable  Ljava/lang/Throwable;
    Exceptions:
      throws java.lang.Exception

  private static java.lang.Object lambda$5(io.micronaut.core.type.Argument, io.netty.channel.ChannelHandlerContext, io.netty.handler.codec.http.websocketx.WebSocketFrame, io.micronaut.http.codec.MediaTypeCodec);
    descriptor: (Lio/micronaut/core/type/Argument;Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/websocketx/WebSocketFrame;Lio/micronaut/http/codec/MediaTypeCodec;)Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=5, locals=4, args_size=4
        start local 3 // io.micronaut.http.codec.MediaTypeCodec codec
         0: .line 331
            aload 3 /* codec */
            aload 0
            new io.micronaut.buffer.netty.NettyByteBufferFactory
            dup
            aload 1
            invokeinterface io.netty.channel.ChannelHandlerContext.alloc:()Lio/netty/buffer/ByteBufAllocator;
            invokespecial io.micronaut.buffer.netty.NettyByteBufferFactory.<init>:(Lio/netty/buffer/ByteBufAllocator;)V
            aload 2
            invokevirtual io.netty.handler.codec.http.websocketx.WebSocketFrame.content:()Lio/netty/buffer/ByteBuf;
            invokevirtual io.micronaut.buffer.netty.NettyByteBufferFactory.wrap:(Lio/netty/buffer/ByteBuf;)Lio/micronaut/core/io/buffer/ByteBuffer;
            invokeinterface io.micronaut.http.codec.MediaTypeCodec.decode:(Lio/micronaut/core/type/Argument;Lio/micronaut/core/io/buffer/ByteBuffer;)Ljava/lang/Object;
            areturn
        end local 3 // io.micronaut.http.codec.MediaTypeCodec codec
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     3  codec  Lio/micronaut/http/codec/MediaTypeCodec;

  private static void lambda$6(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // java.lang.Object o
         0: .line 361
            return
        end local 0 // java.lang.Object o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     o  Ljava/lang/Object;
    Exceptions:
      throws java.lang.Exception

  private void lambda$7(io.netty.channel.ChannelHandlerContext, java.lang.Throwable);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 2 // java.lang.Throwable error
         0: .line 363
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 2
         1: .line 364
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Error Processing WebSocket Message ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.webSocketBean:Lio/micronaut/websocket/context/WebSocketBean;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* error */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* error */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
         2: .line 366
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1
            aload 2 /* error */
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.exceptionCaught:(Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Throwable;)V
         3: .line 367
            return
        end local 2 // java.lang.Throwable error
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    4     2  error  Ljava/lang/Throwable;
    Exceptions:
      throws java.lang.Exception

  private void lambda$8(io.netty.channel.ChannelHandlerContext, java.lang.Object);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
         0: .line 368
            aload 0 /* this */
            aload 1
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.session:Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;
            aload 2
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.messageHandled:(Lio/netty/channel/ChannelHandlerContext;Lio/micronaut/http/netty/websocket/NettyRxWebSocketSession;Ljava/lang/Object;)V
            return
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
    Exceptions:
      throws java.lang.Exception

  private void lambda$9(boolean, java.lang.Object, io.netty.channel.ChannelHandlerContext, java.util.List, java.lang.Throwable);
    descriptor: (ZLjava/lang/Object;Lio/netty/channel/ChannelHandlerContext;Ljava/util/List;Ljava/lang/Throwable;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=6, args_size=6
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 4 // java.util.List objects
        start local 5 // java.lang.Throwable throwable
         0: .line 484
            aload 5 /* throwable */
            ifnull 4
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isErrorEnabled:()Z
            ifeq 4
         1: .line 485
            aload 0 /* this */
            getfield io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.LOG:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Error subscribing to @"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1
            ifeq 2
            ldc "OnClose"
            goto 3
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler int java.lang.Object io.netty.channel.ChannelHandlerContext java.util.List java.lang.Throwable
      StackMap stack: org.slf4j.Logger java.lang.StringBuilder
         2: ldc "OnError"
      StackMap locals: io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler int java.lang.Object io.netty.channel.ChannelHandlerContext java.util.List java.lang.Throwable
      StackMap stack: org.slf4j.Logger java.lang.StringBuilder java.lang.String
         3: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " handler for WebSocket bean ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* throwable */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* throwable */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
         4: .line 487
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface io.netty.channel.ChannelHandlerContext.close:()Lio/netty/channel/ChannelFuture;
            pop
         5: .line 488
            return
        end local 5 // java.lang.Throwable throwable
        end local 4 // java.util.List objects
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    6     4    objects  Ljava/util/List<*>;
            0    6     5  throwable  Ljava/lang/Throwable;
    Exceptions:
      throws java.lang.Exception

  private void lambda$10(io.netty.channel.ChannelHandlerContext, int, java.lang.String, io.netty.util.concurrent.Future);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;ILjava/lang/String;Lio/netty/util/concurrent/Future;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
        start local 4 // io.netty.util.concurrent.Future future
         0: .line 540
            aload 0 /* this */
            aload 1
            new io.netty.handler.codec.http.websocketx.CloseWebSocketFrame
            dup
            iload 2
            aload 3
            invokespecial io.netty.handler.codec.http.websocketx.CloseWebSocketFrame.<init>:(ILjava/lang/String;)V
            invokevirtual io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler.handleCloseFrame:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/handler/codec/http/websocketx/CloseWebSocketFrame;)V
            return
        end local 4 // io.netty.util.concurrent.Future future
        end local 0 // io.micronaut.http.netty.websocket.AbstractNettyWebSocketHandler this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lio/micronaut/http/netty/websocket/AbstractNettyWebSocketHandler;
            0    1     4  future  Lio/netty/util/concurrent/Future<-Ljava/lang/Void;>;
    Exceptions:
      throws java.lang.Exception
}
Signature: Lio/netty/channel/SimpleChannelInboundHandler<Ljava/lang/Object;>;
SourceFile: "AbstractNettyWebSocketHandler.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
    RuntimeVisibleAnnotations: 
      io.micronaut.core.annotation.Internal()