public class org.apache.commons.dbcp2.PoolableConnection extends org.apache.commons.dbcp2.DelegatingConnection<java.sql.Connection> implements org.apache.commons.dbcp2.PoolableConnectionMXBean
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.commons.dbcp2.PoolableConnection
  super_class: org.apache.commons.dbcp2.DelegatingConnection
{
  private static javax.management.MBeanServer MBEAN_SERVER;
    descriptor: Ljavax/management/MBeanServer;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private final org.apache.commons.pool2.ObjectPool<org.apache.commons.dbcp2.PoolableConnection> pool;
    descriptor: Lorg/apache/commons/pool2/ObjectPool;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/apache/commons/pool2/ObjectPool<Lorg/apache/commons/dbcp2/PoolableConnection;>;

  private final org.apache.commons.dbcp2.ObjectNameWrapper jmxObjectName;
    descriptor: Lorg/apache/commons/dbcp2/ObjectNameWrapper;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.sql.PreparedStatement validationPreparedStatement;
    descriptor: Ljava/sql/PreparedStatement;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String lastValidationSql;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private boolean fatalSqlExceptionThrown;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 46
            invokestatic java.lang.management.ManagementFactory.getPlatformMBeanServer:()Ljavax/management/MBeanServer;
            putstatic org.apache.commons.dbcp2.PoolableConnection.MBEAN_SERVER:Ljavax/management/MBeanServer;
         1: .line 47
            goto 3
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: pop
         3: .line 50
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NoClassDefFoundError
           0     1       2  Class java.lang.Exception

  public void <init>(java.sql.Connection, org.apache.commons.pool2.ObjectPool<org.apache.commons.dbcp2.PoolableConnection>, javax.management.ObjectName, java.util.Collection<java.lang.String>, );
    descriptor: (Ljava/sql/Connection;Lorg/apache/commons/pool2/ObjectPool;Ljavax/management/ObjectName;Ljava/util/Collection;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=6
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
        start local 1 // java.sql.Connection conn
        start local 2 // org.apache.commons.pool2.ObjectPool pool
        start local 3 // javax.management.ObjectName jmxObjectName
        start local 4 // java.util.Collection disconnectSqlCodes
        start local 5 // boolean fastFailValidation
         0: .line 94
            aload 0 /* this */
            aload 1 /* conn */
            invokespecial org.apache.commons.dbcp2.DelegatingConnection.<init>:(Ljava/sql/Connection;)V
         1: .line 66
            aload 0 /* this */
            iconst_0
            putfield org.apache.commons.dbcp2.PoolableConnection.fatalSqlExceptionThrown:Z
         2: .line 95
            aload 0 /* this */
            aload 2 /* pool */
            putfield org.apache.commons.dbcp2.PoolableConnection.pool:Lorg/apache/commons/pool2/ObjectPool;
         3: .line 96
            aload 0 /* this */
            aload 3 /* jmxObjectName */
            invokestatic org.apache.commons.dbcp2.ObjectNameWrapper.wrap:(Ljavax/management/ObjectName;)Lorg/apache/commons/dbcp2/ObjectNameWrapper;
            putfield org.apache.commons.dbcp2.PoolableConnection.jmxObjectName:Lorg/apache/commons/dbcp2/ObjectNameWrapper;
         4: .line 97
            aload 0 /* this */
            aload 4 /* disconnectSqlCodes */
            putfield org.apache.commons.dbcp2.PoolableConnection.disconnectionSqlCodes:Ljava/util/Collection;
         5: .line 98
            aload 0 /* this */
            iload 5 /* fastFailValidation */
            putfield org.apache.commons.dbcp2.PoolableConnection.fastFailValidation:Z
         6: .line 100
            aload 3 /* jmxObjectName */
            ifnull 10
         7: .line 102
            getstatic org.apache.commons.dbcp2.PoolableConnection.MBEAN_SERVER:Ljavax/management/MBeanServer;
            aload 0 /* this */
            aload 3 /* jmxObjectName */
            invokeinterface javax.management.MBeanServer.registerMBean:(Ljava/lang/Object;Ljavax/management/ObjectName;)Ljavax/management/ObjectInstance;
            pop
         8: .line 103
            goto 10
      StackMap locals: org.apache.commons.dbcp2.PoolableConnection java.sql.Connection org.apache.commons.pool2.ObjectPool javax.management.ObjectName java.util.Collection int
      StackMap stack: javax.management.JMException
         9: pop
        10: .line 107
      StackMap locals:
      StackMap stack:
            return
        end local 5 // boolean fastFailValidation
        end local 4 // java.util.Collection disconnectSqlCodes
        end local 3 // javax.management.ObjectName jmxObjectName
        end local 2 // org.apache.commons.pool2.ObjectPool pool
        end local 1 // java.sql.Connection conn
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   11     0                this  Lorg/apache/commons/dbcp2/PoolableConnection;
            0   11     1                conn  Ljava/sql/Connection;
            0   11     2                pool  Lorg/apache/commons/pool2/ObjectPool<Lorg/apache/commons/dbcp2/PoolableConnection;>;
            0   11     3       jmxObjectName  Ljavax/management/ObjectName;
            0   11     4  disconnectSqlCodes  Ljava/util/Collection<Ljava/lang/String;>;
            0   11     5  fastFailValidation  Z
      Exception table:
        from    to  target  type
           7     8       9  Class javax.management.InstanceAlreadyExistsException
           7     8       9  Class javax.management.MBeanRegistrationException
           7     8       9  Class javax.management.NotCompliantMBeanException
    Signature: (Ljava/sql/Connection;Lorg/apache/commons/pool2/ObjectPool<Lorg/apache/commons/dbcp2/PoolableConnection;>;Ljavax/management/ObjectName;Ljava/util/Collection<Ljava/lang/String;>;Z)V
    MethodParameters:
                    Name  Flags
      conn                final
      pool                final
      jmxObjectName       final
      disconnectSqlCodes  final
      fastFailValidation  final

  public void <init>(java.sql.Connection, org.apache.commons.pool2.ObjectPool<org.apache.commons.dbcp2.PoolableConnection>, javax.management.ObjectName);
    descriptor: (Ljava/sql/Connection;Lorg/apache/commons/pool2/ObjectPool;Ljavax/management/ObjectName;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
        start local 1 // java.sql.Connection conn
        start local 2 // org.apache.commons.pool2.ObjectPool pool
        start local 3 // javax.management.ObjectName jmxName
         0: .line 120
            aload 0 /* this */
            aload 1 /* conn */
            aload 2 /* pool */
            aload 3 /* jmxName */
            aconst_null
            iconst_1
            invokespecial org.apache.commons.dbcp2.PoolableConnection.<init>:(Ljava/sql/Connection;Lorg/apache/commons/pool2/ObjectPool;Ljavax/management/ObjectName;Ljava/util/Collection;Z)V
         1: .line 121
            return
        end local 3 // javax.management.ObjectName jmxName
        end local 2 // org.apache.commons.pool2.ObjectPool pool
        end local 1 // java.sql.Connection conn
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/apache/commons/dbcp2/PoolableConnection;
            0    2     1     conn  Ljava/sql/Connection;
            0    2     2     pool  Lorg/apache/commons/pool2/ObjectPool<Lorg/apache/commons/dbcp2/PoolableConnection;>;
            0    2     3  jmxName  Ljavax/management/ObjectName;
    Signature: (Ljava/sql/Connection;Lorg/apache/commons/pool2/ObjectPool<Lorg/apache/commons/dbcp2/PoolableConnection;>;Ljavax/management/ObjectName;)V
    MethodParameters:
         Name  Flags
      conn     final
      pool     final
      jmxName  final

  protected void passivate();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
         0: .line 125
            aload 0 /* this */
            invokespecial org.apache.commons.dbcp2.DelegatingConnection.passivate:()V
         1: .line 126
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.setClosedInternal:(Z)V
         2: .line 127
            return
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/commons/dbcp2/PoolableConnection;
    Exceptions:
      throws java.sql.SQLException

  public boolean isClosed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
         0: .line 138
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.isClosedInternal:()Z
            ifeq 2
         1: .line 139
            iconst_1
            ireturn
         2: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.getDelegateInternal:()Ljava/sql/Connection;
            invokeinterface java.sql.Connection.isClosed:()Z
            ifeq 5
         3: .line 146
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.close:()V
         4: .line 147
            iconst_1
            ireturn
         5: .line 150
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/apache/commons/dbcp2/PoolableConnection;
    Exceptions:
      throws java.sql.SQLException

  public synchronized void close();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
         0: .line 158
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.isClosedInternal:()Z
            ifeq 2
         1: .line 160
            return
         2: .line 165
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.getDelegateInternal:()Ljava/sql/Connection;
            invokeinterface java.sql.Connection.isClosed:()Z
            istore 1 /* isUnderlyingConnectionClosed */
        start local 1 // boolean isUnderlyingConnectionClosed
         3: .line 166
            goto 12
        end local 1 // boolean isUnderlyingConnectionClosed
      StackMap locals:
      StackMap stack: java.sql.SQLException
         4: astore 2 /* e */
        start local 2 // java.sql.SQLException e
         5: .line 168
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.pool:Lorg/apache/commons/pool2/ObjectPool;
            aload 0 /* this */
            invokeinterface org.apache.commons.pool2.ObjectPool.invalidateObject:(Ljava/lang/Object;)V
         6: .line 169
            goto 11
      StackMap locals: org.apache.commons.dbcp2.PoolableConnection top java.sql.SQLException
      StackMap stack: java.lang.IllegalStateException
         7: pop
         8: .line 171
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.passivate:()V
         9: .line 172
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.getInnermostDelegate:()Ljava/sql/Connection;
            invokeinterface java.sql.Connection.close:()V
            goto 11
        10: .line 173
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
        11: .line 176
      StackMap locals:
      StackMap stack:
            new java.sql.SQLException
            dup
            ldc "Cannot close connection (isClosed check failed)"
            aload 2 /* e */
            invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.sql.SQLException e
        start local 1 // boolean isUnderlyingConnectionClosed
        12: .line 184
      StackMap locals: org.apache.commons.dbcp2.PoolableConnection int
      StackMap stack:
            iload 1 /* isUnderlyingConnectionClosed */
            ifeq 20
        13: .line 188
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.pool:Lorg/apache/commons/pool2/ObjectPool;
            aload 0 /* this */
            invokeinterface org.apache.commons.pool2.ObjectPool.invalidateObject:(Ljava/lang/Object;)V
        14: .line 189
            goto 31
      StackMap locals:
      StackMap stack: java.lang.IllegalStateException
        15: pop
        16: .line 191
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.passivate:()V
        17: .line 192
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.getInnermostDelegate:()Ljava/sql/Connection;
            invokeinterface java.sql.Connection.close:()V
            goto 31
        18: .line 193
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
        19: .line 194
            new java.sql.SQLException
            dup
            ldc "Cannot close connection (invalidating pooled object failed)"
            aload 2 /* e */
            invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception e
        20: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.pool:Lorg/apache/commons/pool2/ObjectPool;
            aload 0 /* this */
            invokeinterface org.apache.commons.pool2.ObjectPool.returnObject:(Ljava/lang/Object;)V
        21: .line 201
            goto 31
      StackMap locals:
      StackMap stack: java.lang.IllegalStateException
        22: pop
        23: .line 203
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.passivate:()V
        24: .line 204
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.getInnermostDelegate:()Ljava/sql/Connection;
            invokeinterface java.sql.Connection.close:()V
            goto 31
        25: .line 205
      StackMap locals:
      StackMap stack: java.sql.SQLException
            astore 2 /* e */
        start local 2 // java.sql.SQLException e
        26: .line 206
            aload 2 /* e */
            athrow
        end local 2 // java.sql.SQLException e
        27: .line 207
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            astore 2 /* e */
        start local 2 // java.lang.RuntimeException e
        28: .line 208
            aload 2 /* e */
            athrow
        end local 2 // java.lang.RuntimeException e
        29: .line 209
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
        30: .line 210
            new java.sql.SQLException
            dup
            ldc "Cannot close connection (return to pool failed)"
            aload 2 /* e */
            invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Exception e
        31: .line 213
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean isUnderlyingConnectionClosed
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   32     0                          this  Lorg/apache/commons/dbcp2/PoolableConnection;
            3    4     1  isUnderlyingConnectionClosed  Z
           12   32     1  isUnderlyingConnectionClosed  Z
            5   12     2                             e  Ljava/sql/SQLException;
           19   20     2                             e  Ljava/lang/Exception;
           26   27     2                             e  Ljava/sql/SQLException;
           28   29     2                             e  Ljava/lang/RuntimeException;
           30   31     2                             e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           2     3       4  Class java.sql.SQLException
           5     6       7  Class java.lang.IllegalStateException
           5     6      10  Class java.lang.Exception
          13    14      15  Class java.lang.IllegalStateException
          13    14      18  Class java.lang.Exception
          20    21      22  Class java.lang.IllegalStateException
          20    21      25  Class java.sql.SQLException
          20    21      27  Class java.lang.RuntimeException
          20    21      29  Class java.lang.Exception
    Exceptions:
      throws java.sql.SQLException

  public void reallyClose();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
         0: .line 220
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.jmxObjectName:Lorg/apache/commons/dbcp2/ObjectNameWrapper;
            ifnull 2
         1: .line 221
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.jmxObjectName:Lorg/apache/commons/dbcp2/ObjectNameWrapper;
            invokevirtual org.apache.commons.dbcp2.ObjectNameWrapper.unregisterMBean:()V
         2: .line 224
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.validationPreparedStatement:Ljava/sql/PreparedStatement;
            ifnull 6
         3: .line 226
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.validationPreparedStatement:Ljava/sql/PreparedStatement;
            invokeinterface java.sql.PreparedStatement.close:()V
         4: .line 227
            goto 6
      StackMap locals:
      StackMap stack: java.sql.SQLException
         5: pop
         6: .line 232
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial org.apache.commons.dbcp2.DelegatingConnection.closeInternal:()V
         7: .line 233
            return
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/apache/commons/dbcp2/PoolableConnection;
      Exception table:
        from    to  target  type
           3     4       5  Class java.sql.SQLException
    Exceptions:
      throws java.sql.SQLException

  public java.lang.String getToString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
         0: .line 240
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/commons/dbcp2/PoolableConnection;

  public void validate(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
        start local 1 // java.lang.String sql
        start local 2 // int timeoutSeconds
         0: .line 262
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.fastFailValidation:Z
            ifeq 2
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.fatalSqlExceptionThrown:Z
            ifeq 2
         1: .line 263
            new java.sql.SQLException
            dup
            ldc "poolableConnection.validate.fastFail"
            invokestatic org.apache.commons.dbcp2.Utils.getMessage:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 266
      StackMap locals:
      StackMap stack:
            aload 1 /* sql */
            ifnull 3
            aload 1 /* sql */
            invokevirtual java.lang.String.length:()I
            ifne 8
         3: .line 267
      StackMap locals:
      StackMap stack:
            iload 2 /* timeoutSeconds */
            ifge 5
         4: .line 268
            iconst_0
            istore 2 /* timeoutSeconds */
         5: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* timeoutSeconds */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.isValid:(I)Z
            ifne 7
         6: .line 271
            new java.sql.SQLException
            dup
            ldc "isValid() returned false"
            invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 273
      StackMap locals:
      StackMap stack:
            return
         8: .line 276
      StackMap locals:
      StackMap stack:
            aload 1 /* sql */
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.lastValidationSql:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
         9: .line 277
            aload 0 /* this */
            aload 1 /* sql */
            putfield org.apache.commons.dbcp2.PoolableConnection.lastValidationSql:Ljava/lang/String;
        10: .line 280
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.getInnermostDelegateInternal:()Ljava/sql/Connection;
            aload 1 /* sql */
            invokeinterface java.sql.Connection.prepareStatement:(Ljava/lang/String;)Ljava/sql/PreparedStatement;
            putfield org.apache.commons.dbcp2.PoolableConnection.validationPreparedStatement:Ljava/sql/PreparedStatement;
        11: .line 283
      StackMap locals:
      StackMap stack:
            iload 2 /* timeoutSeconds */
            ifle 13
        12: .line 284
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.validationPreparedStatement:Ljava/sql/PreparedStatement;
            iload 2 /* timeoutSeconds */
            invokeinterface java.sql.PreparedStatement.setQueryTimeout:(I)V
        13: .line 287
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3
            aconst_null
            astore 4
        14: aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.validationPreparedStatement:Ljava/sql/PreparedStatement;
            invokeinterface java.sql.PreparedStatement.executeQuery:()Ljava/sql/ResultSet;
            astore 5 /* rs */
        start local 5 // java.sql.ResultSet rs
        15: .line 288
            aload 5 /* rs */
            invokeinterface java.sql.ResultSet.next:()Z
            ifne 17
        16: .line 289
            new java.sql.SQLException
            dup
            ldc "validationQuery didn't return a row"
            invokespecial java.sql.SQLException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 291
      StackMap locals: java.lang.Throwable java.lang.Throwable java.sql.ResultSet
      StackMap stack:
            aload 5 /* rs */
            ifnull 25
            aload 5 /* rs */
            invokeinterface java.sql.ResultSet.close:()V
            goto 25
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: astore 3
            aload 5 /* rs */
            ifnull 19
            aload 5 /* rs */
            invokeinterface java.sql.ResultSet.close:()V
        end local 5 // java.sql.ResultSet rs
      StackMap locals:
      StackMap stack:
        19: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 4
            aload 3
            ifnonnull 21
            aload 4
            astore 3
            goto 22
      StackMap locals:
      StackMap stack:
        21: aload 3
            aload 4
            if_acmpeq 22
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        22: aload 3
            athrow
      StackMap locals: org.apache.commons.dbcp2.PoolableConnection java.lang.String int
      StackMap stack: java.sql.SQLException
        23: astore 3 /* sqle */
        start local 3 // java.sql.SQLException sqle
        24: .line 292
            aload 3 /* sqle */
            athrow
        end local 3 // java.sql.SQLException sqle
        25: .line 294
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int timeoutSeconds
        end local 1 // java.lang.String sql
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   26     0            this  Lorg/apache/commons/dbcp2/PoolableConnection;
            0   26     1             sql  Ljava/lang/String;
            0   26     2  timeoutSeconds  I
           15   19     5              rs  Ljava/sql/ResultSet;
           24   25     3            sqle  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
          15    17      18  any
          14    20      20  any
          13    23      23  Class java.sql.SQLException
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
                Name  Flags
      sql             final
      timeoutSeconds  

  private boolean isDisconnectionSqlException(java.sql.SQLException);
    descriptor: (Ljava/sql/SQLException;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
        start local 1 // java.sql.SQLException e
         0: .line 310
            iconst_0
            istore 2 /* fatalException */
        start local 2 // boolean fatalException
         1: .line 311
            aload 1 /* e */
            invokevirtual java.sql.SQLException.getSQLState:()Ljava/lang/String;
            astore 3 /* sqlState */
        start local 3 // java.lang.String sqlState
         2: .line 312
            aload 3 /* sqlState */
            ifnull 13
         3: .line 313
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.disconnectionSqlCodes:Ljava/util/Collection;
            ifnonnull 7
         4: .line 314
            aload 3 /* sqlState */
            ldc "08"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 6
         5: .line 315
            getstatic org.apache.commons.dbcp2.Utils.DISCONNECTION_SQL_CODES:Ljava/util/Set;
            aload 3 /* sqlState */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 6
            iconst_0
            goto 8
      StackMap locals: int java.lang.String
      StackMap stack:
         6: iconst_1
            goto 8
         7: .line 316
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.disconnectionSqlCodes:Ljava/util/Collection;
            aload 3 /* sqlState */
            invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
         8: .line 313
      StackMap locals:
      StackMap stack: int
            istore 2 /* fatalException */
         9: .line 317
            iload 2 /* fatalException */
            ifne 13
        10: .line 318
            aload 1 /* e */
            invokevirtual java.sql.SQLException.getNextException:()Ljava/sql/SQLException;
            astore 4 /* nextException */
        start local 4 // java.sql.SQLException nextException
        11: .line 319
            aload 4 /* nextException */
            ifnull 13
            aload 4 /* nextException */
            aload 1 /* e */
            if_acmpeq 13
        12: .line 320
            aload 0 /* this */
            aload 1 /* e */
            invokevirtual java.sql.SQLException.getNextException:()Ljava/sql/SQLException;
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.isDisconnectionSqlException:(Ljava/sql/SQLException;)Z
            istore 2 /* fatalException */
        end local 4 // java.sql.SQLException nextException
        13: .line 324
      StackMap locals:
      StackMap stack:
            iload 2 /* fatalException */
            ireturn
        end local 3 // java.lang.String sqlState
        end local 2 // boolean fatalException
        end local 1 // java.sql.SQLException e
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   14     0            this  Lorg/apache/commons/dbcp2/PoolableConnection;
            0   14     1               e  Ljava/sql/SQLException;
            1   14     2  fatalException  Z
            2   14     3        sqlState  Ljava/lang/String;
           11   13     4   nextException  Ljava/sql/SQLException;
    MethodParameters:
      Name  Flags
      e     final

  protected void handleException(java.sql.SQLException);
    descriptor: (Ljava/sql/SQLException;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
        start local 1 // java.sql.SQLException e
         0: .line 329
            aload 0 /* this */
            dup
            getfield org.apache.commons.dbcp2.PoolableConnection.fatalSqlExceptionThrown:Z
            aload 0 /* this */
            aload 1 /* e */
            invokevirtual org.apache.commons.dbcp2.PoolableConnection.isDisconnectionSqlException:(Ljava/sql/SQLException;)Z
            ior
            putfield org.apache.commons.dbcp2.PoolableConnection.fatalSqlExceptionThrown:Z
         1: .line 330
            aload 0 /* this */
            aload 1 /* e */
            invokespecial org.apache.commons.dbcp2.DelegatingConnection.handleException:(Ljava/sql/SQLException;)V
         2: .line 331
            return
        end local 1 // java.sql.SQLException e
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/commons/dbcp2/PoolableConnection;
            0    3     1     e  Ljava/sql/SQLException;
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
      Name  Flags
      e     final

  public java.util.Collection<java.lang.String> getDisconnectionSqlCodes();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
         0: .line 338
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.disconnectionSqlCodes:Ljava/util/Collection;
            areturn
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/commons/dbcp2/PoolableConnection;
    Signature: ()Ljava/util/Collection<Ljava/lang/String;>;

  public boolean isFastFailValidation();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.dbcp2.PoolableConnection this
         0: .line 346
            aload 0 /* this */
            getfield org.apache.commons.dbcp2.PoolableConnection.fastFailValidation:Z
            ireturn
        end local 0 // org.apache.commons.dbcp2.PoolableConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/commons/dbcp2/PoolableConnection;
}
Signature: Lorg/apache/commons/dbcp2/DelegatingConnection<Ljava/sql/Connection;>;Lorg/apache/commons/dbcp2/PoolableConnectionMXBean;
SourceFile: "PoolableConnection.java"