public class io.netty.channel.pool.SimpleChannelPool implements io.netty.channel.pool.ChannelPool
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.netty.channel.pool.SimpleChannelPool
  super_class: java.lang.Object
{
  private static final io.netty.util.AttributeKey<io.netty.channel.pool.SimpleChannelPool> POOL_KEY;
    descriptor: Lio/netty/util/AttributeKey;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lio/netty/util/AttributeKey<Lio/netty/channel/pool/SimpleChannelPool;>;

  private static final java.lang.IllegalStateException FULL_EXCEPTION;
    descriptor: Ljava/lang/IllegalStateException;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.util.Deque<io.netty.channel.Channel> deque;
    descriptor: Ljava/util/Deque;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Deque<Lio/netty/channel/Channel;>;

  private final io.netty.channel.pool.ChannelPoolHandler handler;
    descriptor: Lio/netty/channel/pool/ChannelPoolHandler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.netty.channel.pool.ChannelHealthChecker healthCheck;
    descriptor: Lio/netty/channel/pool/ChannelHealthChecker;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.netty.bootstrap.Bootstrap bootstrap;
    descriptor: Lio/netty/bootstrap/Bootstrap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean releaseHealthCheck;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean lastRecentUsed;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 42
            ldc Lio/netty/channel/pool/SimpleChannelPool;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic io.netty.channel.pool.SimpleChannelPool.$assertionsDisabled:Z
         3: .line 43
            ldc "channelPool"
            invokestatic io.netty.util.AttributeKey.newInstance:(Ljava/lang/String;)Lio/netty/util/AttributeKey;
            putstatic io.netty.channel.pool.SimpleChannelPool.POOL_KEY:Lio/netty/util/AttributeKey;
         4: .line 45
            new java.lang.IllegalStateException
            dup
            ldc "ChannelPool full"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            ldc Lio/netty/channel/pool/SimpleChannelPool;
            ldc "releaseAndOffer(...)"
         5: .line 44
            invokestatic io.netty.util.internal.ThrowableUtil.unknownStackTrace:(Ljava/lang/Throwable;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Throwable;
            checkcast java.lang.IllegalStateException
            putstatic io.netty.channel.pool.SimpleChannelPool.FULL_EXCEPTION:Ljava/lang/IllegalStateException;
         6: .line 45
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(io.netty.bootstrap.Bootstrap, io.netty.channel.pool.ChannelPoolHandler);
    descriptor: (Lio/netty/bootstrap/Bootstrap;Lio/netty/channel/pool/ChannelPoolHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.bootstrap.Bootstrap bootstrap
        start local 2 // io.netty.channel.pool.ChannelPoolHandler handler
         0: .line 61
            aload 0 /* this */
            aload 1 /* bootstrap */
            aload 2 /* handler */
            getstatic io.netty.channel.pool.ChannelHealthChecker.ACTIVE:Lio/netty/channel/pool/ChannelHealthChecker;
            invokespecial io.netty.channel.pool.SimpleChannelPool.<init>:(Lio/netty/bootstrap/Bootstrap;Lio/netty/channel/pool/ChannelPoolHandler;Lio/netty/channel/pool/ChannelHealthChecker;)V
         1: .line 62
            return
        end local 2 // io.netty.channel.pool.ChannelPoolHandler handler
        end local 1 // io.netty.bootstrap.Bootstrap bootstrap
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lio/netty/channel/pool/SimpleChannelPool;
            0    2     1  bootstrap  Lio/netty/bootstrap/Bootstrap;
            0    2     2    handler  Lio/netty/channel/pool/ChannelPoolHandler;
    MethodParameters:
           Name  Flags
      bootstrap  
      handler    final

  public void <init>(io.netty.bootstrap.Bootstrap, io.netty.channel.pool.ChannelPoolHandler, io.netty.channel.pool.ChannelHealthChecker);
    descriptor: (Lio/netty/bootstrap/Bootstrap;Lio/netty/channel/pool/ChannelPoolHandler;Lio/netty/channel/pool/ChannelHealthChecker;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.bootstrap.Bootstrap bootstrap
        start local 2 // io.netty.channel.pool.ChannelPoolHandler handler
        start local 3 // io.netty.channel.pool.ChannelHealthChecker healthCheck
         0: .line 73
            aload 0 /* this */
            aload 1 /* bootstrap */
            aload 2 /* handler */
            aload 3 /* healthCheck */
            iconst_1
            invokespecial io.netty.channel.pool.SimpleChannelPool.<init>:(Lio/netty/bootstrap/Bootstrap;Lio/netty/channel/pool/ChannelPoolHandler;Lio/netty/channel/pool/ChannelHealthChecker;Z)V
         1: .line 74
            return
        end local 3 // io.netty.channel.pool.ChannelHealthChecker healthCheck
        end local 2 // io.netty.channel.pool.ChannelPoolHandler handler
        end local 1 // io.netty.bootstrap.Bootstrap bootstrap
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lio/netty/channel/pool/SimpleChannelPool;
            0    2     1    bootstrap  Lio/netty/bootstrap/Bootstrap;
            0    2     2      handler  Lio/netty/channel/pool/ChannelPoolHandler;
            0    2     3  healthCheck  Lio/netty/channel/pool/ChannelHealthChecker;
    MethodParameters:
             Name  Flags
      bootstrap    
      handler      final
      healthCheck  

  public void <init>(io.netty.bootstrap.Bootstrap, io.netty.channel.pool.ChannelPoolHandler, io.netty.channel.pool.ChannelHealthChecker, boolean);
    descriptor: (Lio/netty/bootstrap/Bootstrap;Lio/netty/channel/pool/ChannelPoolHandler;Lio/netty/channel/pool/ChannelHealthChecker;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.bootstrap.Bootstrap bootstrap
        start local 2 // io.netty.channel.pool.ChannelPoolHandler handler
        start local 3 // io.netty.channel.pool.ChannelHealthChecker healthCheck
        start local 4 // boolean releaseHealthCheck
         0: .line 88
            aload 0 /* this */
            aload 1 /* bootstrap */
            aload 2 /* handler */
            aload 3 /* healthCheck */
            iload 4 /* releaseHealthCheck */
            iconst_1
            invokespecial io.netty.channel.pool.SimpleChannelPool.<init>:(Lio/netty/bootstrap/Bootstrap;Lio/netty/channel/pool/ChannelPoolHandler;Lio/netty/channel/pool/ChannelHealthChecker;ZZ)V
         1: .line 89
            return
        end local 4 // boolean releaseHealthCheck
        end local 3 // io.netty.channel.pool.ChannelHealthChecker healthCheck
        end local 2 // io.netty.channel.pool.ChannelPoolHandler handler
        end local 1 // io.netty.bootstrap.Bootstrap bootstrap
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    2     0                this  Lio/netty/channel/pool/SimpleChannelPool;
            0    2     1           bootstrap  Lio/netty/bootstrap/Bootstrap;
            0    2     2             handler  Lio/netty/channel/pool/ChannelPoolHandler;
            0    2     3         healthCheck  Lio/netty/channel/pool/ChannelHealthChecker;
            0    2     4  releaseHealthCheck  Z
    MethodParameters:
                    Name  Flags
      bootstrap           
      handler             final
      healthCheck         
      releaseHealthCheck  

  public void <init>(io.netty.bootstrap.Bootstrap, io.netty.channel.pool.ChannelPoolHandler, io.netty.channel.pool.ChannelHealthChecker, boolean, boolean);
    descriptor: (Lio/netty/bootstrap/Bootstrap;Lio/netty/channel/pool/ChannelPoolHandler;Lio/netty/channel/pool/ChannelHealthChecker;ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.bootstrap.Bootstrap bootstrap
        start local 2 // io.netty.channel.pool.ChannelPoolHandler handler
        start local 3 // io.netty.channel.pool.ChannelHealthChecker healthCheck
        start local 4 // boolean releaseHealthCheck
        start local 5 // boolean lastRecentUsed
         0: .line 102
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 47
            aload 0 /* this */
            invokestatic io.netty.util.internal.PlatformDependent.newConcurrentDeque:()Ljava/util/Deque;
            putfield io.netty.channel.pool.SimpleChannelPool.deque:Ljava/util/Deque;
         2: .line 104
            aload 0 /* this */
            aload 2 /* handler */
            ldc "handler"
            invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            checkcast io.netty.channel.pool.ChannelPoolHandler
            putfield io.netty.channel.pool.SimpleChannelPool.handler:Lio/netty/channel/pool/ChannelPoolHandler;
         3: .line 105
            aload 0 /* this */
            aload 3 /* healthCheck */
            ldc "healthCheck"
            invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            checkcast io.netty.channel.pool.ChannelHealthChecker
            putfield io.netty.channel.pool.SimpleChannelPool.healthCheck:Lio/netty/channel/pool/ChannelHealthChecker;
         4: .line 106
            aload 0 /* this */
            iload 4 /* releaseHealthCheck */
            putfield io.netty.channel.pool.SimpleChannelPool.releaseHealthCheck:Z
         5: .line 108
            aload 0 /* this */
            aload 1 /* bootstrap */
            ldc "bootstrap"
            invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            checkcast io.netty.bootstrap.Bootstrap
            invokevirtual io.netty.bootstrap.Bootstrap.clone:()Lio/netty/bootstrap/Bootstrap;
            putfield io.netty.channel.pool.SimpleChannelPool.bootstrap:Lio/netty/bootstrap/Bootstrap;
         6: .line 109
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.bootstrap:Lio/netty/bootstrap/Bootstrap;
            new io.netty.channel.pool.SimpleChannelPool$1
            dup
            aload 0 /* this */
            aload 2 /* handler */
            invokespecial io.netty.channel.pool.SimpleChannelPool$1.<init>:(Lio/netty/channel/pool/SimpleChannelPool;Lio/netty/channel/pool/ChannelPoolHandler;)V
            invokevirtual io.netty.bootstrap.Bootstrap.handler:(Lio/netty/channel/ChannelHandler;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
         7: .line 116
            aload 0 /* this */
            iload 5 /* lastRecentUsed */
            putfield io.netty.channel.pool.SimpleChannelPool.lastRecentUsed:Z
         8: .line 117
            return
        end local 5 // boolean lastRecentUsed
        end local 4 // boolean releaseHealthCheck
        end local 3 // io.netty.channel.pool.ChannelHealthChecker healthCheck
        end local 2 // io.netty.channel.pool.ChannelPoolHandler handler
        end local 1 // io.netty.bootstrap.Bootstrap bootstrap
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    9     0                this  Lio/netty/channel/pool/SimpleChannelPool;
            0    9     1           bootstrap  Lio/netty/bootstrap/Bootstrap;
            0    9     2             handler  Lio/netty/channel/pool/ChannelPoolHandler;
            0    9     3         healthCheck  Lio/netty/channel/pool/ChannelHealthChecker;
            0    9     4  releaseHealthCheck  Z
            0    9     5      lastRecentUsed  Z
    MethodParameters:
                    Name  Flags
      bootstrap           
      handler             final
      healthCheck         
      releaseHealthCheck  
      lastRecentUsed      

  protected io.netty.bootstrap.Bootstrap bootstrap();
    descriptor: ()Lio/netty/bootstrap/Bootstrap;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
         0: .line 125
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.bootstrap:Lio/netty/bootstrap/Bootstrap;
            areturn
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/pool/SimpleChannelPool;

  protected io.netty.channel.pool.ChannelPoolHandler handler();
    descriptor: ()Lio/netty/channel/pool/ChannelPoolHandler;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
         0: .line 134
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.handler:Lio/netty/channel/pool/ChannelPoolHandler;
            areturn
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/pool/SimpleChannelPool;

  protected io.netty.channel.pool.ChannelHealthChecker healthChecker();
    descriptor: ()Lio/netty/channel/pool/ChannelHealthChecker;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
         0: .line 143
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.healthCheck:Lio/netty/channel/pool/ChannelHealthChecker;
            areturn
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/pool/SimpleChannelPool;

  protected boolean releaseHealthCheck();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
         0: .line 153
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.releaseHealthCheck:Z
            ireturn
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/pool/SimpleChannelPool;

  public final io.netty.util.concurrent.Future<io.netty.channel.Channel> acquire();
    descriptor: ()Lio/netty/util/concurrent/Future;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
         0: .line 158
            aload 0 /* this */
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.bootstrap:Lio/netty/bootstrap/Bootstrap;
            invokevirtual io.netty.bootstrap.Bootstrap.config:()Lio/netty/bootstrap/BootstrapConfig;
            invokevirtual io.netty.bootstrap.BootstrapConfig.group:()Lio/netty/channel/EventLoopGroup;
            invokeinterface io.netty.channel.EventLoopGroup.next:()Lio/netty/channel/EventLoop;
            invokeinterface io.netty.channel.EventLoop.newPromise:()Lio/netty/util/concurrent/Promise;
            invokevirtual io.netty.channel.pool.SimpleChannelPool.acquire:(Lio/netty/util/concurrent/Promise;)Lio/netty/util/concurrent/Future;
            areturn
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/pool/SimpleChannelPool;
    Signature: ()Lio/netty/util/concurrent/Future<Lio/netty/channel/Channel;>;

  public io.netty.util.concurrent.Future<io.netty.channel.Channel> acquire(io.netty.util.concurrent.Promise<io.netty.channel.Channel>);
    descriptor: (Lio/netty/util/concurrent/Promise;)Lio/netty/util/concurrent/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.util.concurrent.Promise promise
         0: .line 163
            aload 1 /* promise */
            ldc "promise"
            invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 164
            aload 0 /* this */
            aload 1 /* promise */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.acquireHealthyFromPoolOrNew:(Lio/netty/util/concurrent/Promise;)Lio/netty/util/concurrent/Future;
            areturn
        end local 1 // io.netty.util.concurrent.Promise promise
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0    2     1  promise  Lio/netty/util/concurrent/Promise<Lio/netty/channel/Channel;>;
    Signature: (Lio/netty/util/concurrent/Promise<Lio/netty/channel/Channel;>;)Lio/netty/util/concurrent/Future<Lio/netty/channel/Channel;>;
    MethodParameters:
         Name  Flags
      promise  final

  private io.netty.util.concurrent.Future<io.netty.channel.Channel> acquireHealthyFromPoolOrNew(io.netty.util.concurrent.Promise<io.netty.channel.Channel>);
    descriptor: (Lio/netty/util/concurrent/Promise;)Lio/netty/util/concurrent/Future;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.util.concurrent.Promise promise
         0: .line 174
            aload 0 /* this */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.pollChannel:()Lio/netty/channel/Channel;
            astore 2 /* ch */
        start local 2 // io.netty.channel.Channel ch
         1: .line 175
            aload 2 /* ch */
            ifnonnull 11
         2: .line 177
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.bootstrap:Lio/netty/bootstrap/Bootstrap;
            invokevirtual io.netty.bootstrap.Bootstrap.clone:()Lio/netty/bootstrap/Bootstrap;
            astore 3 /* bs */
        start local 3 // io.netty.bootstrap.Bootstrap bs
         3: .line 178
            aload 3 /* bs */
            getstatic io.netty.channel.pool.SimpleChannelPool.POOL_KEY:Lio/netty/util/AttributeKey;
            aload 0 /* this */
            invokevirtual io.netty.bootstrap.Bootstrap.attr:(Lio/netty/util/AttributeKey;Ljava/lang/Object;)Lio/netty/bootstrap/AbstractBootstrap;
            pop
         4: .line 179
            aload 0 /* this */
            aload 3 /* bs */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.connectChannel:(Lio/netty/bootstrap/Bootstrap;)Lio/netty/channel/ChannelFuture;
            astore 4 /* f */
        start local 4 // io.netty.channel.ChannelFuture f
         5: .line 180
            aload 4 /* f */
            invokeinterface io.netty.channel.ChannelFuture.isDone:()Z
            ifeq 8
         6: .line 181
            aload 0 /* this */
            aload 4 /* f */
            aload 1 /* promise */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.notifyConnect:(Lio/netty/channel/ChannelFuture;Lio/netty/util/concurrent/Promise;)V
         7: .line 182
            goto 9
         8: .line 183
      StackMap locals: io.netty.channel.Channel io.netty.bootstrap.Bootstrap io.netty.channel.ChannelFuture
      StackMap stack:
            aload 4 /* f */
            new io.netty.channel.pool.SimpleChannelPool$2
            dup
            aload 0 /* this */
            aload 1 /* promise */
            invokespecial io.netty.channel.pool.SimpleChannelPool$2.<init>:(Lio/netty/channel/pool/SimpleChannelPool;Lio/netty/util/concurrent/Promise;)V
            invokeinterface io.netty.channel.ChannelFuture.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture;
            pop
         9: .line 190
      StackMap locals:
      StackMap stack:
            aload 1 /* promise */
        10: areturn
        end local 4 // io.netty.channel.ChannelFuture f
        end local 3 // io.netty.bootstrap.Bootstrap bs
        11: .line 192
      StackMap locals:
      StackMap stack:
            aload 2 /* ch */
            invokeinterface io.netty.channel.Channel.eventLoop:()Lio/netty/channel/EventLoop;
            astore 3 /* loop */
        start local 3 // io.netty.channel.EventLoop loop
        12: .line 193
            aload 3 /* loop */
            invokeinterface io.netty.channel.EventLoop.inEventLoop:()Z
            ifeq 15
        13: .line 194
            aload 0 /* this */
            aload 2 /* ch */
            aload 1 /* promise */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.doHealthCheck:(Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
        14: .line 195
            goto 19
        15: .line 196
      StackMap locals: io.netty.channel.EventLoop
      StackMap stack:
            aload 3 /* loop */
            new io.netty.channel.pool.SimpleChannelPool$3
            dup
            aload 0 /* this */
            aload 2 /* ch */
            aload 1 /* promise */
            invokespecial io.netty.channel.pool.SimpleChannelPool$3.<init>:(Lio/netty/channel/pool/SimpleChannelPool;Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
            invokeinterface io.netty.channel.EventLoop.execute:(Ljava/lang/Runnable;)V
        end local 3 // io.netty.channel.EventLoop loop
        end local 2 // io.netty.channel.Channel ch
        16: .line 203
            goto 19
      StackMap locals: io.netty.channel.pool.SimpleChannelPool io.netty.util.concurrent.Promise
      StackMap stack: java.lang.Throwable
        17: astore 2 /* cause */
        start local 2 // java.lang.Throwable cause
        18: .line 204
            aload 1 /* promise */
            aload 2 /* cause */
            invokeinterface io.netty.util.concurrent.Promise.tryFailure:(Ljava/lang/Throwable;)Z
            pop
        end local 2 // java.lang.Throwable cause
        19: .line 206
      StackMap locals:
      StackMap stack:
            aload 1 /* promise */
            areturn
        end local 1 // io.netty.util.concurrent.Promise promise
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   20     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0   20     1  promise  Lio/netty/util/concurrent/Promise<Lio/netty/channel/Channel;>;
            1   16     2       ch  Lio/netty/channel/Channel;
            3   11     3       bs  Lio/netty/bootstrap/Bootstrap;
            5   11     4        f  Lio/netty/channel/ChannelFuture;
           12   16     3     loop  Lio/netty/channel/EventLoop;
           18   19     2    cause  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0    10      17  Class java.lang.Throwable
          11    16      17  Class java.lang.Throwable
    Signature: (Lio/netty/util/concurrent/Promise<Lio/netty/channel/Channel;>;)Lio/netty/util/concurrent/Future<Lio/netty/channel/Channel;>;
    MethodParameters:
         Name  Flags
      promise  final

  private void notifyConnect(io.netty.channel.ChannelFuture, io.netty.util.concurrent.Promise<io.netty.channel.Channel>);
    descriptor: (Lio/netty/channel/ChannelFuture;Lio/netty/util/concurrent/Promise;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.channel.ChannelFuture future
        start local 2 // io.netty.util.concurrent.Promise promise
         0: .line 210
            aload 1 /* future */
            invokeinterface io.netty.channel.ChannelFuture.isSuccess:()Z
            ifeq 5
         1: .line 211
            aload 1 /* future */
            invokeinterface io.netty.channel.ChannelFuture.channel:()Lio/netty/channel/Channel;
            astore 3 /* channel */
        start local 3 // io.netty.channel.Channel channel
         2: .line 212
            aload 2 /* promise */
            aload 3 /* channel */
            invokeinterface io.netty.util.concurrent.Promise.trySuccess:(Ljava/lang/Object;)Z
            ifne 6
         3: .line 214
            aload 0 /* this */
            aload 3 /* channel */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.release:(Lio/netty/channel/Channel;)Lio/netty/util/concurrent/Future;
            pop
        end local 3 // io.netty.channel.Channel channel
         4: .line 216
            goto 6
         5: .line 217
      StackMap locals:
      StackMap stack:
            aload 2 /* promise */
            aload 1 /* future */
            invokeinterface io.netty.channel.ChannelFuture.cause:()Ljava/lang/Throwable;
            invokeinterface io.netty.util.concurrent.Promise.tryFailure:(Ljava/lang/Throwable;)Z
            pop
         6: .line 219
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.netty.util.concurrent.Promise promise
        end local 1 // io.netty.channel.ChannelFuture future
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0    7     1   future  Lio/netty/channel/ChannelFuture;
            0    7     2  promise  Lio/netty/util/concurrent/Promise<Lio/netty/channel/Channel;>;
            2    4     3  channel  Lio/netty/channel/Channel;
    Signature: (Lio/netty/channel/ChannelFuture;Lio/netty/util/concurrent/Promise<Lio/netty/channel/Channel;>;)V
    MethodParameters:
         Name  Flags
      future   
      promise  

  private void doHealthCheck(io.netty.channel.Channel, io.netty.util.concurrent.Promise<io.netty.channel.Channel>);
    descriptor: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.channel.Channel ch
        start local 2 // io.netty.util.concurrent.Promise promise
         0: .line 222
            getstatic io.netty.channel.pool.SimpleChannelPool.$assertionsDisabled:Z
            ifne 1
            aload 1 /* ch */
            invokeinterface io.netty.channel.Channel.eventLoop:()Lio/netty/channel/EventLoop;
            invokeinterface io.netty.channel.EventLoop.inEventLoop:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 224
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.healthCheck:Lio/netty/channel/pool/ChannelHealthChecker;
            aload 1 /* ch */
            invokeinterface io.netty.channel.pool.ChannelHealthChecker.isHealthy:(Lio/netty/channel/Channel;)Lio/netty/util/concurrent/Future;
            astore 3 /* f */
        start local 3 // io.netty.util.concurrent.Future f
         2: .line 225
            aload 3 /* f */
            invokeinterface io.netty.util.concurrent.Future.isDone:()Z
            ifeq 5
         3: .line 226
            aload 0 /* this */
            aload 3 /* f */
            aload 1 /* ch */
            aload 2 /* promise */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.notifyHealthCheck:(Lio/netty/util/concurrent/Future;Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
         4: .line 227
            goto 6
         5: .line 228
      StackMap locals: io.netty.util.concurrent.Future
      StackMap stack:
            aload 3 /* f */
            new io.netty.channel.pool.SimpleChannelPool$4
            dup
            aload 0 /* this */
            aload 1 /* ch */
            aload 2 /* promise */
            invokespecial io.netty.channel.pool.SimpleChannelPool$4.<init>:(Lio/netty/channel/pool/SimpleChannelPool;Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
            invokeinterface io.netty.util.concurrent.Future.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/util/concurrent/Future;
            pop
         6: .line 235
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.netty.util.concurrent.Future f
        end local 2 // io.netty.util.concurrent.Promise promise
        end local 1 // io.netty.channel.Channel ch
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0    7     1       ch  Lio/netty/channel/Channel;
            0    7     2  promise  Lio/netty/util/concurrent/Promise<Lio/netty/channel/Channel;>;
            2    7     3        f  Lio/netty/util/concurrent/Future<Ljava/lang/Boolean;>;
    Signature: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise<Lio/netty/channel/Channel;>;)V
    MethodParameters:
         Name  Flags
      ch       final
      promise  final

  private void notifyHealthCheck(io.netty.util.concurrent.Future<java.lang.Boolean>, io.netty.channel.Channel, io.netty.util.concurrent.Promise<io.netty.channel.Channel>);
    descriptor: (Lio/netty/util/concurrent/Future;Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.util.concurrent.Future future
        start local 2 // io.netty.channel.Channel ch
        start local 3 // io.netty.util.concurrent.Promise promise
         0: .line 238
            getstatic io.netty.channel.pool.SimpleChannelPool.$assertionsDisabled:Z
            ifne 1
            aload 2 /* ch */
            invokeinterface io.netty.channel.Channel.eventLoop:()Lio/netty/channel/EventLoop;
            invokeinterface io.netty.channel.EventLoop.inEventLoop:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 240
      StackMap locals:
      StackMap stack:
            aload 1 /* future */
            invokeinterface io.netty.util.concurrent.Future.isSuccess:()Z
            ifeq 13
         2: .line 241
            aload 1 /* future */
            invokeinterface io.netty.util.concurrent.Future.getNow:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 10
         3: .line 243
            aload 2 /* ch */
            getstatic io.netty.channel.pool.SimpleChannelPool.POOL_KEY:Lio/netty/util/AttributeKey;
            invokeinterface io.netty.channel.Channel.attr:(Lio/netty/util/AttributeKey;)Lio/netty/util/Attribute;
            aload 0 /* this */
            invokeinterface io.netty.util.Attribute.set:(Ljava/lang/Object;)V
         4: .line 244
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.handler:Lio/netty/channel/pool/ChannelPoolHandler;
            aload 2 /* ch */
            invokeinterface io.netty.channel.pool.ChannelPoolHandler.channelAcquired:(Lio/netty/channel/Channel;)V
         5: .line 245
            aload 3 /* promise */
            aload 2 /* ch */
            invokeinterface io.netty.util.concurrent.Promise.setSuccess:(Ljava/lang/Object;)Lio/netty/util/concurrent/Promise;
            pop
         6: .line 246
            goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 4 /* cause */
        start local 4 // java.lang.Throwable cause
         8: .line 247
            aload 2 /* ch */
            aload 4 /* cause */
            aload 3 /* promise */
            invokestatic io.netty.channel.pool.SimpleChannelPool.closeAndFail:(Lio/netty/channel/Channel;Ljava/lang/Throwable;Lio/netty/util/concurrent/Promise;)V
        end local 4 // java.lang.Throwable cause
         9: .line 249
            goto 15
        10: .line 250
      StackMap locals:
      StackMap stack:
            aload 2 /* ch */
            invokestatic io.netty.channel.pool.SimpleChannelPool.closeChannel:(Lio/netty/channel/Channel;)V
        11: .line 251
            aload 0 /* this */
            aload 3 /* promise */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.acquireHealthyFromPoolOrNew:(Lio/netty/util/concurrent/Promise;)Lio/netty/util/concurrent/Future;
            pop
        12: .line 253
            goto 15
        13: .line 254
      StackMap locals:
      StackMap stack:
            aload 2 /* ch */
            invokestatic io.netty.channel.pool.SimpleChannelPool.closeChannel:(Lio/netty/channel/Channel;)V
        14: .line 255
            aload 0 /* this */
            aload 3 /* promise */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.acquireHealthyFromPoolOrNew:(Lio/netty/util/concurrent/Promise;)Lio/netty/util/concurrent/Future;
            pop
        15: .line 257
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.netty.util.concurrent.Promise promise
        end local 2 // io.netty.channel.Channel ch
        end local 1 // io.netty.util.concurrent.Future future
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0   16     1   future  Lio/netty/util/concurrent/Future<Ljava/lang/Boolean;>;
            0   16     2       ch  Lio/netty/channel/Channel;
            0   16     3  promise  Lio/netty/util/concurrent/Promise<Lio/netty/channel/Channel;>;
            8    9     4    cause  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           3     6       7  Class java.lang.Throwable
    Signature: (Lio/netty/util/concurrent/Future<Ljava/lang/Boolean;>;Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise<Lio/netty/channel/Channel;>;)V
    MethodParameters:
         Name  Flags
      future   
      ch       
      promise  

  protected io.netty.channel.ChannelFuture connectChannel(io.netty.bootstrap.Bootstrap);
    descriptor: (Lio/netty/bootstrap/Bootstrap;)Lio/netty/channel/ChannelFuture;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.bootstrap.Bootstrap bs
         0: .line 266
            aload 1 /* bs */
            invokevirtual io.netty.bootstrap.Bootstrap.connect:()Lio/netty/channel/ChannelFuture;
            areturn
        end local 1 // io.netty.bootstrap.Bootstrap bs
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/channel/pool/SimpleChannelPool;
            0    1     1    bs  Lio/netty/bootstrap/Bootstrap;
    MethodParameters:
      Name  Flags
      bs    

  public final io.netty.util.concurrent.Future<java.lang.Void> release(io.netty.channel.Channel);
    descriptor: (Lio/netty/channel/Channel;)Lio/netty/util/concurrent/Future;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.channel.Channel channel
         0: .line 271
            aload 0 /* this */
            aload 1 /* channel */
            aload 1 /* channel */
            invokeinterface io.netty.channel.Channel.eventLoop:()Lio/netty/channel/EventLoop;
            invokeinterface io.netty.channel.EventLoop.newPromise:()Lio/netty/util/concurrent/Promise;
            invokevirtual io.netty.channel.pool.SimpleChannelPool.release:(Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)Lio/netty/util/concurrent/Future;
            areturn
        end local 1 // io.netty.channel.Channel channel
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0    1     1  channel  Lio/netty/channel/Channel;
    Signature: (Lio/netty/channel/Channel;)Lio/netty/util/concurrent/Future<Ljava/lang/Void;>;
    MethodParameters:
         Name  Flags
      channel  

  public io.netty.util.concurrent.Future<java.lang.Void> release(io.netty.channel.Channel, io.netty.util.concurrent.Promise<java.lang.Void>);
    descriptor: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)Lio/netty/util/concurrent/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.channel.Channel channel
        start local 2 // io.netty.util.concurrent.Promise promise
         0: .line 276
            aload 1 /* channel */
            ldc "channel"
            invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 277
            aload 2 /* promise */
            ldc "promise"
            invokestatic io.netty.util.internal.ObjectUtil.checkNotNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 279
            aload 1 /* channel */
            invokeinterface io.netty.channel.Channel.eventLoop:()Lio/netty/channel/EventLoop;
            astore 3 /* loop */
        start local 3 // io.netty.channel.EventLoop loop
         3: .line 280
            aload 3 /* loop */
            invokeinterface io.netty.channel.EventLoop.inEventLoop:()Z
            ifeq 6
         4: .line 281
            aload 0 /* this */
            aload 1 /* channel */
            aload 2 /* promise */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.doReleaseChannel:(Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
         5: .line 282
            goto 10
         6: .line 283
      StackMap locals: io.netty.channel.EventLoop
      StackMap stack:
            aload 3 /* loop */
            new io.netty.channel.pool.SimpleChannelPool$5
            dup
            aload 0 /* this */
            aload 1 /* channel */
            aload 2 /* promise */
            invokespecial io.netty.channel.pool.SimpleChannelPool$5.<init>:(Lio/netty/channel/pool/SimpleChannelPool;Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
            invokeinterface io.netty.channel.EventLoop.execute:(Ljava/lang/Runnable;)V
        end local 3 // io.netty.channel.EventLoop loop
         7: .line 290
            goto 10
      StackMap locals: io.netty.channel.pool.SimpleChannelPool io.netty.channel.Channel io.netty.util.concurrent.Promise
      StackMap stack: java.lang.Throwable
         8: astore 3 /* cause */
        start local 3 // java.lang.Throwable cause
         9: .line 291
            aload 1 /* channel */
            aload 3 /* cause */
            aload 2 /* promise */
            invokestatic io.netty.channel.pool.SimpleChannelPool.closeAndFail:(Lio/netty/channel/Channel;Ljava/lang/Throwable;Lio/netty/util/concurrent/Promise;)V
        end local 3 // java.lang.Throwable cause
        10: .line 293
      StackMap locals:
      StackMap stack:
            aload 2 /* promise */
            areturn
        end local 2 // io.netty.util.concurrent.Promise promise
        end local 1 // io.netty.channel.Channel channel
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0   11     1  channel  Lio/netty/channel/Channel;
            0   11     2  promise  Lio/netty/util/concurrent/Promise<Ljava/lang/Void;>;
            3    7     3     loop  Lio/netty/channel/EventLoop;
            9   10     3    cause  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     7       8  Class java.lang.Throwable
    Signature: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise<Ljava/lang/Void;>;)Lio/netty/util/concurrent/Future<Ljava/lang/Void;>;
    MethodParameters:
         Name  Flags
      channel  final
      promise  final

  private void doReleaseChannel(io.netty.channel.Channel, io.netty.util.concurrent.Promise<java.lang.Void>);
    descriptor: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.channel.Channel channel
        start local 2 // io.netty.util.concurrent.Promise promise
         0: .line 297
            getstatic io.netty.channel.pool.SimpleChannelPool.$assertionsDisabled:Z
            ifne 1
            aload 1 /* channel */
            invokeinterface io.netty.channel.Channel.eventLoop:()Lio/netty/channel/EventLoop;
            invokeinterface io.netty.channel.EventLoop.inEventLoop:()Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 299
      StackMap locals:
      StackMap stack:
            aload 1 /* channel */
            getstatic io.netty.channel.pool.SimpleChannelPool.POOL_KEY:Lio/netty/util/AttributeKey;
            invokeinterface io.netty.channel.Channel.attr:(Lio/netty/util/AttributeKey;)Lio/netty/util/Attribute;
            aconst_null
            invokeinterface io.netty.util.Attribute.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
            aload 0 /* this */
            if_acmpeq 9
         2: .line 300
            aload 1 /* channel */
         3: .line 302
            new java.lang.IllegalArgumentException
            dup
         4: .line 303
            new java.lang.StringBuilder
            dup
            ldc "Channel "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* channel */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " was not acquired from this ChannelPool"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 302
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
         6: .line 304
            aload 2 /* promise */
         7: .line 300
            invokestatic io.netty.channel.pool.SimpleChannelPool.closeAndFail:(Lio/netty/channel/Channel;Ljava/lang/Throwable;Lio/netty/util/concurrent/Promise;)V
         8: .line 305
            goto 16
         9: .line 307
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.releaseHealthCheck:Z
            ifeq 12
        10: .line 308
            aload 0 /* this */
            aload 1 /* channel */
            aload 2 /* promise */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.doHealthCheckOnRelease:(Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
        11: .line 309
            goto 16
        12: .line 310
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* channel */
            aload 2 /* promise */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.releaseAndOffer:(Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
        13: .line 312
            goto 16
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: astore 3 /* cause */
        start local 3 // java.lang.Throwable cause
        15: .line 313
            aload 1 /* channel */
            aload 3 /* cause */
            aload 2 /* promise */
            invokestatic io.netty.channel.pool.SimpleChannelPool.closeAndFail:(Lio/netty/channel/Channel;Ljava/lang/Throwable;Lio/netty/util/concurrent/Promise;)V
        end local 3 // java.lang.Throwable cause
        16: .line 316
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.netty.util.concurrent.Promise promise
        end local 1 // io.netty.channel.Channel channel
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   17     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0   17     1  channel  Lio/netty/channel/Channel;
            0   17     2  promise  Lio/netty/util/concurrent/Promise<Ljava/lang/Void;>;
           15   16     3    cause  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           9    13      14  Class java.lang.Throwable
    Signature: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
         Name  Flags
      channel  
      promise  

  private void doHealthCheckOnRelease(io.netty.channel.Channel, io.netty.util.concurrent.Promise<java.lang.Void>);
    descriptor: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=4, args_size=3
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.channel.Channel channel
        start local 2 // io.netty.util.concurrent.Promise promise
         0: .line 319
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.healthCheck:Lio/netty/channel/pool/ChannelHealthChecker;
            aload 1 /* channel */
            invokeinterface io.netty.channel.pool.ChannelHealthChecker.isHealthy:(Lio/netty/channel/Channel;)Lio/netty/util/concurrent/Future;
            astore 3 /* f */
        start local 3 // io.netty.util.concurrent.Future f
         1: .line 320
            aload 3 /* f */
            invokeinterface io.netty.util.concurrent.Future.isDone:()Z
            ifeq 4
         2: .line 321
            aload 0 /* this */
            aload 1 /* channel */
            aload 2 /* promise */
            aload 3 /* f */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.releaseAndOfferIfHealthy:(Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;Lio/netty/util/concurrent/Future;)V
         3: .line 322
            goto 5
         4: .line 323
      StackMap locals: io.netty.util.concurrent.Future
      StackMap stack:
            aload 3 /* f */
            new io.netty.channel.pool.SimpleChannelPool$6
            dup
            aload 0 /* this */
            aload 1 /* channel */
            aload 2 /* promise */
            aload 3 /* f */
            invokespecial io.netty.channel.pool.SimpleChannelPool$6.<init>:(Lio/netty/channel/pool/SimpleChannelPool;Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;Lio/netty/util/concurrent/Future;)V
            invokeinterface io.netty.util.concurrent.Future.addListener:(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/util/concurrent/Future;
            pop
         5: .line 330
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.netty.util.concurrent.Future f
        end local 2 // io.netty.util.concurrent.Promise promise
        end local 1 // io.netty.channel.Channel channel
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0    6     1  channel  Lio/netty/channel/Channel;
            0    6     2  promise  Lio/netty/util/concurrent/Promise<Ljava/lang/Void;>;
            1    6     3        f  Lio/netty/util/concurrent/Future<Ljava/lang/Boolean;>;
    Exceptions:
      throws java.lang.Exception
    Signature: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
         Name  Flags
      channel  final
      promise  final

  private void releaseAndOfferIfHealthy(io.netty.channel.Channel, io.netty.util.concurrent.Promise<java.lang.Void>, io.netty.util.concurrent.Future<java.lang.Boolean>);
    descriptor: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;Lio/netty/util/concurrent/Future;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.channel.Channel channel
        start local 2 // io.netty.util.concurrent.Promise promise
        start local 3 // io.netty.util.concurrent.Future future
         0: .line 341
            aload 3 /* future */
            invokeinterface io.netty.util.concurrent.Future.getNow:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 3
         1: .line 342
            aload 0 /* this */
            aload 1 /* channel */
            aload 2 /* promise */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.releaseAndOffer:(Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
         2: .line 343
            goto 5
         3: .line 344
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.handler:Lio/netty/channel/pool/ChannelPoolHandler;
            aload 1 /* channel */
            invokeinterface io.netty.channel.pool.ChannelPoolHandler.channelReleased:(Lio/netty/channel/Channel;)V
         4: .line 345
            aload 2 /* promise */
            aconst_null
            invokeinterface io.netty.util.concurrent.Promise.setSuccess:(Ljava/lang/Object;)Lio/netty/util/concurrent/Promise;
            pop
         5: .line 347
      StackMap locals:
      StackMap stack:
            return
        end local 3 // io.netty.util.concurrent.Future future
        end local 2 // io.netty.util.concurrent.Promise promise
        end local 1 // io.netty.channel.Channel channel
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0    6     1  channel  Lio/netty/channel/Channel;
            0    6     2  promise  Lio/netty/util/concurrent/Promise<Ljava/lang/Void;>;
            0    6     3   future  Lio/netty/util/concurrent/Future<Ljava/lang/Boolean;>;
    Exceptions:
      throws java.lang.Exception
    Signature: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise<Ljava/lang/Void;>;Lio/netty/util/concurrent/Future<Ljava/lang/Boolean;>;)V
    MethodParameters:
         Name  Flags
      channel  
      promise  
      future   

  private void releaseAndOffer(io.netty.channel.Channel, io.netty.util.concurrent.Promise<java.lang.Void>);
    descriptor: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.channel.Channel channel
        start local 2 // io.netty.util.concurrent.Promise promise
         0: .line 350
            aload 0 /* this */
            aload 1 /* channel */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.offerChannel:(Lio/netty/channel/Channel;)Z
            ifeq 4
         1: .line 351
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.handler:Lio/netty/channel/pool/ChannelPoolHandler;
            aload 1 /* channel */
            invokeinterface io.netty.channel.pool.ChannelPoolHandler.channelReleased:(Lio/netty/channel/Channel;)V
         2: .line 352
            aload 2 /* promise */
            aconst_null
            invokeinterface io.netty.util.concurrent.Promise.setSuccess:(Ljava/lang/Object;)Lio/netty/util/concurrent/Promise;
            pop
         3: .line 353
            goto 5
         4: .line 354
      StackMap locals:
      StackMap stack:
            aload 1 /* channel */
            getstatic io.netty.channel.pool.SimpleChannelPool.FULL_EXCEPTION:Ljava/lang/IllegalStateException;
            aload 2 /* promise */
            invokestatic io.netty.channel.pool.SimpleChannelPool.closeAndFail:(Lio/netty/channel/Channel;Ljava/lang/Throwable;Lio/netty/util/concurrent/Promise;)V
         5: .line 356
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.netty.util.concurrent.Promise promise
        end local 1 // io.netty.channel.Channel channel
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0    6     1  channel  Lio/netty/channel/Channel;
            0    6     2  promise  Lio/netty/util/concurrent/Promise<Ljava/lang/Void;>;
    Exceptions:
      throws java.lang.Exception
    Signature: (Lio/netty/channel/Channel;Lio/netty/util/concurrent/Promise<Ljava/lang/Void;>;)V
    MethodParameters:
         Name  Flags
      channel  
      promise  

  private static void closeChannel(io.netty.channel.Channel);
    descriptor: (Lio/netty/channel/Channel;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.channel.Channel channel
         0: .line 359
            aload 0 /* channel */
            getstatic io.netty.channel.pool.SimpleChannelPool.POOL_KEY:Lio/netty/util/AttributeKey;
            invokeinterface io.netty.channel.Channel.attr:(Lio/netty/util/AttributeKey;)Lio/netty/util/Attribute;
            aconst_null
            invokeinterface io.netty.util.Attribute.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 360
            aload 0 /* channel */
            invokeinterface io.netty.channel.Channel.close:()Lio/netty/channel/ChannelFuture;
            pop
         2: .line 361
            return
        end local 0 // io.netty.channel.Channel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  channel  Lio/netty/channel/Channel;
    MethodParameters:
         Name  Flags
      channel  

  private static void closeAndFail(io.netty.channel.Channel, java.lang.Throwable, io.netty.util.concurrent.Promise<?>);
    descriptor: (Lio/netty/channel/Channel;Ljava/lang/Throwable;Lio/netty/util/concurrent/Promise;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.netty.channel.Channel channel
        start local 1 // java.lang.Throwable cause
        start local 2 // io.netty.util.concurrent.Promise promise
         0: .line 364
            aload 0 /* channel */
            invokestatic io.netty.channel.pool.SimpleChannelPool.closeChannel:(Lio/netty/channel/Channel;)V
         1: .line 365
            aload 2 /* promise */
            aload 1 /* cause */
            invokeinterface io.netty.util.concurrent.Promise.tryFailure:(Ljava/lang/Throwable;)Z
            pop
         2: .line 366
            return
        end local 2 // io.netty.util.concurrent.Promise promise
        end local 1 // java.lang.Throwable cause
        end local 0 // io.netty.channel.Channel channel
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  channel  Lio/netty/channel/Channel;
            0    3     1    cause  Ljava/lang/Throwable;
            0    3     2  promise  Lio/netty/util/concurrent/Promise<*>;
    Signature: (Lio/netty/channel/Channel;Ljava/lang/Throwable;Lio/netty/util/concurrent/Promise<*>;)V
    MethodParameters:
         Name  Flags
      channel  
      cause    
      promise  

  protected io.netty.channel.Channel pollChannel();
    descriptor: ()Lio/netty/channel/Channel;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
         0: .line 376
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.lastRecentUsed:Z
            ifeq 1
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.deque:Ljava/util/Deque;
            invokeinterface java.util.Deque.pollLast:()Ljava/lang/Object;
            checkcast io.netty.channel.Channel
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.deque:Ljava/util/Deque;
            invokeinterface java.util.Deque.pollFirst:()Ljava/lang/Object;
            checkcast io.netty.channel.Channel
      StackMap locals:
      StackMap stack: io.netty.channel.Channel
         2: areturn
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/channel/pool/SimpleChannelPool;

  protected boolean offerChannel(io.netty.channel.Channel);
    descriptor: (Lio/netty/channel/Channel;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
        start local 1 // io.netty.channel.Channel channel
         0: .line 387
            aload 0 /* this */
            getfield io.netty.channel.pool.SimpleChannelPool.deque:Ljava/util/Deque;
            aload 1 /* channel */
            invokeinterface java.util.Deque.offer:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // io.netty.channel.Channel channel
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            0    1     1  channel  Lio/netty/channel/Channel;
    MethodParameters:
         Name  Flags
      channel  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // io.netty.channel.pool.SimpleChannelPool this
         0: .line 393
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.channel.pool.SimpleChannelPool.pollChannel:()Lio/netty/channel/Channel;
            astore 1 /* channel */
        start local 1 // io.netty.channel.Channel channel
         1: .line 394
            aload 1 /* channel */
            ifnonnull 3
         2: .line 395
            goto 5
         3: .line 397
      StackMap locals: io.netty.channel.Channel
      StackMap stack:
            aload 1 /* channel */
            invokeinterface io.netty.channel.Channel.close:()Lio/netty/channel/ChannelFuture;
            pop
        end local 1 // io.netty.channel.Channel channel
         4: .line 392
            goto 0
         5: .line 399
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.netty.channel.pool.SimpleChannelPool this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lio/netty/channel/pool/SimpleChannelPool;
            1    4     1  channel  Lio/netty/channel/Channel;
}
SourceFile: "SimpleChannelPool.java"
NestMembers:
  io.netty.channel.pool.SimpleChannelPool$1  io.netty.channel.pool.SimpleChannelPool$2  io.netty.channel.pool.SimpleChannelPool$3  io.netty.channel.pool.SimpleChannelPool$4  io.netty.channel.pool.SimpleChannelPool$5  io.netty.channel.pool.SimpleChannelPool$6
InnerClasses:
  io.netty.channel.pool.SimpleChannelPool$1
  io.netty.channel.pool.SimpleChannelPool$2
  io.netty.channel.pool.SimpleChannelPool$3
  io.netty.channel.pool.SimpleChannelPool$4
  io.netty.channel.pool.SimpleChannelPool$5
  io.netty.channel.pool.SimpleChannelPool$6