public class org.springframework.jdbc.datasource.DataSourceTransactionManager extends org.springframework.transaction.support.AbstractPlatformTransactionManager implements org.springframework.transaction.support.ResourceTransactionManager, org.springframework.beans.factory.InitializingBean
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.jdbc.datasource.DataSourceTransactionManager
  super_class: org.springframework.transaction.support.AbstractPlatformTransactionManager
{
  private javax.sql.DataSource dataSource;
    descriptor: Ljavax/sql/DataSource;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

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

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
         0: .line 126
            aload 0 /* this */
            invokespecial org.springframework.transaction.support.AbstractPlatformTransactionManager.<init>:()V
         1: .line 118
            aload 0 /* this */
            iconst_0
            putfield org.springframework.jdbc.datasource.DataSourceTransactionManager.enforceReadOnly:Z
         2: .line 127
            aload 0 /* this */
            iconst_1
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.setNestedTransactionAllowed:(Z)V
         3: .line 128
            return
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;

  public void <init>(javax.sql.DataSource);
    descriptor: (Ljavax/sql/DataSource;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // javax.sql.DataSource dataSource
         0: .line 135
            aload 0 /* this */
            invokespecial org.springframework.jdbc.datasource.DataSourceTransactionManager.<init>:()V
         1: .line 136
            aload 0 /* this */
            aload 1 /* dataSource */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.setDataSource:(Ljavax/sql/DataSource;)V
         2: .line 137
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.afterPropertiesSet:()V
         3: .line 138
            return
        end local 1 // javax.sql.DataSource dataSource
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0    4     1  dataSource  Ljavax/sql/DataSource;
    MethodParameters:
            Name  Flags
      dataSource  

  public void setDataSource(javax.sql.DataSource);
    descriptor: (Ljavax/sql/DataSource;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // javax.sql.DataSource dataSource
         0: .line 159
            aload 1 /* dataSource */
            instanceof org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy
            ifeq 3
         1: .line 163
            aload 0 /* this */
            aload 1 /* dataSource */
            checkcast org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy
            invokevirtual org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy.getTargetDataSource:()Ljavax/sql/DataSource;
            putfield org.springframework.jdbc.datasource.DataSourceTransactionManager.dataSource:Ljavax/sql/DataSource;
         2: .line 164
            goto 4
         3: .line 166
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* dataSource */
            putfield org.springframework.jdbc.datasource.DataSourceTransactionManager.dataSource:Ljavax/sql/DataSource;
         4: .line 168
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.sql.DataSource dataSource
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0    5     1  dataSource  Ljavax/sql/DataSource;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      dataSource  

  public javax.sql.DataSource getDataSource();
    descriptor: ()Ljavax/sql/DataSource;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
         0: .line 175
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.dataSource:Ljavax/sql/DataSource;
            areturn
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  protected javax.sql.DataSource obtainDataSource();
    descriptor: ()Ljavax/sql/DataSource;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
         0: .line 185
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            astore 1 /* dataSource */
        start local 1 // javax.sql.DataSource dataSource
         1: .line 186
            aload 1 /* dataSource */
            ifnull 2
            iconst_1
            goto 3
      StackMap locals: javax.sql.DataSource
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "No DataSource set"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         4: .line 187
            aload 1 /* dataSource */
            areturn
        end local 1 // javax.sql.DataSource dataSource
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            1    5     1  dataSource  Ljavax/sql/DataSource;

  public void setEnforceReadOnly(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // boolean enforceReadOnly
         0: .line 209
            aload 0 /* this */
            iload 1 /* enforceReadOnly */
            putfield org.springframework.jdbc.datasource.DataSourceTransactionManager.enforceReadOnly:Z
         1: .line 210
            return
        end local 1 // boolean enforceReadOnly
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0    2     1  enforceReadOnly  Z
    MethodParameters:
                 Name  Flags
      enforceReadOnly  

  public boolean isEnforceReadOnly();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
         0: .line 219
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.enforceReadOnly:Z
            ireturn
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;

  public void afterPropertiesSet();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
         0: .line 224
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnonnull 2
         1: .line 225
            new java.lang.IllegalArgumentException
            dup
            ldc "Property 'dataSource' is required"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 227
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;

  public java.lang.Object getResourceFactory();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
         0: .line 232
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.obtainDataSource:()Ljavax/sql/DataSource;
            areturn
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;

  protected java.lang.Object doGetTransaction();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
         0: .line 237
            new org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
            dup
            invokespecial org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.<init>:()V
            astore 1 /* txObject */
        start local 1 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
         1: .line 238
            aload 1 /* txObject */
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.isNestedTransactionAllowed:()Z
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.setSavepointAllowed:(Z)V
         2: .line 240
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.obtainDataSource:()Ljavax/sql/DataSource;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.jdbc.datasource.ConnectionHolder
         3: .line 239
            astore 2 /* conHolder */
        start local 2 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
         4: .line 241
            aload 1 /* txObject */
            aload 2 /* conHolder */
            iconst_0
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.setConnectionHolder:(Lorg/springframework/jdbc/datasource/ConnectionHolder;Z)V
         5: .line 242
            aload 1 /* txObject */
            areturn
        end local 2 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        end local 1 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            1    6     1   txObject  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager$DataSourceTransactionObject;
            4    6     2  conHolder  Lorg/springframework/jdbc/datasource/ConnectionHolder;

  protected boolean isExistingTransaction(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=3, args_size=2
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 247
            aload 1 /* transaction */
            checkcast org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
         1: .line 248
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.hasConnectionHolder:()Z
            ifeq 2
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.isTransactionActive:()Z
            ifeq 2
            iconst_1
            ireturn
      StackMap locals: org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
      StackMap stack:
         2: iconst_0
            ireturn
        end local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0    3     1  transaction  Ljava/lang/Object;
            1    3     2     txObject  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager$DataSourceTransactionObject;
    MethodParameters:
             Name  Flags
      transaction  

  protected void doBegin(java.lang.Object, org.springframework.transaction.TransactionDefinition);
    descriptor: (Ljava/lang/Object;Lorg/springframework/transaction/TransactionDefinition;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // java.lang.Object transaction
        start local 2 // org.springframework.transaction.TransactionDefinition definition
         0: .line 256
            aload 1 /* transaction */
            checkcast org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
            astore 3 /* txObject */
        start local 3 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
         1: .line 257
            aconst_null
            astore 4 /* con */
        start local 4 // java.sql.Connection con
         2: .line 260
            aload 3 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.hasConnectionHolder:()Z
            ifeq 4
         3: .line 261
            aload 3 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.isSynchronizedWithTransaction:()Z
            ifeq 8
         4: .line 262
      StackMap locals: org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject java.sql.Connection
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.obtainDataSource:()Ljavax/sql/DataSource;
            invokeinterface javax.sql.DataSource.getConnection:()Ljava/sql/Connection;
            astore 5 /* newCon */
        start local 5 // java.sql.Connection newCon
         5: .line 263
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 7
         6: .line 264
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Acquired Connection ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* newCon */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] for JDBC transaction"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         7: .line 266
      StackMap locals: java.sql.Connection
      StackMap stack:
            aload 3 /* txObject */
            new org.springframework.jdbc.datasource.ConnectionHolder
            dup
            aload 5 /* newCon */
            invokespecial org.springframework.jdbc.datasource.ConnectionHolder.<init>:(Ljava/sql/Connection;)V
            iconst_1
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.setConnectionHolder:(Lorg/springframework/jdbc/datasource/ConnectionHolder;Z)V
        end local 5 // java.sql.Connection newCon
         8: .line 269
      StackMap locals:
      StackMap stack:
            aload 3 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            iconst_1
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.setSynchronizedWithTransaction:(Z)V
         9: .line 270
            aload 3 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getConnection:()Ljava/sql/Connection;
            astore 4 /* con */
        10: .line 272
            aload 4 /* con */
            aload 2 /* definition */
            invokestatic org.springframework.jdbc.datasource.DataSourceUtils.prepareConnectionForTransaction:(Ljava/sql/Connection;Lorg/springframework/transaction/TransactionDefinition;)Ljava/lang/Integer;
            astore 5 /* previousIsolationLevel */
        start local 5 // java.lang.Integer previousIsolationLevel
        11: .line 273
            aload 3 /* txObject */
            aload 5 /* previousIsolationLevel */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.setPreviousIsolationLevel:(Ljava/lang/Integer;)V
        12: .line 278
            aload 4 /* con */
            invokeinterface java.sql.Connection.getAutoCommit:()Z
            ifeq 17
        13: .line 279
            aload 3 /* txObject */
            iconst_1
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.setMustRestoreAutoCommit:(Z)V
        14: .line 280
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 16
        15: .line 281
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Switching JDBC Connection ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* con */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] to manual commit"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        16: .line 283
      StackMap locals: java.lang.Integer
      StackMap stack:
            aload 4 /* con */
            iconst_0
            invokeinterface java.sql.Connection.setAutoCommit:(Z)V
        17: .line 286
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* con */
            aload 2 /* definition */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.prepareTransactionalConnection:(Ljava/sql/Connection;Lorg/springframework/transaction/TransactionDefinition;)V
        18: .line 287
            aload 3 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            iconst_1
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.setTransactionActive:(Z)V
        19: .line 289
            aload 0 /* this */
            aload 2 /* definition */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.determineTimeout:(Lorg/springframework/transaction/TransactionDefinition;)I
            istore 6 /* timeout */
        start local 6 // int timeout
        20: .line 290
            iload 6 /* timeout */
            iconst_m1
            if_icmpeq 22
        21: .line 291
            aload 3 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            iload 6 /* timeout */
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.setTimeoutInSeconds:(I)V
        22: .line 295
      StackMap locals: int
      StackMap stack:
            aload 3 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.isNewConnectionHolder:()Z
            ifeq 30
        23: .line 296
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.obtainDataSource:()Ljavax/sql/DataSource;
            aload 3 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // int timeout
        end local 5 // java.lang.Integer previousIsolationLevel
        24: .line 298
            goto 30
        25: .line 300
      StackMap locals: org.springframework.jdbc.datasource.DataSourceTransactionManager java.lang.Object org.springframework.transaction.TransactionDefinition org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject java.sql.Connection
      StackMap stack: java.lang.Throwable
            astore 5 /* ex */
        start local 5 // java.lang.Throwable ex
        26: .line 301
            aload 3 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.isNewConnectionHolder:()Z
            ifeq 29
        27: .line 302
            aload 4 /* con */
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.obtainDataSource:()Ljavax/sql/DataSource;
            invokestatic org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection:(Ljava/sql/Connection;Ljavax/sql/DataSource;)V
        28: .line 303
            aload 3 /* txObject */
            aconst_null
            iconst_0
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.setConnectionHolder:(Lorg/springframework/jdbc/datasource/ConnectionHolder;Z)V
        29: .line 305
      StackMap locals: java.lang.Throwable
      StackMap stack:
            new org.springframework.transaction.CannotCreateTransactionException
            dup
            ldc "Could not open JDBC Connection for transaction"
            aload 5 /* ex */
            invokespecial org.springframework.transaction.CannotCreateTransactionException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.Throwable ex
        30: .line 307
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.sql.Connection con
        end local 3 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
        end local 2 // org.springframework.transaction.TransactionDefinition definition
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   31     0                    this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0   31     1             transaction  Ljava/lang/Object;
            0   31     2              definition  Lorg/springframework/transaction/TransactionDefinition;
            1   31     3                txObject  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager$DataSourceTransactionObject;
            2   31     4                     con  Ljava/sql/Connection;
            5    8     5                  newCon  Ljava/sql/Connection;
           11   24     5  previousIsolationLevel  Ljava/lang/Integer;
           20   24     6                 timeout  I
           26   30     5                      ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2    24      25  Class java.lang.Throwable
    MethodParameters:
             Name  Flags
      transaction  
      definition   

  protected java.lang.Object doSuspend(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 311
            aload 1 /* transaction */
            checkcast org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
         1: .line 312
            aload 2 /* txObject */
            aconst_null
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.setConnectionHolder:(Lorg/springframework/jdbc/datasource/ConnectionHolder;)V
         2: .line 313
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.obtainDataSource:()Ljavax/sql/DataSource;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0    3     1  transaction  Ljava/lang/Object;
            1    3     2     txObject  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager$DataSourceTransactionObject;
    MethodParameters:
             Name  Flags
      transaction  

  protected void doResume(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // java.lang.Object transaction
        start local 2 // java.lang.Object suspendedResources
         0: .line 318
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.obtainDataSource:()Ljavax/sql/DataSource;
            aload 2 /* suspendedResources */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 319
            return
        end local 2 // java.lang.Object suspendedResources
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    2     0                this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0    2     1         transaction  Ljava/lang/Object;
            0    2     2  suspendedResources  Ljava/lang/Object;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
                    Name  Flags
      transaction         
      suspendedResources  

  protected void doCommit(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 323
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            checkcast org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
         1: .line 324
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getConnection:()Ljava/sql/Connection;
            astore 3 /* con */
        start local 3 // java.sql.Connection con
         2: .line 325
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 4
         3: .line 326
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Committing JDBC transaction on Connection ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* con */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         4: .line 329
      StackMap locals: org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject java.sql.Connection
      StackMap stack:
            aload 3 /* con */
            invokeinterface java.sql.Connection.commit:()V
         5: .line 330
            goto 8
         6: .line 331
      StackMap locals:
      StackMap stack: java.sql.SQLException
            astore 4 /* ex */
        start local 4 // java.sql.SQLException ex
         7: .line 332
            new org.springframework.transaction.TransactionSystemException
            dup
            ldc "Could not commit JDBC transaction"
            aload 4 /* ex */
            invokespecial org.springframework.transaction.TransactionSystemException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.sql.SQLException ex
         8: .line 334
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.sql.Connection con
        end local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0    9     1    status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            1    9     2  txObject  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager$DataSourceTransactionObject;
            2    9     3       con  Ljava/sql/Connection;
            7    8     4        ex  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.sql.SQLException
    MethodParameters:
        Name  Flags
      status  

  protected void doRollback(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 338
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            checkcast org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
         1: .line 339
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getConnection:()Ljava/sql/Connection;
            astore 3 /* con */
        start local 3 // java.sql.Connection con
         2: .line 340
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 4
         3: .line 341
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Rolling back JDBC transaction on Connection ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* con */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         4: .line 344
      StackMap locals: org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject java.sql.Connection
      StackMap stack:
            aload 3 /* con */
            invokeinterface java.sql.Connection.rollback:()V
         5: .line 345
            goto 8
         6: .line 346
      StackMap locals:
      StackMap stack: java.sql.SQLException
            astore 4 /* ex */
        start local 4 // java.sql.SQLException ex
         7: .line 347
            new org.springframework.transaction.TransactionSystemException
            dup
            ldc "Could not roll back JDBC transaction"
            aload 4 /* ex */
            invokespecial org.springframework.transaction.TransactionSystemException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.sql.SQLException ex
         8: .line 349
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.sql.Connection con
        end local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0    9     1    status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            1    9     2  txObject  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager$DataSourceTransactionObject;
            2    9     3       con  Ljava/sql/Connection;
            7    8     4        ex  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.sql.SQLException
    MethodParameters:
        Name  Flags
      status  

  protected void doSetRollbackOnly(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 353
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            checkcast org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
         1: .line 354
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 5
         2: .line 355
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Setting JDBC transaction ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getConnection:()Ljava/sql/Connection;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         3: .line 356
            ldc "] rollback-only"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 355
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         5: .line 358
      StackMap locals: org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.setRollbackOnly:()V
         6: .line 359
            return
        end local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0    7     1    status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            1    7     2  txObject  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager$DataSourceTransactionObject;
    MethodParameters:
        Name  Flags
      status  

  protected void doCleanupAfterCompletion(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 363
            aload 1 /* transaction */
            checkcast org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
         1: .line 366
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.isNewConnectionHolder:()Z
            ifeq 3
         2: .line 367
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.obtainDataSource:()Ljavax/sql/DataSource;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 371
      StackMap locals: org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getConnection:()Ljava/sql/Connection;
            astore 3 /* con */
        start local 3 // java.sql.Connection con
         4: .line 373
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.isMustRestoreAutoCommit:()Z
            ifeq 6
         5: .line 374
            aload 3 /* con */
            iconst_1
            invokeinterface java.sql.Connection.setAutoCommit:(Z)V
         6: .line 376
      StackMap locals: java.sql.Connection
      StackMap stack:
            aload 3 /* con */
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getPreviousIsolationLevel:()Ljava/lang/Integer;
            invokestatic org.springframework.jdbc.datasource.DataSourceUtils.resetConnectionAfterTransaction:(Ljava/sql/Connection;Ljava/lang/Integer;)V
         7: .line 377
            goto 10
         8: .line 378
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* ex */
        start local 4 // java.lang.Throwable ex
         9: .line 379
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Could not reset JDBC Connection after transaction"
            aload 4 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 4 // java.lang.Throwable ex
        10: .line 382
      StackMap locals:
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.isNewConnectionHolder:()Z
            ifeq 14
        11: .line 383
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 13
        12: .line 384
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Releasing JDBC Connection ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* con */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] after transaction"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        13: .line 386
      StackMap locals:
      StackMap stack:
            aload 3 /* con */
            aload 0 /* this */
            getfield org.springframework.jdbc.datasource.DataSourceTransactionManager.dataSource:Ljavax/sql/DataSource;
            invokestatic org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection:(Ljava/sql/Connection;Ljavax/sql/DataSource;)V
        14: .line 389
      StackMap locals:
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.clear:()V
        15: .line 390
            return
        end local 3 // java.sql.Connection con
        end local 2 // org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject txObject
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0         this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0   16     1  transaction  Ljava/lang/Object;
            1   16     2     txObject  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager$DataSourceTransactionObject;
            4   16     3          con  Ljava/sql/Connection;
            9   10     4           ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           4     7       8  Class java.lang.Throwable
    MethodParameters:
             Name  Flags
      transaction  

  protected void prepareTransactionalConnection(java.sql.Connection, org.springframework.transaction.TransactionDefinition);
    descriptor: (Ljava/sql/Connection;Lorg/springframework/transaction/TransactionDefinition;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
        start local 1 // java.sql.Connection con
        start local 2 // org.springframework.transaction.TransactionDefinition definition
         0: .line 410
            aload 0 /* this */
            invokevirtual org.springframework.jdbc.datasource.DataSourceTransactionManager.isEnforceReadOnly:()Z
            ifeq 8
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
            ifeq 8
         1: .line 411
            aload 1 /* con */
            invokeinterface java.sql.Connection.createStatement:()Ljava/sql/Statement;
            astore 3 /* stmt */
        start local 3 // java.sql.Statement stmt
         2: .line 413
            aload 3 /* stmt */
            ldc "SET TRANSACTION READ ONLY"
            invokeinterface java.sql.Statement.executeUpdate:(Ljava/lang/String;)I
            pop
         3: .line 414
            goto 7
         4: .line 415
      StackMap locals: org.springframework.jdbc.datasource.DataSourceTransactionManager java.sql.Connection org.springframework.transaction.TransactionDefinition java.sql.Statement
      StackMap stack: java.lang.Throwable
            astore 4
         5: .line 416
            aload 3 /* stmt */
            invokeinterface java.sql.Statement.close:()V
         6: .line 417
            aload 4
            athrow
         7: .line 416
      StackMap locals:
      StackMap stack:
            aload 3 /* stmt */
            invokeinterface java.sql.Statement.close:()V
        end local 3 // java.sql.Statement stmt
         8: .line 419
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.springframework.transaction.TransactionDefinition definition
        end local 1 // java.sql.Connection con
        end local 0 // org.springframework.jdbc.datasource.DataSourceTransactionManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/springframework/jdbc/datasource/DataSourceTransactionManager;
            0    9     1         con  Ljava/sql/Connection;
            0    9     2  definition  Lorg/springframework/transaction/TransactionDefinition;
            2    8     3        stmt  Ljava/sql/Statement;
      Exception table:
        from    to  target  type
           2     4       4  any
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
            Name  Flags
      con         
      definition  
}
SourceFile: "DataSourceTransactionManager.java"
NestMembers:
  org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject
InnerClasses:
  private DataSourceTransactionObject = org.springframework.jdbc.datasource.DataSourceTransactionManager$DataSourceTransactionObject of org.springframework.jdbc.datasource.DataSourceTransactionManager