public final class com.zaxxer.hikari.pool.HikariPool extends com.zaxxer.hikari.pool.PoolBase implements com.zaxxer.hikari.HikariPoolMXBean, com.zaxxer.hikari.util.ConcurrentBag$IBagStateListener
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.zaxxer.hikari.pool.HikariPool
  super_class: com.zaxxer.hikari.pool.PoolBase
{
  private final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public static final int POOL_NORMAL;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int POOL_SUSPENDED;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int POOL_SHUTDOWN;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public volatile int poolState;
    descriptor: I
    flags: (0x0041) ACC_PUBLIC, ACC_VOLATILE

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

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

  private static final java.lang.String EVICTED_CONNECTION_MESSAGE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "(connection was evicted)"

  private static final java.lang.String DEAD_CONNECTION_MESSAGE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "(connection is dead)"

  private final com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator poolEntryCreator;
    descriptor: Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator postFillPoolEntryCreator;
    descriptor: Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Collection<java.lang.Runnable> addConnectionQueueReadOnlyView;
    descriptor: Ljava/util/Collection;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Collection<Ljava/lang/Runnable;>;

  private final java.util.concurrent.ThreadPoolExecutor addConnectionExecutor;
    descriptor: Ljava/util/concurrent/ThreadPoolExecutor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.ThreadPoolExecutor closeConnectionExecutor;
    descriptor: Ljava/util/concurrent/ThreadPoolExecutor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.zaxxer.hikari.util.ConcurrentBag<com.zaxxer.hikari.pool.PoolEntry> connectionBag;
    descriptor: Lcom/zaxxer/hikari/util/ConcurrentBag;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/zaxxer/hikari/util/ConcurrentBag<Lcom/zaxxer/hikari/pool/PoolEntry;>;

  private final com.zaxxer.hikari.pool.ProxyLeakTaskFactory leakTaskFactory;
    descriptor: Lcom/zaxxer/hikari/pool/ProxyLeakTaskFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.zaxxer.hikari.util.SuspendResumeLock suspendResumeLock;
    descriptor: Lcom/zaxxer/hikari/util/SuspendResumeLock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.ScheduledExecutorService houseKeepingExecutorService;
    descriptor: Ljava/util/concurrent/ScheduledExecutorService;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.util.concurrent.ScheduledFuture<?> houseKeeperTask;
    descriptor: Ljava/util/concurrent/ScheduledFuture;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/concurrent/ScheduledFuture<*>;

  public void <init>(com.zaxxer.hikari.HikariConfig);
    descriptor: (Lcom/zaxxer/hikari/HikariConfig;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // com.zaxxer.hikari.HikariConfig config
         0: .line 108
            aload 0 /* this */
            aload 1 /* config */
            invokespecial com.zaxxer.hikari.pool.PoolBase.<init>:(Lcom/zaxxer/hikari/HikariConfig;)V
         1: .line 73
            aload 0 /* this */
            ldc Lcom/zaxxer/hikari/pool/HikariPool;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
         2: .line 81
            aload 0 /* this */
            ldc "com.zaxxer.hikari.aliveBypassWindowMs"
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            ldc 500
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokestatic java.lang.Long.getLong:(Ljava/lang/String;J)Ljava/lang/Long;
            invokevirtual java.lang.Long.longValue:()J
            putfield com.zaxxer.hikari.pool.HikariPool.aliveBypassWindowMs:J
         3: .line 82
            aload 0 /* this */
            ldc "com.zaxxer.hikari.housekeeping.periodMs"
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            ldc 30
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokestatic java.lang.Long.getLong:(Ljava/lang/String;J)Ljava/lang/Long;
            invokevirtual java.lang.Long.longValue:()J
            putfield com.zaxxer.hikari.pool.HikariPool.housekeepingPeriodMs:J
         4: .line 87
            aload 0 /* this */
            new com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator
            dup
            aload 0 /* this */
            aconst_null
            invokespecial com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.<init>:(Lcom/zaxxer/hikari/pool/HikariPool;Ljava/lang/String;)V
            putfield com.zaxxer.hikari.pool.HikariPool.poolEntryCreator:Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
         5: .line 88
            aload 0 /* this */
            new com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator
            dup
            aload 0 /* this */
            ldc "After adding "
            invokespecial com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.<init>:(Lcom/zaxxer/hikari/pool/HikariPool;Ljava/lang/String;)V
            putfield com.zaxxer.hikari.pool.HikariPool.postFillPoolEntryCreator:Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
         6: .line 110
            aload 0 /* this */
            new com.zaxxer.hikari.util.ConcurrentBag
            dup
            aload 0 /* this */
            invokespecial com.zaxxer.hikari.util.ConcurrentBag.<init>:(Lcom/zaxxer/hikari/util/ConcurrentBag$IBagStateListener;)V
            putfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
         7: .line 111
            aload 0 /* this */
            aload 1 /* config */
            invokevirtual com.zaxxer.hikari.HikariConfig.isAllowPoolSuspension:()Z
            ifeq 8
            new com.zaxxer.hikari.util.SuspendResumeLock
            dup
            invokespecial com.zaxxer.hikari.util.SuspendResumeLock.<init>:()V
            goto 9
      StackMap locals: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.HikariConfig
      StackMap stack: com.zaxxer.hikari.pool.HikariPool
         8: getstatic com.zaxxer.hikari.util.SuspendResumeLock.FAUX_LOCK:Lcom/zaxxer/hikari/util/SuspendResumeLock;
      StackMap locals: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.HikariConfig
      StackMap stack: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.util.SuspendResumeLock
         9: putfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
        10: .line 113
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.initializeHouseKeepingExecutorService:()Ljava/util/concurrent/ScheduledExecutorService;
            putfield com.zaxxer.hikari.pool.HikariPool.houseKeepingExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
        11: .line 115
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.checkFailFast:()V
        12: .line 117
            aload 1 /* config */
            invokevirtual com.zaxxer.hikari.HikariConfig.getMetricsTrackerFactory:()Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;
            ifnull 15
        13: .line 118
            aload 0 /* this */
            aload 1 /* config */
            invokevirtual com.zaxxer.hikari.HikariConfig.getMetricsTrackerFactory:()Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;
            invokevirtual com.zaxxer.hikari.pool.HikariPool.setMetricsTrackerFactory:(Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;)V
        14: .line 119
            goto 16
        15: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* config */
            invokevirtual com.zaxxer.hikari.HikariConfig.getMetricRegistry:()Ljava/lang/Object;
            invokevirtual com.zaxxer.hikari.pool.HikariPool.setMetricRegistry:(Ljava/lang/Object;)V
        16: .line 124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* config */
            invokevirtual com.zaxxer.hikari.HikariConfig.getHealthCheckRegistry:()Ljava/lang/Object;
            invokevirtual com.zaxxer.hikari.pool.HikariPool.setHealthCheckRegistry:(Ljava/lang/Object;)V
        17: .line 126
            aload 0 /* this */
            aload 0 /* this */
            iconst_1
            invokevirtual com.zaxxer.hikari.pool.HikariPool.handleMBeans:(Lcom/zaxxer/hikari/pool/HikariPool;Z)V
        18: .line 128
            aload 1 /* config */
            invokevirtual com.zaxxer.hikari.HikariConfig.getThreadFactory:()Ljava/util/concurrent/ThreadFactory;
            astore 2 /* threadFactory */
        start local 2 // java.util.concurrent.ThreadFactory threadFactory
        19: .line 130
            aload 1 /* config */
            invokevirtual com.zaxxer.hikari.HikariConfig.getMaximumPoolSize:()I
            istore 3 /* maxPoolSize */
        start local 3 // int maxPoolSize
        20: .line 131
            new java.util.concurrent.LinkedBlockingQueue
            dup
            iload 3 /* maxPoolSize */
            invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:(I)V
            astore 4 /* addConnectionQueue */
        start local 4 // java.util.concurrent.LinkedBlockingQueue addConnectionQueue
        21: .line 132
            aload 0 /* this */
            aload 4 /* addConnectionQueue */
            invokestatic java.util.Collections.unmodifiableCollection:(Ljava/util/Collection;)Ljava/util/Collection;
            putfield com.zaxxer.hikari.pool.HikariPool.addConnectionQueueReadOnlyView:Ljava/util/Collection;
        22: .line 133
            aload 0 /* this */
            aload 4 /* addConnectionQueue */
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " connection adder"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* threadFactory */
            new java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy
            dup
            invokespecial java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy.<init>:()V
            invokestatic com.zaxxer.hikari.util.UtilityElf.createThreadPoolExecutor:(Ljava/util/concurrent/BlockingQueue;Ljava/lang/String;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)Ljava/util/concurrent/ThreadPoolExecutor;
            putfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
        23: .line 134
            aload 0 /* this */
            iload 3 /* maxPoolSize */
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " connection closer"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* threadFactory */
            new java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy
            dup
            invokespecial java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.<init>:()V
            invokestatic com.zaxxer.hikari.util.UtilityElf.createThreadPoolExecutor:(ILjava/lang/String;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)Ljava/util/concurrent/ThreadPoolExecutor;
            putfield com.zaxxer.hikari.pool.HikariPool.closeConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
        24: .line 136
            aload 0 /* this */
            new com.zaxxer.hikari.pool.ProxyLeakTaskFactory
            dup
            aload 1 /* config */
            invokevirtual com.zaxxer.hikari.HikariConfig.getLeakDetectionThreshold:()J
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.houseKeepingExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
            invokespecial com.zaxxer.hikari.pool.ProxyLeakTaskFactory.<init>:(JLjava/util/concurrent/ScheduledExecutorService;)V
            putfield com.zaxxer.hikari.pool.HikariPool.leakTaskFactory:Lcom/zaxxer/hikari/pool/ProxyLeakTaskFactory;
        25: .line 138
            aload 0 /* this */
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.houseKeepingExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
            new com.zaxxer.hikari.pool.HikariPool$HouseKeeper
            dup
            aload 0 /* this */
            invokespecial com.zaxxer.hikari.pool.HikariPool$HouseKeeper.<init>:(Lcom/zaxxer/hikari/pool/HikariPool;)V
            ldc 100
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.housekeepingPeriodMs:J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface java.util.concurrent.ScheduledExecutorService.scheduleWithFixedDelay:(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
            putfield com.zaxxer.hikari.pool.HikariPool.houseKeeperTask:Ljava/util/concurrent/ScheduledFuture;
        26: .line 140
            ldc "com.zaxxer.hikari.blockUntilFilled"
            invokestatic java.lang.Boolean.getBoolean:(Ljava/lang/String;)Z
            ifeq 35
            aload 1 /* config */
            invokevirtual com.zaxxer.hikari.HikariConfig.getInitializationFailTimeout:()J
            lconst_1
            lcmp
            ifle 35
        27: .line 141
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            bipush 16
            invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
            invokevirtual java.lang.Runtime.availableProcessors:()I
            invokestatic java.lang.Math.min:(II)I
            invokevirtual java.util.concurrent.ThreadPoolExecutor.setCorePoolSize:(I)V
        28: .line 142
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            bipush 16
            invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
            invokevirtual java.lang.Runtime.availableProcessors:()I
            invokestatic java.lang.Math.min:(II)I
            invokevirtual java.util.concurrent.ThreadPoolExecutor.setMaximumPoolSize:(I)V
        29: .line 144
            invokestatic com.zaxxer.hikari.util.ClockSource.currentTime:()J
            lstore 5 /* startTime */
        start local 5 // long startTime
        30: .line 145
            goto 32
        31: .line 146
      StackMap locals: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.HikariConfig java.util.concurrent.ThreadFactory int java.util.concurrent.LinkedBlockingQueue long
      StackMap stack:
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            ldc 100
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokestatic com.zaxxer.hikari.util.UtilityElf.quietlySleep:(J)V
        32: .line 145
      StackMap locals:
      StackMap stack:
            lload 5 /* startTime */
            invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(J)J
            aload 1 /* config */
            invokevirtual com.zaxxer.hikari.HikariConfig.getInitializationFailTimeout:()J
            lcmp
            ifge 33
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getTotalConnections:()I
            aload 1 /* config */
            invokevirtual com.zaxxer.hikari.HikariConfig.getMinimumIdle:()I
            if_icmplt 31
        33: .line 149
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            iconst_1
            invokevirtual java.util.concurrent.ThreadPoolExecutor.setCorePoolSize:(I)V
        34: .line 150
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            iconst_1
            invokevirtual java.util.concurrent.ThreadPoolExecutor.setMaximumPoolSize:(I)V
        end local 5 // long startTime
        35: .line 152
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.util.concurrent.LinkedBlockingQueue addConnectionQueue
        end local 3 // int maxPoolSize
        end local 2 // java.util.concurrent.ThreadFactory threadFactory
        end local 1 // com.zaxxer.hikari.HikariConfig config
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   36     0                this  Lcom/zaxxer/hikari/pool/HikariPool;
            0   36     1              config  Lcom/zaxxer/hikari/HikariConfig;
           19   36     2       threadFactory  Ljava/util/concurrent/ThreadFactory;
           20   36     3         maxPoolSize  I
           21   36     4  addConnectionQueue  Ljava/util/concurrent/LinkedBlockingQueue<Ljava/lang/Runnable;>;
           30   35     5           startTime  J
    MethodParameters:
        Name  Flags
      config  final

  public java.sql.Connection getConnection();
    descriptor: ()Ljava/sql/Connection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 162
            aload 0 /* this */
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionTimeout:J
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getConnection:(J)Ljava/sql/Connection;
            areturn
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/zaxxer/hikari/pool/HikariPool;
    Exceptions:
      throws java.sql.SQLException

  public java.sql.Connection getConnection(long);
    descriptor: (J)Ljava/sql/Connection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // long hardTimeout
         0: .line 174
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
            invokevirtual com.zaxxer.hikari.util.SuspendResumeLock.acquire:()V
         1: .line 175
            invokestatic com.zaxxer.hikari.util.ClockSource.currentTime:()J
            lstore 3 /* startTime */
        start local 3 // long startTime
         2: .line 178
            lload 1 /* hardTimeout */
            lstore 5 /* timeout */
        start local 5 // long timeout
         3: .line 180
      StackMap locals: long long
      StackMap stack:
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            lload 5 /* timeout */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.borrow:(JLjava/util/concurrent/TimeUnit;)Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;
            checkcast com.zaxxer.hikari.pool.PoolEntry
            astore 7 /* poolEntry */
        start local 7 // com.zaxxer.hikari.pool.PoolEntry poolEntry
         4: .line 181
            aload 7 /* poolEntry */
            ifnonnull 6
         5: .line 182
            goto 19
         6: .line 185
      StackMap locals: com.zaxxer.hikari.pool.PoolEntry
      StackMap stack:
            invokestatic com.zaxxer.hikari.util.ClockSource.currentTime:()J
            lstore 8 /* now */
        start local 8 // long now
         7: .line 186
            aload 7 /* poolEntry */
            invokevirtual com.zaxxer.hikari.pool.PoolEntry.isMarkedEvicted:()Z
            ifne 8
            aload 7 /* poolEntry */
            getfield com.zaxxer.hikari.pool.PoolEntry.lastAccessed:J
            lload 8 /* now */
            invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(JJ)J
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.aliveBypassWindowMs:J
            lcmp
            ifle 13
            aload 0 /* this */
            aload 7 /* poolEntry */
            getfield com.zaxxer.hikari.pool.PoolEntry.connection:Ljava/sql/Connection;
            invokevirtual com.zaxxer.hikari.pool.HikariPool.isConnectionAlive:(Ljava/sql/Connection;)Z
            ifne 13
         8: .line 187
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            aload 7 /* poolEntry */
            aload 7 /* poolEntry */
            invokevirtual com.zaxxer.hikari.pool.PoolEntry.isMarkedEvicted:()Z
            ifeq 9
            ldc "(connection was evicted)"
            goto 10
      StackMap locals: com.zaxxer.hikari.pool.HikariPool long long long com.zaxxer.hikari.pool.PoolEntry long
      StackMap stack: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.pool.PoolEntry
         9: ldc "(connection is dead)"
      StackMap locals: com.zaxxer.hikari.pool.HikariPool long long long com.zaxxer.hikari.pool.PoolEntry long
      StackMap stack: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.pool.PoolEntry java.lang.String
        10: invokevirtual com.zaxxer.hikari.pool.HikariPool.closeConnection:(Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;)V
        11: .line 188
            lload 1 /* hardTimeout */
            lload 3 /* startTime */
            invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(J)J
            lsub
            lstore 5 /* timeout */
        12: .line 189
            goto 17
        13: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
            aload 7 /* poolEntry */
            lload 3 /* startTime */
            invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.recordBorrowStats:(Lcom/zaxxer/hikari/pool/PoolEntry;J)V
        14: .line 192
            aload 7 /* poolEntry */
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.leakTaskFactory:Lcom/zaxxer/hikari/pool/ProxyLeakTaskFactory;
            aload 7 /* poolEntry */
            invokevirtual com.zaxxer.hikari.pool.ProxyLeakTaskFactory.schedule:(Lcom/zaxxer/hikari/pool/PoolEntry;)Lcom/zaxxer/hikari/pool/ProxyLeakTask;
            lload 8 /* now */
            invokevirtual com.zaxxer.hikari.pool.PoolEntry.createProxyConnection:(Lcom/zaxxer/hikari/pool/ProxyLeakTask;J)Ljava/sql/Connection;
            astore 11
        15: .line 204
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
            invokevirtual com.zaxxer.hikari.util.SuspendResumeLock.release:()V
        16: .line 192
            aload 11
            areturn
        end local 8 // long now
        end local 7 // com.zaxxer.hikari.pool.PoolEntry poolEntry
        17: .line 194
      StackMap locals:
      StackMap stack:
            lload 5 /* timeout */
            lconst_0
        18: .line 179
            lcmp
            ifgt 3
        19: .line 196
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
            lload 3 /* startTime */
            invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.recordBorrowTimeoutStats:(J)V
        20: .line 197
            aload 0 /* this */
            lload 3 /* startTime */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.createTimeoutException:(J)Ljava/sql/SQLException;
            athrow
        end local 5 // long timeout
        21: .line 199
      StackMap locals: com.zaxxer.hikari.pool.HikariPool long long
      StackMap stack: java.lang.InterruptedException
            astore 5 /* e */
        start local 5 // java.lang.InterruptedException e
        22: .line 200
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
        23: .line 201
            new java.sql.SQLException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " - Interrupted during connection acquisition"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* e */
            invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.InterruptedException e
        24: .line 203
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10
        25: .line 204
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
            invokevirtual com.zaxxer.hikari.util.SuspendResumeLock.release:()V
        26: .line 205
            aload 10
            athrow
        end local 3 // long startTime
        end local 1 // long hardTimeout
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   27     0         this  Lcom/zaxxer/hikari/pool/HikariPool;
            0   27     1  hardTimeout  J
            2   27     3    startTime  J
            3   21     5      timeout  J
            4   17     7    poolEntry  Lcom/zaxxer/hikari/pool/PoolEntry;
            7   17     8          now  J
           22   24     5            e  Ljava/lang/InterruptedException;
      Exception table:
        from    to  target  type
           2    15      21  Class java.lang.InterruptedException
          17    21      21  Class java.lang.InterruptedException
           2    15      24  any
          17    24      24  any
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
             Name  Flags
      hardTimeout  final

  public synchronized void shutdown();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 217
            aload 0 /* this */
            iconst_2
            putfield com.zaxxer.hikari.pool.HikariPool.poolState:I
         1: .line 219
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            ifnonnull 6
         2: .line 258
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "After shutdown "
            aastore
            invokevirtual com.zaxxer.hikari.pool.HikariPool.logPoolState:([Ljava/lang/String;)V
         3: .line 259
            aload 0 /* this */
            aload 0 /* this */
            iconst_0
            invokevirtual com.zaxxer.hikari.pool.HikariPool.handleMBeans:(Lcom/zaxxer/hikari/pool/HikariPool;Z)V
         4: .line 260
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
            invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.close:()V
         5: .line 220
            return
         6: .line 223
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "Before shutdown "
            aastore
            invokevirtual com.zaxxer.hikari.pool.HikariPool.logPoolState:([Ljava/lang/String;)V
         7: .line 225
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.houseKeeperTask:Ljava/util/concurrent/ScheduledFuture;
            ifnull 10
         8: .line 226
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.houseKeeperTask:Ljava/util/concurrent/ScheduledFuture;
            iconst_0
            invokeinterface java.util.concurrent.ScheduledFuture.cancel:(Z)Z
            pop
         9: .line 227
            aload 0 /* this */
            aconst_null
            putfield com.zaxxer.hikari.pool.HikariPool.houseKeeperTask:Ljava/util/concurrent/ScheduledFuture;
        10: .line 230
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.softEvictConnections:()V
        11: .line 232
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            invokevirtual java.util.concurrent.ThreadPoolExecutor.shutdown:()V
        12: .line 233
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getLoginTimeout:()J
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual java.util.concurrent.ThreadPoolExecutor.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
            pop
        13: .line 235
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.destroyHouseKeepingExecutorService:()V
        14: .line 237
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.close:()V
        15: .line 239
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getMaximumPoolSize:()I
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " connection assassinator"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 240
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getThreadFactory:()Ljava/util/concurrent/ThreadFactory;
            new java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy
            dup
            invokespecial java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.<init>:()V
        17: .line 239
            invokestatic com.zaxxer.hikari.util.UtilityElf.createThreadPoolExecutor:(ILjava/lang/String;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)Ljava/util/concurrent/ThreadPoolExecutor;
            astore 1 /* assassinExecutor */
        start local 1 // java.util.concurrent.ExecutorService assassinExecutor
        18: .line 242
            invokestatic com.zaxxer.hikari.util.ClockSource.currentTime:()J
            lstore 2 /* start */
        start local 2 // long start
        19: .line 244
      StackMap locals: java.util.concurrent.ExecutorService long
      StackMap stack:
            aload 0 /* this */
            aload 1 /* assassinExecutor */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.abortActiveConnections:(Ljava/util/concurrent/ExecutorService;)V
        20: .line 245
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.softEvictConnections:()V
        21: .line 246
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getTotalConnections:()I
            ifle 28
            lload 2 /* start */
            invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(J)J
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            ldc 10
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
        22: .line 243
            lcmp
            iflt 19
        end local 2 // long start
        23: .line 247
            goto 28
        24: .line 248
      StackMap locals: com.zaxxer.hikari.pool.HikariPool java.util.concurrent.ExecutorService
      StackMap stack: java.lang.Throwable
            astore 4
        25: .line 249
            aload 1 /* assassinExecutor */
            invokeinterface java.util.concurrent.ExecutorService.shutdown:()V
        26: .line 250
            aload 1 /* assassinExecutor */
            ldc 10
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface java.util.concurrent.ExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
            pop
        27: .line 251
            aload 4
            athrow
        28: .line 249
      StackMap locals:
      StackMap stack:
            aload 1 /* assassinExecutor */
            invokeinterface java.util.concurrent.ExecutorService.shutdown:()V
        29: .line 250
            aload 1 /* assassinExecutor */
            ldc 10
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface java.util.concurrent.ExecutorService.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
            pop
        30: .line 253
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.shutdownNetworkTimeoutExecutor:()V
        31: .line 254
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.closeConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            invokevirtual java.util.concurrent.ThreadPoolExecutor.shutdown:()V
        32: .line 255
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.closeConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            ldc 10
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual java.util.concurrent.ThreadPoolExecutor.awaitTermination:(JLjava/util/concurrent/TimeUnit;)Z
            pop
        end local 1 // java.util.concurrent.ExecutorService assassinExecutor
        33: .line 256
            goto 39
        34: .line 257
      StackMap locals: com.zaxxer.hikari.pool.HikariPool
      StackMap stack: java.lang.Throwable
            astore 5
        35: .line 258
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "After shutdown "
            aastore
            invokevirtual com.zaxxer.hikari.pool.HikariPool.logPoolState:([Ljava/lang/String;)V
        36: .line 259
            aload 0 /* this */
            aload 0 /* this */
            iconst_0
            invokevirtual com.zaxxer.hikari.pool.HikariPool.handleMBeans:(Lcom/zaxxer/hikari/pool/HikariPool;Z)V
        37: .line 260
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
            invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.close:()V
        38: .line 261
            aload 5
            athrow
        39: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "After shutdown "
            aastore
            invokevirtual com.zaxxer.hikari.pool.HikariPool.logPoolState:([Ljava/lang/String;)V
        40: .line 259
            aload 0 /* this */
            aload 0 /* this */
            iconst_0
            invokevirtual com.zaxxer.hikari.pool.HikariPool.handleMBeans:(Lcom/zaxxer/hikari/pool/HikariPool;Z)V
        41: .line 260
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
            invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.close:()V
        42: .line 262
            return
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   43     0              this  Lcom/zaxxer/hikari/pool/HikariPool;
           18   33     1  assassinExecutor  Ljava/util/concurrent/ExecutorService;
           19   23     2             start  J
      Exception table:
        from    to  target  type
          18    24      24  any
           0     2      34  any
           6    34      34  any
    Exceptions:
      throws java.lang.InterruptedException

  public void evictConnection(java.sql.Connection);
    descriptor: (Ljava/sql/Connection;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // java.sql.Connection connection
         0: .line 271
            aload 1 /* connection */
            checkcast com.zaxxer.hikari.pool.ProxyConnection
            astore 2 /* proxyConnection */
        start local 2 // com.zaxxer.hikari.pool.ProxyConnection proxyConnection
         1: .line 272
            aload 2 /* proxyConnection */
            invokevirtual com.zaxxer.hikari.pool.ProxyConnection.cancelLeakTask:()V
         2: .line 275
            aload 0 /* this */
            aload 2 /* proxyConnection */
            invokevirtual com.zaxxer.hikari.pool.ProxyConnection.getPoolEntry:()Lcom/zaxxer/hikari/pool/PoolEntry;
            ldc "(connection evicted by user)"
            aload 1 /* connection */
            invokeinterface java.sql.Connection.isClosed:()Z
            ifeq 3
            iconst_0
            goto 4
      StackMap locals: com.zaxxer.hikari.pool.HikariPool java.sql.Connection com.zaxxer.hikari.pool.ProxyConnection
      StackMap stack: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.pool.PoolEntry java.lang.String
         3: iconst_1
      StackMap locals: com.zaxxer.hikari.pool.HikariPool java.sql.Connection com.zaxxer.hikari.pool.ProxyConnection
      StackMap stack: com.zaxxer.hikari.pool.HikariPool com.zaxxer.hikari.pool.PoolEntry java.lang.String int
         4: invokevirtual com.zaxxer.hikari.pool.HikariPool.softEvictConnection:(Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;Z)Z
            pop
         5: .line 276
            goto 7
         6: .line 277
      StackMap locals:
      StackMap stack: java.sql.SQLException
            pop
         7: .line 280
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.zaxxer.hikari.pool.ProxyConnection proxyConnection
        end local 1 // java.sql.Connection connection
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Lcom/zaxxer/hikari/pool/HikariPool;
            0    8     1       connection  Ljava/sql/Connection;
            1    8     2  proxyConnection  Lcom/zaxxer/hikari/pool/ProxyConnection;
      Exception table:
        from    to  target  type
           2     5       6  Class java.sql.SQLException
    MethodParameters:
            Name  Flags
      connection  

  public void setMetricRegistry(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // java.lang.Object metricRegistry
         0: .line 290
            aload 1 /* metricRegistry */
            ifnull 3
            aload 1 /* metricRegistry */
            ldc "com.codahale.metrics.MetricRegistry"
            invokestatic com.zaxxer.hikari.util.UtilityElf.safeIsAssignableFrom:(Ljava/lang/Object;Ljava/lang/String;)Z
            ifeq 3
         1: .line 291
            aload 0 /* this */
            new com.zaxxer.hikari.metrics.dropwizard.CodahaleMetricsTrackerFactory
            dup
            aload 1 /* metricRegistry */
            checkcast com.codahale.metrics.MetricRegistry
            invokespecial com.zaxxer.hikari.metrics.dropwizard.CodahaleMetricsTrackerFactory.<init>:(Lcom/codahale/metrics/MetricRegistry;)V
            invokevirtual com.zaxxer.hikari.pool.HikariPool.setMetricsTrackerFactory:(Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;)V
         2: .line 292
            goto 7
         3: .line 293
      StackMap locals:
      StackMap stack:
            aload 1 /* metricRegistry */
            ifnull 6
            aload 1 /* metricRegistry */
            ldc "io.micrometer.core.instrument.MeterRegistry"
            invokestatic com.zaxxer.hikari.util.UtilityElf.safeIsAssignableFrom:(Ljava/lang/Object;Ljava/lang/String;)Z
            ifeq 6
         4: .line 294
            aload 0 /* this */
            new com.zaxxer.hikari.metrics.micrometer.MicrometerMetricsTrackerFactory
            dup
            aload 1 /* metricRegistry */
            checkcast io.micrometer.core.instrument.MeterRegistry
            invokespecial com.zaxxer.hikari.metrics.micrometer.MicrometerMetricsTrackerFactory.<init>:(Lio/micrometer/core/instrument/MeterRegistry;)V
            invokevirtual com.zaxxer.hikari.pool.HikariPool.setMetricsTrackerFactory:(Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;)V
         5: .line 295
            goto 7
         6: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            invokevirtual com.zaxxer.hikari.pool.HikariPool.setMetricsTrackerFactory:(Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;)V
         7: .line 299
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object metricRegistry
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lcom/zaxxer/hikari/pool/HikariPool;
            0    8     1  metricRegistry  Ljava/lang/Object;
    MethodParameters:
                Name  Flags
      metricRegistry  

  public void setMetricsTrackerFactory(com.zaxxer.hikari.metrics.MetricsTrackerFactory);
    descriptor: (Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // com.zaxxer.hikari.metrics.MetricsTrackerFactory metricsTrackerFactory
         0: .line 308
            aload 1 /* metricsTrackerFactory */
            ifnull 3
         1: .line 309
            aload 0 /* this */
            new com.zaxxer.hikari.pool.PoolBase$MetricsTrackerDelegate
            dup
            aload 1 /* metricsTrackerFactory */
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getPoolName:()Ljava/lang/String;
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getPoolStats:()Lcom/zaxxer/hikari/metrics/PoolStats;
            invokeinterface com.zaxxer.hikari.metrics.MetricsTrackerFactory.create:(Ljava/lang/String;Lcom/zaxxer/hikari/metrics/PoolStats;)Lcom/zaxxer/hikari/metrics/IMetricsTracker;
            invokespecial com.zaxxer.hikari.pool.PoolBase$MetricsTrackerDelegate.<init>:(Lcom/zaxxer/hikari/metrics/IMetricsTracker;)V
            putfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
         2: .line 310
            goto 4
         3: .line 312
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new com.zaxxer.hikari.pool.PoolBase$NopMetricsTrackerDelegate
            dup
            invokespecial com.zaxxer.hikari.pool.PoolBase$NopMetricsTrackerDelegate.<init>:()V
            putfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
         4: .line 314
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.zaxxer.hikari.metrics.MetricsTrackerFactory metricsTrackerFactory
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    5     0                   this  Lcom/zaxxer/hikari/pool/HikariPool;
            0    5     1  metricsTrackerFactory  Lcom/zaxxer/hikari/metrics/MetricsTrackerFactory;
    MethodParameters:
                       Name  Flags
      metricsTrackerFactory  

  public void setHealthCheckRegistry(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 325
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tThe method registerHealthChecks(HikariPool, HikariConfig, HealthCheckRegistry) from the type CodahaleHealthChecker refers to the missing type HealthCheckRegistry\n\tHealthCheckRegistry cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/zaxxer/hikari/pool/HikariPool;
    MethodParameters:
                     Name  Flags
      healthCheckRegistry  

  public void addBagItem(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // int waiting
         0: .line 337
            iload 1 /* waiting */
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionQueueReadOnlyView:Ljava/util/Collection;
            invokeinterface java.util.Collection.size:()I
            isub
            iflt 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 2 /* shouldAdd */
        start local 2 // boolean shouldAdd
         3: .line 338
            iload 2 /* shouldAdd */
            ifeq 6
         4: .line 339
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolEntryCreator:Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
            invokevirtual java.util.concurrent.ThreadPoolExecutor.submit:(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
            pop
         5: .line 340
            goto 7
         6: .line 342
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
            ldc "{} - Add connection elided, waiting {}, queue {}"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            aastore
            dup
            iconst_1
            iload 1 /* waiting */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionQueueReadOnlyView:Ljava/util/Collection;
            invokeinterface java.util.Collection.size:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
         7: .line 344
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean shouldAdd
        end local 1 // int waiting
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lcom/zaxxer/hikari/pool/HikariPool;
            0    8     1    waiting  I
            3    8     2  shouldAdd  Z
    MethodParameters:
         Name  Flags
      waiting  final

  public int getActiveConnections();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 354
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            iconst_1
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.getCount:(I)I
            ireturn
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  public int getIdleConnections();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 361
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            iconst_0
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.getCount:(I)I
            ireturn
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  public int getTotalConnections();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 368
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.size:()I
            ireturn
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  public int getThreadsAwaitingConnection();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 375
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.getWaitingThreadCount:()I
            ireturn
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  public void softEvictConnections();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 382
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.values:()Ljava/util/List;
            aload 0 /* this */
            invokedynamic accept(Lcom/zaxxer/hikari/pool/HikariPool;)Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  com/zaxxer/hikari/pool/HikariPool.lambda$0(Lcom/zaxxer/hikari/pool/PoolEntry;)V (7)
                  (Lcom/zaxxer/hikari/pool/PoolEntry;)V
            invokeinterface java.util.List.forEach:(Ljava/util/function/Consumer;)V
         1: .line 383
            return
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  public synchronized void suspendPool();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 389
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
            getstatic com.zaxxer.hikari.util.SuspendResumeLock.FAUX_LOCK:Lcom/zaxxer/hikari/util/SuspendResumeLock;
            if_acmpne 2
         1: .line 390
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " - is not suspendable"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 392
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolState:I
            iconst_1
            if_icmpeq 5
         3: .line 393
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
            invokevirtual com.zaxxer.hikari.util.SuspendResumeLock.suspend:()V
         4: .line 394
            aload 0 /* this */
            iconst_1
            putfield com.zaxxer.hikari.pool.HikariPool.poolState:I
         5: .line 396
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  public synchronized void resumePool();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 402
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolState:I
            iconst_1
            if_icmpne 4
         1: .line 403
            aload 0 /* this */
            iconst_0
            putfield com.zaxxer.hikari.pool.HikariPool.poolState:I
         2: .line 404
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.fillPool:()V
         3: .line 405
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.suspendResumeLock:Lcom/zaxxer/hikari/util/SuspendResumeLock;
            invokevirtual com.zaxxer.hikari.util.SuspendResumeLock.resume:()V
         4: .line 407
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  void logPoolState(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0080) ACC_VARARGS
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // java.lang.String[] prefix
         0: .line 420
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 7
         1: .line 421
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
            ldc "{} - {}stats (total={}, active={}, idle={}, waiting={})"
            bipush 6
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 422
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* prefix */
            arraylength
            ifle 3
            aload 1 /* prefix */
            iconst_0
            aaload
            goto 4
      StackMap locals: com.zaxxer.hikari.pool.HikariPool java.lang.String[]
      StackMap stack: org.slf4j.Logger java.lang.String java.lang.Object[] java.lang.Object[] int
         3: ldc ""
      StackMap locals: com.zaxxer.hikari.pool.HikariPool java.lang.String[]
      StackMap stack: org.slf4j.Logger java.lang.String java.lang.Object[] java.lang.Object[] int java.lang.String
         4: aastore
            dup
            iconst_2
         5: .line 423
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getTotalConnections:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_3
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getActiveConnections:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_4
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getIdleConnections:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_5
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getThreadsAwaitingConnection:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
         6: .line 421
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
         7: .line 425
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String[] prefix
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lcom/zaxxer/hikari/pool/HikariPool;
            0    8     1  prefix  [Ljava/lang/String;
    MethodParameters:
        Name  Flags
      prefix  

  void recycle(com.zaxxer.hikari.pool.PoolEntry);
    descriptor: (Lcom/zaxxer/hikari/pool/PoolEntry;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // com.zaxxer.hikari.pool.PoolEntry poolEntry
         0: .line 435
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
            aload 1 /* poolEntry */
            invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.recordConnectionUsage:(Lcom/zaxxer/hikari/pool/PoolEntry;)V
         1: .line 437
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            aload 1 /* poolEntry */
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.requite:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)V
         2: .line 438
            return
        end local 1 // com.zaxxer.hikari.pool.PoolEntry poolEntry
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lcom/zaxxer/hikari/pool/HikariPool;
            0    3     1  poolEntry  Lcom/zaxxer/hikari/pool/PoolEntry;
    MethodParameters:
           Name  Flags
      poolEntry  final

  void closeConnection(com.zaxxer.hikari.pool.PoolEntry, java.lang.String);
    descriptor: (Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // com.zaxxer.hikari.pool.PoolEntry poolEntry
        start local 2 // java.lang.String closureReason
         0: .line 448
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            aload 1 /* poolEntry */
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.remove:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)Z
            ifeq 3
         1: .line 449
            aload 1 /* poolEntry */
            invokevirtual com.zaxxer.hikari.pool.PoolEntry.close:()Ljava/sql/Connection;
            astore 3 /* connection */
        start local 3 // java.sql.Connection connection
         2: .line 450
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.closeConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            aload 0 /* this */
            aload 3 /* connection */
            aload 2 /* closureReason */
            invokedynamic run(Lcom/zaxxer/hikari/pool/HikariPool;Ljava/sql/Connection;Ljava/lang/String;)Ljava/lang/Runnable;
              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
                  com/zaxxer/hikari/pool/HikariPool.lambda$1(Ljava/sql/Connection;Ljava/lang/String;)V (7)
                  ()V
            invokevirtual java.util.concurrent.ThreadPoolExecutor.execute:(Ljava/lang/Runnable;)V
        end local 3 // java.sql.Connection connection
         3: .line 457
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String closureReason
        end local 1 // com.zaxxer.hikari.pool.PoolEntry poolEntry
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lcom/zaxxer/hikari/pool/HikariPool;
            0    4     1      poolEntry  Lcom/zaxxer/hikari/pool/PoolEntry;
            0    4     2  closureReason  Ljava/lang/String;
            2    3     3     connection  Ljava/sql/Connection;
    MethodParameters:
               Name  Flags
      poolEntry      final
      closureReason  final

  int[] getPoolStateCounts();
    descriptor: ()[I
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 462
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.getStateCounts:()[I
            areturn
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  private com.zaxxer.hikari.pool.PoolEntry createPoolEntry();
    descriptor: ()Lcom/zaxxer/hikari/pool/PoolEntry;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=8, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 477
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.newPoolEntry:()Lcom/zaxxer/hikari/pool/PoolEntry;
            astore 1 /* poolEntry */
        start local 1 // com.zaxxer.hikari.pool.PoolEntry poolEntry
         1: .line 479
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getMaxLifetime:()J
            lstore 2 /* maxLifetime */
        start local 2 // long maxLifetime
         2: .line 480
            lload 2 /* maxLifetime */
            lconst_0
            lcmp
            ifle 11
         3: .line 482
            lload 2 /* maxLifetime */
            ldc 10000
            lcmp
            ifle 4
            invokestatic java.util.concurrent.ThreadLocalRandom.current:()Ljava/util/concurrent/ThreadLocalRandom;
            lload 2 /* maxLifetime */
            ldc 40
            ldiv
            invokevirtual java.util.concurrent.ThreadLocalRandom.nextLong:(J)J
            goto 5
      StackMap locals: com.zaxxer.hikari.pool.PoolEntry long
      StackMap stack:
         4: lconst_0
      StackMap locals:
      StackMap stack: long
         5: lstore 4 /* variance */
        start local 4 // long variance
         6: .line 483
            lload 2 /* maxLifetime */
            lload 4 /* variance */
            lsub
            lstore 6 /* lifetime */
        start local 6 // long lifetime
         7: .line 484
            aload 1 /* poolEntry */
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.houseKeepingExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
         8: .line 485
            aload 0 /* this */
            aload 1 /* poolEntry */
            invokedynamic run(Lcom/zaxxer/hikari/pool/HikariPool;Lcom/zaxxer/hikari/pool/PoolEntry;)Ljava/lang/Runnable;
              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
                  com/zaxxer/hikari/pool/HikariPool.lambda$2(Lcom/zaxxer/hikari/pool/PoolEntry;)V (7)
                  ()V
         9: .line 490
            lload 6 /* lifetime */
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
        10: .line 484
            invokeinterface java.util.concurrent.ScheduledExecutorService.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
            invokevirtual com.zaxxer.hikari.pool.PoolEntry.setFutureEol:(Ljava/util/concurrent/ScheduledFuture;)V
        end local 6 // long lifetime
        end local 4 // long variance
        11: .line 493
      StackMap locals:
      StackMap stack:
            aload 1 /* poolEntry */
        12: areturn
        end local 2 // long maxLifetime
        end local 1 // com.zaxxer.hikari.pool.PoolEntry poolEntry
        13: .line 495
      StackMap locals: com.zaxxer.hikari.pool.HikariPool
      StackMap stack: com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException
            astore 1 /* e */
        start local 1 // com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException e
        14: .line 496
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolState:I
            ifne 21
        15: .line 497
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
            ldc "{} - Error thrown while acquiring connection from data source"
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            aload 1 /* e */
            invokevirtual com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException.getCause:()Ljava/lang/Throwable;
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        16: .line 498
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.lastConnectionFailure:Ljava/util/concurrent/atomic/AtomicReference;
            aload 1 /* e */
            invokevirtual java.util.concurrent.atomic.AtomicReference.set:(Ljava/lang/Object;)V
        end local 1 // com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException e
        17: goto 21
        18: .line 501
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
        19: .line 502
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolState:I
            ifne 21
        20: .line 503
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
            ldc "{} - Cannot acquire connection from data source"
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            aload 1 /* e */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 1 // java.lang.Exception e
        21: .line 507
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   22     0         this  Lcom/zaxxer/hikari/pool/HikariPool;
            1   13     1    poolEntry  Lcom/zaxxer/hikari/pool/PoolEntry;
            2   13     2  maxLifetime  J
            6   11     4     variance  J
            7   11     6     lifetime  J
           14   17     1            e  Lcom/zaxxer/hikari/pool/PoolBase$ConnectionSetupException;
           19   21     1            e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0    12      13  Class com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException
           0    12      18  Class java.lang.Exception

  private synchronized void fillPool();
    descriptor: ()V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 515
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getMaximumPoolSize:()I
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getTotalConnections:()I
            isub
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getMinimumIdle:()I
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getIdleConnections:()I
            isub
            invokestatic java.lang.Math.min:(II)I
         1: .line 516
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionQueueReadOnlyView:Ljava/util/Collection;
            invokeinterface java.util.Collection.size:()I
         2: .line 515
            isub
            istore 1 /* connectionsToAdd */
        start local 1 // int connectionsToAdd
         3: .line 517
            iload 1 /* connectionsToAdd */
            ifgt 4
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
            ldc "{} - Fill pool skipped, pool is at sufficient level."
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
         4: .line 519
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         5: goto 10
         6: .line 520
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.addConnectionExecutor:Ljava/util/concurrent/ThreadPoolExecutor;
            iload 2 /* i */
            iload 1 /* connectionsToAdd */
            iconst_1
            isub
            if_icmpge 7
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolEntryCreator:Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
            goto 8
      StackMap locals:
      StackMap stack: java.util.concurrent.ThreadPoolExecutor
         7: aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.postFillPoolEntryCreator:Lcom/zaxxer/hikari/pool/HikariPool$PoolEntryCreator;
      StackMap locals: com.zaxxer.hikari.pool.HikariPool int int
      StackMap stack: java.util.concurrent.ThreadPoolExecutor com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator
         8: invokevirtual java.util.concurrent.ThreadPoolExecutor.submit:(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
            pop
         9: .line 519
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 2 /* i */
            iload 1 /* connectionsToAdd */
            if_icmplt 6
        end local 2 // int i
        11: .line 522
            return
        end local 1 // int connectionsToAdd
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0              this  Lcom/zaxxer/hikari/pool/HikariPool;
            3   12     1  connectionsToAdd  I
            5   11     2                 i  I

  private void abortActiveConnections(java.util.concurrent.ExecutorService);
    descriptor: (Ljava/util/concurrent/ExecutorService;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // java.util.concurrent.ExecutorService assassinExecutor
         0: .line 531
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            iconst_1
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.values:(I)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 12
      StackMap locals: com.zaxxer.hikari.pool.HikariPool java.util.concurrent.ExecutorService top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.zaxxer.hikari.pool.PoolEntry
            astore 2 /* poolEntry */
        start local 2 // com.zaxxer.hikari.pool.PoolEntry poolEntry
         2: .line 532
            aload 2 /* poolEntry */
            invokevirtual com.zaxxer.hikari.pool.PoolEntry.close:()Ljava/sql/Connection;
            astore 4 /* connection */
        start local 4 // java.sql.Connection connection
         3: .line 534
            aload 4 /* connection */
            aload 1 /* assassinExecutor */
            invokeinterface java.sql.Connection.abort:(Ljava/util/concurrent/Executor;)V
         4: .line 535
            goto 11
         5: .line 536
      StackMap locals: com.zaxxer.hikari.pool.HikariPool java.util.concurrent.ExecutorService com.zaxxer.hikari.pool.PoolEntry java.util.Iterator java.sql.Connection
      StackMap stack: java.lang.Throwable
            pop
         6: .line 537
            aload 0 /* this */
            aload 4 /* connection */
            ldc "(connection aborted during shutdown)"
            invokevirtual com.zaxxer.hikari.pool.HikariPool.quietlyCloseConnection:(Ljava/sql/Connection;Ljava/lang/String;)V
         7: .line 540
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            aload 2 /* poolEntry */
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.remove:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)Z
            pop
            goto 12
         8: .line 539
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
         9: .line 540
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            aload 2 /* poolEntry */
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.remove:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)Z
            pop
        10: .line 541
            aload 5
            athrow
        11: .line 540
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            aload 2 /* poolEntry */
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.remove:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)Z
            pop
        end local 4 // java.sql.Connection connection
        end local 2 // com.zaxxer.hikari.pool.PoolEntry poolEntry
        12: .line 531
      StackMap locals: com.zaxxer.hikari.pool.HikariPool java.util.concurrent.ExecutorService top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        13: .line 543
            return
        end local 1 // java.util.concurrent.ExecutorService assassinExecutor
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   14     0              this  Lcom/zaxxer/hikari/pool/HikariPool;
            0   14     1  assassinExecutor  Ljava/util/concurrent/ExecutorService;
            2   12     2         poolEntry  Lcom/zaxxer/hikari/pool/PoolEntry;
            3   12     4        connection  Ljava/sql/Connection;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.Throwable
           3     7       8  any
    MethodParameters:
                  Name  Flags
      assassinExecutor  final

  private void checkFailFast();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 553
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getInitializationFailTimeout:()J
            lstore 1 /* initializationTimeout */
        start local 1 // long initializationTimeout
         1: .line 554
            lload 1 /* initializationTimeout */
            lconst_0
            lcmp
            ifge 3
         2: .line 555
            return
         3: .line 558
      StackMap locals: long
      StackMap stack:
            invokestatic com.zaxxer.hikari.util.ClockSource.currentTime:()J
            lstore 3 /* startTime */
        start local 3 // long startTime
         4: .line 560
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.createPoolEntry:()Lcom/zaxxer/hikari/pool/PoolEntry;
            astore 5 /* poolEntry */
        start local 5 // com.zaxxer.hikari.pool.PoolEntry poolEntry
         5: .line 561
            aload 5 /* poolEntry */
            ifnull 12
         6: .line 562
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getMinimumIdle:()I
            ifle 10
         7: .line 563
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            aload 5 /* poolEntry */
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.add:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)V
         8: .line 564
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
            ldc "{} - Added connection {}"
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            aload 5 /* poolEntry */
            getfield com.zaxxer.hikari.pool.PoolEntry.connection:Ljava/sql/Connection;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         9: .line 565
            goto 11
        10: .line 567
      StackMap locals: com.zaxxer.hikari.pool.PoolEntry
      StackMap stack:
            aload 0 /* this */
            aload 5 /* poolEntry */
            invokevirtual com.zaxxer.hikari.pool.PoolEntry.close:()Ljava/sql/Connection;
            ldc "(initialization check complete and minimumIdle is zero)"
            invokevirtual com.zaxxer.hikari.pool.HikariPool.quietlyCloseConnection:(Ljava/sql/Connection;Ljava/lang/String;)V
        11: .line 570
      StackMap locals:
      StackMap stack:
            return
        12: .line 573
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getLastConnectionFailure:()Ljava/lang/Exception;
            instanceof com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException
            ifeq 14
        13: .line 574
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getLastConnectionFailure:()Ljava/lang/Exception;
            invokevirtual java.lang.Exception.getCause:()Ljava/lang/Throwable;
            invokevirtual com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException:(Ljava/lang/Throwable;)V
        14: .line 577
      StackMap locals:
      StackMap stack:
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            lconst_1
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokestatic com.zaxxer.hikari.util.UtilityElf.quietlySleep:(J)V
        end local 5 // com.zaxxer.hikari.pool.PoolEntry poolEntry
        15: .line 578
            lload 3 /* startTime */
            invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(J)J
            lload 1 /* initializationTimeout */
        16: .line 559
            lcmp
            iflt 4
        17: .line 580
            lload 1 /* initializationTimeout */
            lconst_0
            lcmp
            ifle 19
        18: .line 581
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getLastConnectionFailure:()Ljava/lang/Exception;
            invokevirtual com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException:(Ljava/lang/Throwable;)V
        19: .line 583
      StackMap locals:
      StackMap stack:
            return
        end local 3 // long startTime
        end local 1 // long initializationTimeout
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   20     0                   this  Lcom/zaxxer/hikari/pool/HikariPool;
            1   20     1  initializationTimeout  J
            4   20     3              startTime  J
            5   15     5              poolEntry  Lcom/zaxxer/hikari/pool/PoolEntry;

  private void throwPoolInitializationException(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // java.lang.Throwable t
         0: .line 593
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.logger:Lorg/slf4j/Logger;
            ldc "{} - Exception during pool initialization."
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            aload 1 /* t */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 594
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.destroyHouseKeepingExecutorService:()V
         2: .line 595
            new com.zaxxer.hikari.pool.HikariPool$PoolInitializationException
            dup
            aload 1 /* t */
            invokespecial com.zaxxer.hikari.pool.HikariPool$PoolInitializationException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Throwable t
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/zaxxer/hikari/pool/HikariPool;
            0    3     1     t  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      t     

  private boolean softEvictConnection(com.zaxxer.hikari.pool.PoolEntry, java.lang.String, boolean);
    descriptor: (Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;Z)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // com.zaxxer.hikari.pool.PoolEntry poolEntry
        start local 2 // java.lang.String reason
        start local 3 // boolean owner
         0: .line 613
            aload 1 /* poolEntry */
            invokevirtual com.zaxxer.hikari.pool.PoolEntry.markEvicted:()V
         1: .line 614
            iload 3 /* owner */
            ifne 2
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            aload 1 /* poolEntry */
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.reserve:(Lcom/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry;)Z
            ifeq 4
         2: .line 615
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* poolEntry */
            aload 2 /* reason */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.closeConnection:(Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;)V
         3: .line 616
            iconst_1
            ireturn
         4: .line 619
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // boolean owner
        end local 2 // java.lang.String reason
        end local 1 // com.zaxxer.hikari.pool.PoolEntry poolEntry
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lcom/zaxxer/hikari/pool/HikariPool;
            0    5     1  poolEntry  Lcom/zaxxer/hikari/pool/PoolEntry;
            0    5     2     reason  Ljava/lang/String;
            0    5     3      owner  Z
    MethodParameters:
           Name  Flags
      poolEntry  final
      reason     final
      owner      final

  private java.util.concurrent.ScheduledExecutorService initializeHouseKeepingExecutorService();
    descriptor: ()Ljava/util/concurrent/ScheduledExecutorService;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 631
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getScheduledExecutor:()Ljava/util/concurrent/ScheduledExecutorService;
            ifnonnull 6
         1: .line 632
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getThreadFactory:()Ljava/util/concurrent/ThreadFactory;
            invokestatic java.util.Optional.ofNullable:(Ljava/lang/Object;)Ljava/util/Optional;
            aload 0 /* this */
            invokedynamic get(Lcom/zaxxer/hikari/pool/HikariPool;)Ljava/util/function/Supplier;
              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;
                  com/zaxxer/hikari/pool/HikariPool.lambda$3()Ljava/util/concurrent/ThreadFactory; (7)
                  ()Ljava/util/concurrent/ThreadFactory;
            invokevirtual java.util.Optional.orElseGet:(Ljava/util/function/Supplier;)Ljava/lang/Object;
            checkcast java.util.concurrent.ThreadFactory
            astore 1 /* threadFactory */
        start local 1 // java.util.concurrent.ThreadFactory threadFactory
         2: .line 633
            new java.util.concurrent.ScheduledThreadPoolExecutor
            dup
            iconst_1
            aload 1 /* threadFactory */
            new java.util.concurrent.ThreadPoolExecutor$DiscardPolicy
            dup
            invokespecial java.util.concurrent.ThreadPoolExecutor$DiscardPolicy.<init>:()V
            invokespecial java.util.concurrent.ScheduledThreadPoolExecutor.<init>:(ILjava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V
            astore 2 /* executor */
        start local 2 // java.util.concurrent.ScheduledThreadPoolExecutor executor
         3: .line 634
            aload 2 /* executor */
            iconst_0
            invokevirtual java.util.concurrent.ScheduledThreadPoolExecutor.setExecuteExistingDelayedTasksAfterShutdownPolicy:(Z)V
         4: .line 635
            aload 2 /* executor */
            iconst_1
            invokevirtual java.util.concurrent.ScheduledThreadPoolExecutor.setRemoveOnCancelPolicy:(Z)V
         5: .line 636
            aload 2 /* executor */
            areturn
        end local 2 // java.util.concurrent.ScheduledThreadPoolExecutor executor
        end local 1 // java.util.concurrent.ThreadFactory threadFactory
         6: .line 639
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getScheduledExecutor:()Ljava/util/concurrent/ScheduledExecutorService;
            areturn
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           this  Lcom/zaxxer/hikari/pool/HikariPool;
            2    6     1  threadFactory  Ljava/util/concurrent/ThreadFactory;
            3    6     2       executor  Ljava/util/concurrent/ScheduledThreadPoolExecutor;

  private void destroyHouseKeepingExecutorService();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 648
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.config:Lcom/zaxxer/hikari/HikariConfig;
            invokevirtual com.zaxxer.hikari.HikariConfig.getScheduledExecutor:()Ljava/util/concurrent/ScheduledExecutorService;
            ifnonnull 2
         1: .line 649
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.houseKeepingExecutorService:Ljava/util/concurrent/ScheduledExecutorService;
            invokeinterface java.util.concurrent.ScheduledExecutorService.shutdownNow:()Ljava/util/List;
            pop
         2: .line 651
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  private com.zaxxer.hikari.metrics.PoolStats getPoolStats();
    descriptor: ()Lcom/zaxxer/hikari/metrics/PoolStats;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 660
            new com.zaxxer.hikari.pool.HikariPool$1
            dup
            aload 0 /* this */
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            lconst_1
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokespecial com.zaxxer.hikari.pool.HikariPool$1.<init>:(Lcom/zaxxer/hikari/pool/HikariPool;J)V
            areturn
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  private java.sql.SQLException createTimeoutException(long);
    descriptor: (J)Ljava/sql/SQLException;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // long startTime
         0: .line 687
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "Timeout failure "
            aastore
            invokevirtual com.zaxxer.hikari.pool.HikariPool.logPoolState:([Ljava/lang/String;)V
         1: .line 688
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.metricsTracker:Lcom/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate;
            invokeinterface com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate.recordConnectionTimeout:()V
         2: .line 690
            aconst_null
            astore 3 /* sqlState */
        start local 3 // java.lang.String sqlState
         3: .line 691
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.getLastConnectionFailure:()Ljava/lang/Exception;
            astore 4 /* originalException */
        start local 4 // java.lang.Throwable originalException
         4: .line 692
            aload 4 /* originalException */
            instanceof java.sql.SQLException
            ifeq 6
         5: .line 693
            aload 4 /* originalException */
            checkcast java.sql.SQLException
            invokevirtual java.sql.SQLException.getSQLState:()Ljava/lang/String;
            astore 3 /* sqlState */
         6: .line 695
      StackMap locals: java.lang.String java.lang.Throwable
      StackMap stack:
            new java.sql.SQLTransientConnectionException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " - Connection is not available, request timed out after "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 1 /* startTime */
            invokestatic com.zaxxer.hikari.util.ClockSource.elapsedMillis:(J)J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc "ms."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* sqlState */
            aload 4 /* originalException */
            invokespecial java.sql.SQLTransientConnectionException.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
            astore 5 /* connectionException */
        start local 5 // java.sql.SQLException connectionException
         7: .line 696
            aload 4 /* originalException */
            instanceof java.sql.SQLException
            ifeq 9
         8: .line 697
            aload 5 /* connectionException */
            aload 4 /* originalException */
            checkcast java.sql.SQLException
            invokevirtual java.sql.SQLException.setNextException:(Ljava/sql/SQLException;)V
         9: .line 700
      StackMap locals: java.sql.SQLException
      StackMap stack:
            aload 5 /* connectionException */
            areturn
        end local 5 // java.sql.SQLException connectionException
        end local 4 // java.lang.Throwable originalException
        end local 3 // java.lang.String sqlState
        end local 1 // long startTime
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   10     0                 this  Lcom/zaxxer/hikari/pool/HikariPool;
            0   10     1            startTime  J
            3   10     3             sqlState  Ljava/lang/String;
            4   10     4    originalException  Ljava/lang/Throwable;
            7   10     5  connectionException  Ljava/sql/SQLException;
    MethodParameters:
           Name  Flags
      startTime  

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokespecial com.zaxxer.hikari.pool.PoolBase.toString:()Ljava/lang/String;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public javax.sql.DataSource getUnwrappedDataSource();
    descriptor: ()Ljavax/sql/DataSource;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokespecial com.zaxxer.hikari.pool.PoolBase.getUnwrappedDataSource:()Ljavax/sql/DataSource;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void lambda$0(com.zaxxer.hikari.pool.PoolEntry);
    descriptor: (Lcom/zaxxer/hikari/pool/PoolEntry;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
        start local 1 // com.zaxxer.hikari.pool.PoolEntry poolEntry
         0: .line 382
            aload 0 /* this */
            aload 1 /* poolEntry */
            ldc "(connection evicted)"
            iconst_0
            invokevirtual com.zaxxer.hikari.pool.HikariPool.softEvictConnection:(Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;Z)Z
            return
        end local 1 // com.zaxxer.hikari.pool.PoolEntry poolEntry
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/zaxxer/hikari/pool/HikariPool;
            0    1     1  poolEntry  Lcom/zaxxer/hikari/pool/PoolEntry;

  private void lambda$1(java.sql.Connection, java.lang.String);
    descriptor: (Ljava/sql/Connection;Ljava/lang/String;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 451
            aload 0 /* this */
            aload 1
            aload 2
            invokevirtual com.zaxxer.hikari.pool.HikariPool.quietlyCloseConnection:(Ljava/sql/Connection;Ljava/lang/String;)V
         1: .line 452
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolState:I
            ifne 3
         2: .line 453
            aload 0 /* this */
            invokevirtual com.zaxxer.hikari.pool.HikariPool.fillPool:()V
         3: .line 455
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  private void lambda$2(com.zaxxer.hikari.pool.PoolEntry);
    descriptor: (Lcom/zaxxer/hikari/pool/PoolEntry;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 486
            aload 0 /* this */
            aload 1
            ldc "(connection has passed maxLifetime)"
            iconst_0
            invokevirtual com.zaxxer.hikari.pool.HikariPool.softEvictConnection:(Lcom/zaxxer/hikari/pool/PoolEntry;Ljava/lang/String;Z)Z
            ifeq 2
         1: .line 487
            aload 0 /* this */
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.connectionBag:Lcom/zaxxer/hikari/util/ConcurrentBag;
            invokevirtual com.zaxxer.hikari.util.ConcurrentBag.getWaitingThreadCount:()I
            invokevirtual com.zaxxer.hikari.pool.HikariPool.addBagItem:(I)V
         2: .line 489
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/zaxxer/hikari/pool/HikariPool;

  private java.util.concurrent.ThreadFactory lambda$3();
    descriptor: ()Ljava/util/concurrent/ThreadFactory;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.zaxxer.hikari.pool.HikariPool this
         0: .line 632
            new com.zaxxer.hikari.util.UtilityElf$DefaultThreadFactory
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.zaxxer.hikari.pool.HikariPool.poolName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " housekeeper"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_1
            invokespecial com.zaxxer.hikari.util.UtilityElf$DefaultThreadFactory.<init>:(Ljava/lang/String;Z)V
            areturn
        end local 0 // com.zaxxer.hikari.pool.HikariPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/zaxxer/hikari/pool/HikariPool;
}
SourceFile: "HikariPool.java"
NestMembers:
  com.zaxxer.hikari.pool.HikariPool$1  com.zaxxer.hikari.pool.HikariPool$HouseKeeper  com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator  com.zaxxer.hikari.pool.HikariPool$PoolInitializationException
InnerClasses:
  com.zaxxer.hikari.pool.HikariPool$1
  private final HouseKeeper = com.zaxxer.hikari.pool.HikariPool$HouseKeeper of com.zaxxer.hikari.pool.HikariPool
  private final PoolEntryCreator = com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator of com.zaxxer.hikari.pool.HikariPool
  public PoolInitializationException = com.zaxxer.hikari.pool.HikariPool$PoolInitializationException of com.zaxxer.hikari.pool.HikariPool
  ConnectionSetupException = com.zaxxer.hikari.pool.PoolBase$ConnectionSetupException of com.zaxxer.hikari.pool.PoolBase
  abstract IMetricsTrackerDelegate = com.zaxxer.hikari.pool.PoolBase$IMetricsTrackerDelegate of com.zaxxer.hikari.pool.PoolBase
  MetricsTrackerDelegate = com.zaxxer.hikari.pool.PoolBase$MetricsTrackerDelegate of com.zaxxer.hikari.pool.PoolBase
  final NopMetricsTrackerDelegate = com.zaxxer.hikari.pool.PoolBase$NopMetricsTrackerDelegate of com.zaxxer.hikari.pool.PoolBase
  public abstract IBagStateListener = com.zaxxer.hikari.util.ConcurrentBag$IBagStateListener of com.zaxxer.hikari.util.ConcurrentBag
  public abstract IConcurrentBagEntry = com.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry of com.zaxxer.hikari.util.ConcurrentBag
  public final DefaultThreadFactory = com.zaxxer.hikari.util.UtilityElf$DefaultThreadFactory of com.zaxxer.hikari.util.UtilityElf
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public CallerRunsPolicy = java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy of java.util.concurrent.ThreadPoolExecutor
  public DiscardOldestPolicy = java.util.concurrent.ThreadPoolExecutor$DiscardOldestPolicy of java.util.concurrent.ThreadPoolExecutor
  public DiscardPolicy = java.util.concurrent.ThreadPoolExecutor$DiscardPolicy of java.util.concurrent.ThreadPoolExecutor