class io.netty.channel.local.LocalChannel$LocalUnsafe extends io.netty.channel.AbstractChannel$AbstractUnsafe
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: io.netty.channel.local.LocalChannel$LocalUnsafe
  super_class: io.netty.channel.AbstractChannel$AbstractUnsafe
{
  final io.netty.channel.local.LocalChannel this$0;
    descriptor: Lio/netty/channel/local/LocalChannel;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private void <init>(io.netty.channel.local.LocalChannel);
    descriptor: (Lio/netty/channel/local/LocalChannel;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.channel.local.LocalChannel$LocalUnsafe this
         0: .line 450
            aload 0 /* this */
            aload 1
            putfield io.netty.channel.local.LocalChannel$LocalUnsafe.this$0:Lio/netty/channel/local/LocalChannel;
            aload 0 /* this */
            aload 1
            invokespecial io.netty.channel.AbstractChannel$AbstractUnsafe.<init>:(Lio/netty/channel/AbstractChannel;)V
            return
        end local 0 // io.netty.channel.local.LocalChannel$LocalUnsafe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/local/LocalChannel$LocalUnsafe;
    MethodParameters:
        Name  Flags
      this$0  final

  public void connect(java.net.SocketAddress, java.net.SocketAddress, io.netty.channel.ChannelPromise);
    descriptor: (Ljava/net/SocketAddress;Ljava/net/SocketAddress;Lio/netty/channel/ChannelPromise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // io.netty.channel.local.LocalChannel$LocalUnsafe this
        start local 1 // java.net.SocketAddress remoteAddress
        start local 2 // java.net.SocketAddress localAddress
        start local 3 // io.netty.channel.ChannelPromise promise
         0: .line 455
            aload 3 /* promise */
            invokeinterface io.netty.channel.ChannelPromise.setUncancellable:()Z
            ifeq 1
            aload 0 /* this */
            aload 3 /* promise */
            invokevirtual io.netty.channel.local.LocalChannel$LocalUnsafe.ensureOpen:(Lio/netty/channel/ChannelPromise;)Z
            ifne 2
         1: .line 456
      StackMap locals:
      StackMap stack:
            return
         2: .line 459
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.local.LocalChannel$LocalUnsafe.this$0:Lio/netty/channel/local/LocalChannel;
            getfield io.netty.channel.local.LocalChannel.state:Lio/netty/channel/local/LocalChannel$State;
            getstatic io.netty.channel.local.LocalChannel$State.CONNECTED:Lio/netty/channel/local/LocalChannel$State;
            if_acmpne 7
         3: .line 460
            new java.nio.channels.AlreadyConnectedException
            dup
            invokespecial java.nio.channels.AlreadyConnectedException.<init>:()V
            astore 4 /* cause */
        start local 4 // java.lang.Exception cause
         4: .line 461
            aload 0 /* this */
            aload 3 /* promise */
            aload 4 /* cause */
            invokevirtual io.netty.channel.local.LocalChannel$LocalUnsafe.safeSetFailure:(Lio/netty/channel/ChannelPromise;Ljava/lang/Throwable;)V
         5: .line 462
            aload 0 /* this */
            getfield io.netty.channel.local.LocalChannel$LocalUnsafe.this$0:Lio/netty/channel/local/LocalChannel;
            invokevirtual io.netty.channel.local.LocalChannel.pipeline:()Lio/netty/channel/ChannelPipeline;
            aload 4 /* cause */
            invokeinterface io.netty.channel.ChannelPipeline.fireExceptionCaught:(Ljava/lang/Throwable;)Lio/netty/channel/ChannelPipeline;
            pop
         6: .line 463
            return
        end local 4 // java.lang.Exception cause
         7: .line 466
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.local.LocalChannel$LocalUnsafe.this$0:Lio/netty/channel/local/LocalChannel;
            getfield io.netty.channel.local.LocalChannel.connectPromise:Lio/netty/channel/ChannelPromise;
            ifnull 9
         8: .line 467
            new java.nio.channels.ConnectionPendingException
            dup
            invokespecial java.nio.channels.ConnectionPendingException.<init>:()V
            athrow
         9: .line 470
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.local.LocalChannel$LocalUnsafe.this$0:Lio/netty/channel/local/LocalChannel;
            aload 3 /* promise */
            putfield io.netty.channel.local.LocalChannel.connectPromise:Lio/netty/channel/ChannelPromise;
        10: .line 472
            aload 0 /* this */
            getfield io.netty.channel.local.LocalChannel$LocalUnsafe.this$0:Lio/netty/channel/local/LocalChannel;
            getfield io.netty.channel.local.LocalChannel.state:Lio/netty/channel/local/LocalChannel$State;
            getstatic io.netty.channel.local.LocalChannel$State.BOUND:Lio/netty/channel/local/LocalChannel$State;
            if_acmpeq 13
        11: .line 474
            aload 2 /* localAddress */
            ifnonnull 13
        12: .line 475
            new io.netty.channel.local.LocalAddress
            dup
            aload 0 /* this */
            getfield io.netty.channel.local.LocalChannel$LocalUnsafe.this$0:Lio/netty/channel/local/LocalChannel;
            invokespecial io.netty.channel.local.LocalAddress.<init>:(Lio/netty/channel/Channel;)V
            astore 2 /* localAddress */
        13: .line 479
      StackMap locals:
      StackMap stack:
            aload 2 /* localAddress */
            ifnull 20
        14: .line 481
            aload 0 /* this */
            getfield io.netty.channel.local.LocalChannel$LocalUnsafe.this$0:Lio/netty/channel/local/LocalChannel;
            aload 2 /* localAddress */
            invokevirtual io.netty.channel.local.LocalChannel.doBind:(Ljava/net/SocketAddress;)V
        15: .line 482
            goto 20
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: astore 4 /* t */
        start local 4 // java.lang.Throwable t
        17: .line 483
            aload 0 /* this */
            aload 3 /* promise */
            aload 4 /* t */
            invokevirtual io.netty.channel.local.LocalChannel$LocalUnsafe.safeSetFailure:(Lio/netty/channel/ChannelPromise;Ljava/lang/Throwable;)V
        18: .line 484
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.netty.channel.local.LocalChannel$LocalUnsafe.voidPromise:()Lio/netty/channel/ChannelPromise;
            invokevirtual io.netty.channel.local.LocalChannel$LocalUnsafe.close:(Lio/netty/channel/ChannelPromise;)V
        19: .line 485
            return
        end local 4 // java.lang.Throwable t
        20: .line 489
      StackMap locals:
      StackMap stack:
            aload 1 /* remoteAddress */
            invokestatic io.netty.channel.local.LocalChannelRegistry.get:(Ljava/net/SocketAddress;)Lio/netty/channel/Channel;
            astore 4 /* boundChannel */
        start local 4 // io.netty.channel.Channel boundChannel
        21: .line 490
            aload 4 /* boundChannel */
            instanceof io.netty.channel.local.LocalServerChannel
            ifne 26
        22: .line 491
            new java.net.ConnectException
            dup
            new java.lang.StringBuilder
            dup
            ldc "connection refused: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* remoteAddress */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.net.ConnectException.<init>:(Ljava/lang/String;)V
            astore 5 /* cause */
        start local 5 // java.lang.Exception cause
        23: .line 492
            aload 0 /* this */
            aload 3 /* promise */
            aload 5 /* cause */
            invokevirtual io.netty.channel.local.LocalChannel$LocalUnsafe.safeSetFailure:(Lio/netty/channel/ChannelPromise;Ljava/lang/Throwable;)V
        24: .line 493
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual io.netty.channel.local.LocalChannel$LocalUnsafe.voidPromise:()Lio/netty/channel/ChannelPromise;
            invokevirtual io.netty.channel.local.LocalChannel$LocalUnsafe.close:(Lio/netty/channel/ChannelPromise;)V
        25: .line 494
            return
        end local 5 // java.lang.Exception cause
        26: .line 497
      StackMap locals: io.netty.channel.Channel
      StackMap stack:
            aload 4 /* boundChannel */
            checkcast io.netty.channel.local.LocalServerChannel
            astore 5 /* serverChannel */
        start local 5 // io.netty.channel.local.LocalServerChannel serverChannel
        27: .line 498
            aload 0 /* this */
            getfield io.netty.channel.local.LocalChannel$LocalUnsafe.this$0:Lio/netty/channel/local/LocalChannel;
            aload 5 /* serverChannel */
            aload 0 /* this */
            getfield io.netty.channel.local.LocalChannel$LocalUnsafe.this$0:Lio/netty/channel/local/LocalChannel;
            invokevirtual io.netty.channel.local.LocalServerChannel.serve:(Lio/netty/channel/local/LocalChannel;)Lio/netty/channel/local/LocalChannel;
            putfield io.netty.channel.local.LocalChannel.peer:Lio/netty/channel/local/LocalChannel;
        28: .line 499
            return
        end local 5 // io.netty.channel.local.LocalServerChannel serverChannel
        end local 4 // io.netty.channel.Channel boundChannel
        end local 3 // io.netty.channel.ChannelPromise promise
        end local 2 // java.net.SocketAddress localAddress
        end local 1 // java.net.SocketAddress remoteAddress
        end local 0 // io.netty.channel.local.LocalChannel$LocalUnsafe this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   29     0           this  Lio/netty/channel/local/LocalChannel$LocalUnsafe;
            0   29     1  remoteAddress  Ljava/net/SocketAddress;
            0   29     2   localAddress  Ljava/net/SocketAddress;
            0   29     3        promise  Lio/netty/channel/ChannelPromise;
            4    7     4          cause  Ljava/lang/Exception;
           17   20     4              t  Ljava/lang/Throwable;
           21   29     4   boundChannel  Lio/netty/channel/Channel;
           23   26     5          cause  Ljava/lang/Exception;
           27   29     5  serverChannel  Lio/netty/channel/local/LocalServerChannel;
      Exception table:
        from    to  target  type
          14    15      16  Class java.lang.Throwable
    MethodParameters:
               Name  Flags
      remoteAddress  final
      localAddress   
      promise        final
}
SourceFile: "LocalChannel.java"
NestHost: io.netty.channel.local.LocalChannel
InnerClasses:
  protected abstract AbstractUnsafe = io.netty.channel.AbstractChannel$AbstractUnsafe of io.netty.channel.AbstractChannel
  private LocalUnsafe = io.netty.channel.local.LocalChannel$LocalUnsafe of io.netty.channel.local.LocalChannel
  private final State = io.netty.channel.local.LocalChannel$State of io.netty.channel.local.LocalChannel