public abstract class org.springframework.transaction.support.AbstractPlatformTransactionManager implements org.springframework.transaction.PlatformTransactionManager, java.io.Serializable
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.springframework.transaction.support.AbstractPlatformTransactionManager
  super_class: java.lang.Object
{
  public static final int SYNCHRONIZATION_ALWAYS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

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

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

  private static final org.springframework.core.Constants constants;
    descriptor: Lorg/springframework/core/Constants;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected transient org.apache.commons.logging.Log logger;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x0084) ACC_PROTECTED, ACC_TRANSIENT

  private int transactionSynchronization;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int defaultTimeout;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 111
            new org.springframework.core.Constants
            dup
            ldc Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            invokespecial org.springframework.core.Constants.<init>:(Ljava/lang/Class;)V
            putstatic org.springframework.transaction.support.AbstractPlatformTransactionManager.constants:Lorg/springframework/core/Constants;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
         0: .line 83
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 114
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
         2: .line 116
            aload 0 /* this */
            iconst_0
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.transactionSynchronization:I
         3: .line 118
            aload 0 /* this */
            iconst_m1
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.defaultTimeout:I
         4: .line 120
            aload 0 /* this */
            iconst_0
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.nestedTransactionAllowed:Z
         5: .line 122
            aload 0 /* this */
            iconst_0
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.validateExistingTransaction:Z
         6: .line 124
            aload 0 /* this */
            iconst_1
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.globalRollbackOnParticipationFailure:Z
         7: .line 126
            aload 0 /* this */
            iconst_0
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.failEarlyOnGlobalRollbackOnly:Z
         8: .line 128
            aload 0 /* this */
            iconst_0
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.rollbackOnCommitFailure:Z
         9: .line 83
            return
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;

  public final void setTransactionSynchronizationName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.lang.String constantName
         0: .line 138
            aload 0 /* this */
            getstatic org.springframework.transaction.support.AbstractPlatformTransactionManager.constants:Lorg/springframework/core/Constants;
            aload 1 /* constantName */
            invokevirtual org.springframework.core.Constants.asNumber:(Ljava/lang/String;)Ljava/lang/Number;
            invokevirtual java.lang.Number.intValue:()I
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.setTransactionSynchronization:(I)V
         1: .line 139
            return
        end local 1 // java.lang.String constantName
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    2     1  constantName  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      constantName  

  public final void setTransactionSynchronization(int);
    descriptor: (I)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // int transactionSynchronization
         0: .line 154
            aload 0 /* this */
            iload 1 /* transactionSynchronization */
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.transactionSynchronization:I
         1: .line 155
            return
        end local 1 // int transactionSynchronization
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0    2     0                        this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    2     1  transactionSynchronization  I
    MethodParameters:
                            Name  Flags
      transactionSynchronization  

  public final int getTransactionSynchronization();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
         0: .line 162
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.transactionSynchronization:I
            ireturn
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;

  public final void setDefaultTimeout(int);
    descriptor: (I)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // int defaultTimeout
         0: .line 174
            iload 1 /* defaultTimeout */
            iconst_m1
            if_icmpge 2
         1: .line 175
            new org.springframework.transaction.InvalidTimeoutException
            dup
            ldc "Invalid default timeout"
            iload 1 /* defaultTimeout */
            invokespecial org.springframework.transaction.InvalidTimeoutException.<init>:(Ljava/lang/String;I)V
            athrow
         2: .line 177
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* defaultTimeout */
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.defaultTimeout:I
         3: .line 178
            return
        end local 1 // int defaultTimeout
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    4     1  defaultTimeout  I
    MethodParameters:
                Name  Flags
      defaultTimeout  

  public final int getDefaultTimeout();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
         0: .line 187
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.defaultTimeout:I
            ireturn
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;

  public final void setNestedTransactionAllowed(boolean);
    descriptor: (Z)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // boolean nestedTransactionAllowed
         0: .line 196
            aload 0 /* this */
            iload 1 /* nestedTransactionAllowed */
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.nestedTransactionAllowed:Z
         1: .line 197
            return
        end local 1 // boolean nestedTransactionAllowed
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    2     0                      this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    2     1  nestedTransactionAllowed  Z
    MethodParameters:
                          Name  Flags
      nestedTransactionAllowed  

  public final boolean isNestedTransactionAllowed();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
         0: .line 203
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.nestedTransactionAllowed:Z
            ireturn
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;

  public final void setValidateExistingTransaction(boolean);
    descriptor: (Z)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // boolean validateExistingTransaction
         0: .line 221
            aload 0 /* this */
            iload 1 /* validateExistingTransaction */
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.validateExistingTransaction:Z
         1: .line 222
            return
        end local 1 // boolean validateExistingTransaction
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0    2     0                         this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    2     1  validateExistingTransaction  Z
    MethodParameters:
                             Name  Flags
      validateExistingTransaction  

  public final boolean isValidateExistingTransaction();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
         0: .line 230
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.validateExistingTransaction:Z
            ireturn
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;

  public final void setGlobalRollbackOnParticipationFailure(boolean);
    descriptor: (Z)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // boolean globalRollbackOnParticipationFailure
         0: .line 266
            aload 0 /* this */
            iload 1 /* globalRollbackOnParticipationFailure */
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.globalRollbackOnParticipationFailure:Z
         1: .line 267
            return
        end local 1 // boolean globalRollbackOnParticipationFailure
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                                  Name  Signature
            0    2     0                                  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    2     1  globalRollbackOnParticipationFailure  Z
    MethodParameters:
                                      Name  Flags
      globalRollbackOnParticipationFailure  

  public final boolean isGlobalRollbackOnParticipationFailure();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
         0: .line 274
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.globalRollbackOnParticipationFailure:Z
            ireturn
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;

  public final void setFailEarlyOnGlobalRollbackOnly(boolean);
    descriptor: (Z)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // boolean failEarlyOnGlobalRollbackOnly
         0: .line 294
            aload 0 /* this */
            iload 1 /* failEarlyOnGlobalRollbackOnly */
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.failEarlyOnGlobalRollbackOnly:Z
         1: .line 295
            return
        end local 1 // boolean failEarlyOnGlobalRollbackOnly
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0    2     0                           this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    2     1  failEarlyOnGlobalRollbackOnly  Z
    MethodParameters:
                               Name  Flags
      failEarlyOnGlobalRollbackOnly  

  public final boolean isFailEarlyOnGlobalRollbackOnly();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
         0: .line 303
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.failEarlyOnGlobalRollbackOnly:Z
            ireturn
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;

  public final void setRollbackOnCommitFailure(boolean);
    descriptor: (Z)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // boolean rollbackOnCommitFailure
         0: .line 316
            aload 0 /* this */
            iload 1 /* rollbackOnCommitFailure */
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.rollbackOnCommitFailure:Z
         1: .line 317
            return
        end local 1 // boolean rollbackOnCommitFailure
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    2     0                     this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    2     1  rollbackOnCommitFailure  Z
    MethodParameters:
                         Name  Flags
      rollbackOnCommitFailure  

  public final boolean isRollbackOnCommitFailure();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
         0: .line 324
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.rollbackOnCommitFailure:Z
            ireturn
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;

  public final org.springframework.transaction.TransactionStatus getTransaction(org.springframework.transaction.TransactionDefinition);
    descriptor: (Lorg/springframework/transaction/TransactionDefinition;)Lorg/springframework/transaction/TransactionStatus;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=7, locals=7, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.TransactionDefinition definition
         0: .line 342
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doGetTransaction:()Ljava/lang/Object;
            astore 2 /* transaction */
        start local 2 // java.lang.Object transaction
         1: .line 345
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            istore 3 /* debugEnabled */
        start local 3 // boolean debugEnabled
         2: .line 347
            aload 1 /* definition */
            ifnonnull 4
         3: .line 349
            new org.springframework.transaction.support.DefaultTransactionDefinition
            dup
            invokespecial org.springframework.transaction.support.DefaultTransactionDefinition.<init>:()V
            astore 1 /* definition */
         4: .line 352
      StackMap locals: java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            aload 2 /* transaction */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isExistingTransaction:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 354
            aload 0 /* this */
            aload 1 /* definition */
            aload 2 /* transaction */
            iload 3 /* debugEnabled */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.handleExistingTransaction:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;Z)Lorg/springframework/transaction/TransactionStatus;
            areturn
         6: .line 358
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getTimeout:()I
            iconst_m1
            if_icmpge 8
         7: .line 359
            new org.springframework.transaction.InvalidTimeoutException
            dup
            ldc "Invalid transaction timeout"
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getTimeout:()I
            invokespecial org.springframework.transaction.InvalidTimeoutException.<init>:(Ljava/lang/String;I)V
            athrow
         8: .line 363
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            iconst_2
            if_icmpne 12
         9: .line 364
            new org.springframework.transaction.IllegalTransactionStateException
            dup
        10: .line 365
            ldc "No existing transaction found for transaction marked with propagation 'mandatory'"
        11: .line 364
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 367
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            ifeq 15
        13: .line 368
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            iconst_3
            if_icmpeq 15
        14: .line 369
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            bipush 6
            if_icmpne 31
        15: .line 370
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.suspend:(Ljava/lang/Object;)Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;
            astore 4 /* suspendedResources */
        start local 4 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspendedResources
        16: .line 371
            iload 3 /* debugEnabled */
            ifeq 18
        17: .line 372
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Creating new transaction with name ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* definition */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        18: .line 375
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransactionSynchronization:()I
            iconst_2
            if_icmpeq 19
            iconst_1
            goto 20
      StackMap locals:
      StackMap stack:
        19: iconst_0
      StackMap locals:
      StackMap stack: int
        20: istore 5 /* newSynchronization */
        start local 5 // boolean newSynchronization
        21: .line 376
            aload 0 /* this */
        22: .line 377
            aload 1 /* definition */
            aload 2 /* transaction */
            iconst_1
            iload 5 /* newSynchronization */
            iload 3 /* debugEnabled */
            aload 4 /* suspendedResources */
        23: .line 376
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.newTransactionStatus:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZZZLjava/lang/Object;)Lorg/springframework/transaction/support/DefaultTransactionStatus;
            astore 6 /* status */
        start local 6 // org.springframework.transaction.support.DefaultTransactionStatus status
        24: .line 378
            aload 0 /* this */
            aload 2 /* transaction */
            aload 1 /* definition */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doBegin:(Ljava/lang/Object;Lorg/springframework/transaction/TransactionDefinition;)V
        25: .line 379
            aload 0 /* this */
            aload 6 /* status */
            aload 1 /* definition */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.prepareSynchronization:(Lorg/springframework/transaction/support/DefaultTransactionStatus;Lorg/springframework/transaction/TransactionDefinition;)V
        26: .line 380
            aload 6 /* status */
        27: areturn
        end local 6 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 5 // boolean newSynchronization
        28: .line 382
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5 /* ex */
        start local 5 // java.lang.Throwable ex
        29: .line 383
            aload 0 /* this */
            aconst_null
            aload 4 /* suspendedResources */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.resume:(Ljava/lang/Object;Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;)V
        30: .line 384
            aload 5 /* ex */
            athrow
        end local 5 // java.lang.Throwable ex
        end local 4 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspendedResources
        31: .line 389
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
            iconst_m1
            if_icmpeq 35
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isWarnEnabled:()Z
            ifeq 35
        32: .line 390
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Custom isolation level specified but no actual transaction initiated; isolation level will effectively be ignored: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        33: .line 391
            aload 1 /* definition */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        34: .line 390
            invokeinterface org.apache.commons.logging.Log.warn:(Ljava/lang/Object;)V
        35: .line 393
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransactionSynchronization:()I
            ifne 36
            iconst_1
            goto 37
      StackMap locals:
      StackMap stack:
        36: iconst_0
      StackMap locals:
      StackMap stack: int
        37: istore 4 /* newSynchronization */
        start local 4 // boolean newSynchronization
        38: .line 394
            aload 0 /* this */
            aload 1 /* definition */
            aconst_null
            iconst_1
            iload 4 /* newSynchronization */
            iload 3 /* debugEnabled */
            aconst_null
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.prepareTransactionStatus:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZZZLjava/lang/Object;)Lorg/springframework/transaction/support/DefaultTransactionStatus;
            areturn
        end local 4 // boolean newSynchronization
        end local 3 // boolean debugEnabled
        end local 2 // java.lang.Object transaction
        end local 1 // org.springframework.transaction.TransactionDefinition definition
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   39     0                this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   39     1          definition  Lorg/springframework/transaction/TransactionDefinition;
            1   39     2         transaction  Ljava/lang/Object;
            2   39     3        debugEnabled  Z
           16   31     4  suspendedResources  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;
           21   28     5  newSynchronization  Z
           24   28     6              status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
           29   31     5                  ex  Ljava/lang/Throwable;
           38   39     4  newSynchronization  Z
      Exception table:
        from    to  target  type
          18    27      28  Class java.lang.RuntimeException
          18    27      28  Class java.lang.Error
    Exceptions:
      throws org.springframework.transaction.TransactionException
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      definition  

  private org.springframework.transaction.TransactionStatus handleExistingTransaction(org.springframework.transaction.TransactionDefinition, java.lang.Object, boolean);
    descriptor: (Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;Z)Lorg/springframework/transaction/TransactionStatus;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=7, args_size=4
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.TransactionDefinition definition
        start local 2 // java.lang.Object transaction
        start local 3 // boolean debugEnabled
         0: .line 405
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            iconst_5
            if_icmpne 4
         1: .line 406
            new org.springframework.transaction.IllegalTransactionStateException
            dup
         2: .line 407
            ldc "Existing transaction found for transaction marked with propagation 'never'"
         3: .line 406
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 410
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            iconst_4
            if_icmpne 14
         5: .line 411
            iload 3 /* debugEnabled */
            ifeq 7
         6: .line 412
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Suspending current transaction"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         7: .line 414
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* transaction */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.suspend:(Ljava/lang/Object;)Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;
            astore 4 /* suspendedResources */
        start local 4 // java.lang.Object suspendedResources
         8: .line 415
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransactionSynchronization:()I
            ifne 9
            iconst_1
            goto 10
      StackMap locals: java.lang.Object
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 5 /* newSynchronization */
        start local 5 // boolean newSynchronization
        11: .line 416
            aload 0 /* this */
        12: .line 417
            aload 1 /* definition */
            aconst_null
            iconst_0
            iload 5 /* newSynchronization */
            iload 3 /* debugEnabled */
            aload 4 /* suspendedResources */
        13: .line 416
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.prepareTransactionStatus:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZZZLjava/lang/Object;)Lorg/springframework/transaction/support/DefaultTransactionStatus;
            areturn
        end local 5 // boolean newSynchronization
        end local 4 // java.lang.Object suspendedResources
        14: .line 420
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            iconst_3
            if_icmpne 33
        15: .line 421
            iload 3 /* debugEnabled */
            ifeq 19
        16: .line 422
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Suspending current transaction, creating new transaction with name ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        17: .line 423
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        18: .line 422
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        19: .line 425
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* transaction */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.suspend:(Ljava/lang/Object;)Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;
            astore 4 /* suspendedResources */
        start local 4 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspendedResources
        20: .line 427
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransactionSynchronization:()I
            iconst_2
            if_icmpeq 21
            iconst_1
            goto 22
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder
      StackMap stack:
        21: iconst_0
      StackMap locals:
      StackMap stack: int
        22: istore 5 /* newSynchronization */
        start local 5 // boolean newSynchronization
        23: .line 428
            aload 0 /* this */
        24: .line 429
            aload 1 /* definition */
            aload 2 /* transaction */
            iconst_1
            iload 5 /* newSynchronization */
            iload 3 /* debugEnabled */
            aload 4 /* suspendedResources */
        25: .line 428
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.newTransactionStatus:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZZZLjava/lang/Object;)Lorg/springframework/transaction/support/DefaultTransactionStatus;
            astore 6 /* status */
        start local 6 // org.springframework.transaction.support.DefaultTransactionStatus status
        26: .line 430
            aload 0 /* this */
            aload 2 /* transaction */
            aload 1 /* definition */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doBegin:(Ljava/lang/Object;Lorg/springframework/transaction/TransactionDefinition;)V
        27: .line 431
            aload 0 /* this */
            aload 6 /* status */
            aload 1 /* definition */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.prepareSynchronization:(Lorg/springframework/transaction/support/DefaultTransactionStatus;Lorg/springframework/transaction/TransactionDefinition;)V
        28: .line 432
            aload 6 /* status */
        29: areturn
        end local 6 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 5 // boolean newSynchronization
        30: .line 434
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5 /* beginEx */
        start local 5 // java.lang.Throwable beginEx
        31: .line 435
            aload 0 /* this */
            aload 2 /* transaction */
            aload 4 /* suspendedResources */
            aload 5 /* beginEx */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.resumeAfterBeginException:(Ljava/lang/Object;Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;Ljava/lang/Throwable;)V
        32: .line 436
            aload 5 /* beginEx */
            athrow
        end local 5 // java.lang.Throwable beginEx
        end local 4 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspendedResources
        33: .line 440
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            bipush 6
            if_icmpne 54
        34: .line 441
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isNestedTransactionAllowed:()Z
            ifne 38
        35: .line 442
            new org.springframework.transaction.NestedTransactionNotSupportedException
            dup
        36: .line 443
            ldc "Transaction manager does not allow nested transactions by default - specify 'nestedTransactionAllowed' property with value 'true'"
        37: .line 442
            invokespecial org.springframework.transaction.NestedTransactionNotSupportedException.<init>:(Ljava/lang/String;)V
            athrow
        38: .line 446
      StackMap locals:
      StackMap stack:
            iload 3 /* debugEnabled */
            ifeq 40
        39: .line 447
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Creating nested transaction with name ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)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
        40: .line 449
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.useSavepointForNestedTransaction:()Z
            ifeq 45
        41: .line 454
            aload 0 /* this */
            aload 1 /* definition */
            aload 2 /* transaction */
            iconst_0
            iconst_0
            iload 3 /* debugEnabled */
            aconst_null
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.prepareTransactionStatus:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZZZLjava/lang/Object;)Lorg/springframework/transaction/support/DefaultTransactionStatus;
        42: .line 453
            astore 4 /* status */
        start local 4 // org.springframework.transaction.support.DefaultTransactionStatus status
        43: .line 455
            aload 4 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.createAndHoldSavepoint:()V
        44: .line 456
            aload 4 /* status */
            areturn
        end local 4 // org.springframework.transaction.support.DefaultTransactionStatus status
        45: .line 462
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransactionSynchronization:()I
            iconst_2
            if_icmpeq 46
            iconst_1
            goto 47
      StackMap locals:
      StackMap stack:
        46: iconst_0
      StackMap locals:
      StackMap stack: int
        47: istore 4 /* newSynchronization */
        start local 4 // boolean newSynchronization
        48: .line 463
            aload 0 /* this */
        49: .line 464
            aload 1 /* definition */
            aload 2 /* transaction */
            iconst_1
            iload 4 /* newSynchronization */
            iload 3 /* debugEnabled */
            aconst_null
        50: .line 463
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.newTransactionStatus:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZZZLjava/lang/Object;)Lorg/springframework/transaction/support/DefaultTransactionStatus;
            astore 5 /* status */
        start local 5 // org.springframework.transaction.support.DefaultTransactionStatus status
        51: .line 465
            aload 0 /* this */
            aload 2 /* transaction */
            aload 1 /* definition */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doBegin:(Ljava/lang/Object;Lorg/springframework/transaction/TransactionDefinition;)V
        52: .line 466
            aload 0 /* this */
            aload 5 /* status */
            aload 1 /* definition */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.prepareSynchronization:(Lorg/springframework/transaction/support/DefaultTransactionStatus;Lorg/springframework/transaction/TransactionDefinition;)V
        53: .line 467
            aload 5 /* status */
            areturn
        end local 5 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 4 // boolean newSynchronization
        54: .line 472
      StackMap locals:
      StackMap stack:
            iload 3 /* debugEnabled */
            ifeq 56
        55: .line 473
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Participating in existing transaction"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        56: .line 475
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isValidateExistingTransaction:()Z
            ifeq 73
        57: .line 476
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
            iconst_m1
            if_icmpeq 68
        58: .line 477
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getCurrentTransactionIsolationLevel:()Ljava/lang/Integer;
            astore 4 /* currentIsolationLevel */
        start local 4 // java.lang.Integer currentIsolationLevel
        59: .line 478
            aload 4 /* currentIsolationLevel */
            ifnull 60
            aload 4 /* currentIsolationLevel */
            invokevirtual java.lang.Integer.intValue:()I
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
            if_icmpeq 68
        60: .line 479
      StackMap locals: java.lang.Integer
      StackMap stack:
            getstatic org.springframework.transaction.support.DefaultTransactionDefinition.constants:Lorg/springframework/core/Constants;
            astore 5 /* isoConstants */
        start local 5 // org.springframework.core.Constants isoConstants
        61: .line 480
            new org.springframework.transaction.IllegalTransactionStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Participating transaction with definition ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        62: .line 481
            aload 1 /* definition */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] specifies isolation level which is incompatible with existing transaction: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        63: .line 482
            aload 4 /* currentIsolationLevel */
            ifnull 65
        64: .line 483
            aload 5 /* isoConstants */
            aload 4 /* currentIsolationLevel */
            ldc "ISOLATION_"
            invokevirtual org.springframework.core.Constants.toCode:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;
            goto 66
        65: .line 484
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager org.springframework.transaction.TransactionDefinition java.lang.Object int java.lang.Integer org.springframework.core.Constants
      StackMap stack: new 61 new 61 java.lang.StringBuilder
            ldc "(unknown)"
        66: .line 482
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager org.springframework.transaction.TransactionDefinition java.lang.Object int java.lang.Integer org.springframework.core.Constants
      StackMap stack: new 61 new 61 java.lang.StringBuilder java.lang.String
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        67: .line 480
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // org.springframework.core.Constants isoConstants
        end local 4 // java.lang.Integer currentIsolationLevel
        68: .line 487
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
            ifne 73
        69: .line 488
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isCurrentTransactionReadOnly:()Z
            ifeq 73
        70: .line 489
            new org.springframework.transaction.IllegalTransactionStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Participating transaction with definition ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        71: .line 490
            aload 1 /* definition */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] is not marked as read-only but existing transaction is"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        72: .line 489
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
        73: .line 494
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransactionSynchronization:()I
            iconst_2
            if_icmpeq 74
            iconst_1
            goto 75
      StackMap locals:
      StackMap stack:
        74: iconst_0
      StackMap locals:
      StackMap stack: int
        75: istore 4 /* newSynchronization */
        start local 4 // boolean newSynchronization
        76: .line 495
            aload 0 /* this */
            aload 1 /* definition */
            aload 2 /* transaction */
            iconst_0
            iload 4 /* newSynchronization */
            iload 3 /* debugEnabled */
            aconst_null
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.prepareTransactionStatus:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZZZLjava/lang/Object;)Lorg/springframework/transaction/support/DefaultTransactionStatus;
            areturn
        end local 4 // boolean newSynchronization
        end local 3 // boolean debugEnabled
        end local 2 // java.lang.Object transaction
        end local 1 // org.springframework.transaction.TransactionDefinition definition
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   77     0                   this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   77     1             definition  Lorg/springframework/transaction/TransactionDefinition;
            0   77     2            transaction  Ljava/lang/Object;
            0   77     3           debugEnabled  Z
            8   14     4     suspendedResources  Ljava/lang/Object;
           11   14     5     newSynchronization  Z
           20   33     4     suspendedResources  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;
           23   30     5     newSynchronization  Z
           26   30     6                 status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
           31   33     5                beginEx  Ljava/lang/Throwable;
           43   45     4                 status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
           48   54     4     newSynchronization  Z
           51   54     5                 status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
           59   68     4  currentIsolationLevel  Ljava/lang/Integer;
           61   68     5           isoConstants  Lorg/springframework/core/Constants;
           76   77     4     newSynchronization  Z
      Exception table:
        from    to  target  type
          20    29      30  Class java.lang.RuntimeException
          20    29      30  Class java.lang.Error
    Exceptions:
      throws org.springframework.transaction.TransactionException
    MethodParameters:
              Name  Flags
      definition    
      transaction   
      debugEnabled  

  protected final org.springframework.transaction.support.DefaultTransactionStatus prepareTransactionStatus(org.springframework.transaction.TransactionDefinition, java.lang.Object, boolean, boolean, boolean, java.lang.Object);
    descriptor: (Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZZZLjava/lang/Object;)Lorg/springframework/transaction/support/DefaultTransactionStatus;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=7, locals=8, args_size=7
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.TransactionDefinition definition
        start local 2 // java.lang.Object transaction
        start local 3 // boolean newTransaction
        start local 4 // boolean newSynchronization
        start local 5 // boolean debug
        start local 6 // java.lang.Object suspendedResources
         0: .line 508
            aload 0 /* this */
         1: .line 509
            aload 1 /* definition */
            aload 2 /* transaction */
            iload 3 /* newTransaction */
            iload 4 /* newSynchronization */
            iload 5 /* debug */
            aload 6 /* suspendedResources */
         2: .line 508
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.newTransactionStatus:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZZZLjava/lang/Object;)Lorg/springframework/transaction/support/DefaultTransactionStatus;
            astore 7 /* status */
        start local 7 // org.springframework.transaction.support.DefaultTransactionStatus status
         3: .line 510
            aload 0 /* this */
            aload 7 /* status */
            aload 1 /* definition */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.prepareSynchronization:(Lorg/springframework/transaction/support/DefaultTransactionStatus;Lorg/springframework/transaction/TransactionDefinition;)V
         4: .line 511
            aload 7 /* status */
            areturn
        end local 7 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 6 // java.lang.Object suspendedResources
        end local 5 // boolean debug
        end local 4 // boolean newSynchronization
        end local 3 // boolean newTransaction
        end local 2 // java.lang.Object transaction
        end local 1 // org.springframework.transaction.TransactionDefinition definition
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    5     1          definition  Lorg/springframework/transaction/TransactionDefinition;
            0    5     2         transaction  Ljava/lang/Object;
            0    5     3      newTransaction  Z
            0    5     4  newSynchronization  Z
            0    5     5               debug  Z
            0    5     6  suspendedResources  Ljava/lang/Object;
            3    5     7              status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
      2:
      3:
      4:
      5:
        org.springframework.lang.Nullable()
    MethodParameters:
                    Name  Flags
      definition          
      transaction         
      newTransaction      
      newSynchronization  
      debug               
      suspendedResources  

  protected org.springframework.transaction.support.DefaultTransactionStatus newTransactionStatus(org.springframework.transaction.TransactionDefinition, java.lang.Object, boolean, boolean, boolean, java.lang.Object);
    descriptor: (Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZZZLjava/lang/Object;)Lorg/springframework/transaction/support/DefaultTransactionStatus;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=8, args_size=7
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.TransactionDefinition definition
        start local 2 // java.lang.Object transaction
        start local 3 // boolean newTransaction
        start local 4 // boolean newSynchronization
        start local 5 // boolean debug
        start local 6 // java.lang.Object suspendedResources
         0: .line 521
            iload 4 /* newSynchronization */
            ifeq 3
         1: .line 522
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isSynchronizationActive:()Z
            ifne 3
         2: .line 521
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: istore 7 /* actualNewSynchronization */
        start local 7 // boolean actualNewSynchronization
         5: .line 523
            new org.springframework.transaction.support.DefaultTransactionStatus
            dup
         6: .line 524
            aload 2 /* transaction */
            iload 3 /* newTransaction */
            iload 7 /* actualNewSynchronization */
         7: .line 525
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
            iload 5 /* debug */
            aload 6 /* suspendedResources */
         8: .line 523
            invokespecial org.springframework.transaction.support.DefaultTransactionStatus.<init>:(Ljava/lang/Object;ZZZZLjava/lang/Object;)V
            areturn
        end local 7 // boolean actualNewSynchronization
        end local 6 // java.lang.Object suspendedResources
        end local 5 // boolean debug
        end local 4 // boolean newSynchronization
        end local 3 // boolean newTransaction
        end local 2 // java.lang.Object transaction
        end local 1 // org.springframework.transaction.TransactionDefinition definition
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    9     0                      this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    9     1                definition  Lorg/springframework/transaction/TransactionDefinition;
            0    9     2               transaction  Ljava/lang/Object;
            0    9     3            newTransaction  Z
            0    9     4        newSynchronization  Z
            0    9     5                     debug  Z
            0    9     6        suspendedResources  Ljava/lang/Object;
            5    9     7  actualNewSynchronization  Z
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
      2:
      3:
      4:
      5:
        org.springframework.lang.Nullable()
    MethodParameters:
                    Name  Flags
      definition          
      transaction         
      newTransaction      
      newSynchronization  
      debug               
      suspendedResources  

  protected void prepareSynchronization(org.springframework.transaction.support.DefaultTransactionStatus, org.springframework.transaction.TransactionDefinition);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;Lorg/springframework/transaction/TransactionDefinition;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        start local 2 // org.springframework.transaction.TransactionDefinition definition
         0: .line 532
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 9
         1: .line 533
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.hasTransaction:()Z
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setActualTransactionActive:(Z)V
         2: .line 535
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
            iconst_m1
            if_icmpeq 4
         3: .line 536
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            goto 5
      StackMap locals:
      StackMap stack:
         4: aconst_null
         5: .line 534
      StackMap locals:
      StackMap stack: java.lang.Integer
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionIsolationLevel:(Ljava/lang/Integer;)V
         6: .line 537
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionReadOnly:(Z)V
         7: .line 538
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getName:()Ljava/lang/String;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionName:(Ljava/lang/String;)V
         8: .line 539
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.initSynchronization:()V
         9: .line 541
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.springframework.transaction.TransactionDefinition definition
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   10     1      status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            0   10     2  definition  Lorg/springframework/transaction/TransactionDefinition;
    MethodParameters:
            Name  Flags
      status      
      definition  

  protected int determineTimeout(org.springframework.transaction.TransactionDefinition);
    descriptor: (Lorg/springframework/transaction/TransactionDefinition;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.TransactionDefinition definition
         0: .line 553
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getTimeout:()I
            iconst_m1
            if_icmpeq 2
         1: .line 554
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getTimeout:()I
            ireturn
         2: .line 556
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.defaultTimeout:I
            ireturn
        end local 1 // org.springframework.transaction.TransactionDefinition definition
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    3     1  definition  Lorg/springframework/transaction/TransactionDefinition;
    MethodParameters:
            Name  Flags
      definition  

  protected final org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspend(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=8, locals=8, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 572
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isSynchronizationActive:()Z
            ifeq 20
         1: .line 573
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doSuspendSynchronization:()Ljava/util/List;
            astore 2 /* suspendedSynchronizations */
        start local 2 // java.util.List suspendedSynchronizations
         2: .line 575
            aconst_null
            astore 3 /* suspendedResources */
        start local 3 // java.lang.Object suspendedResources
         3: .line 576
            aload 1 /* transaction */
            ifnull 5
         4: .line 577
            aload 0 /* this */
            aload 1 /* transaction */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doSuspend:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* suspendedResources */
         5: .line 579
      StackMap locals: java.util.List java.lang.Object
      StackMap stack:
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getCurrentTransactionName:()Ljava/lang/String;
            astore 4 /* name */
        start local 4 // java.lang.String name
         6: .line 580
            aconst_null
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionName:(Ljava/lang/String;)V
         7: .line 581
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isCurrentTransactionReadOnly:()Z
            istore 5 /* readOnly */
        start local 5 // boolean readOnly
         8: .line 582
            iconst_0
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionReadOnly:(Z)V
         9: .line 583
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getCurrentTransactionIsolationLevel:()Ljava/lang/Integer;
            astore 6 /* isolationLevel */
        start local 6 // java.lang.Integer isolationLevel
        10: .line 584
            aconst_null
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionIsolationLevel:(Ljava/lang/Integer;)V
        11: .line 585
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isActualTransactionActive:()Z
            istore 7 /* wasActive */
        start local 7 // boolean wasActive
        12: .line 586
            iconst_0
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setActualTransactionActive:(Z)V
        13: .line 587
            new org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder
            dup
        14: .line 588
            aload 3 /* suspendedResources */
            aload 2 /* suspendedSynchronizations */
            aload 4 /* name */
            iload 5 /* readOnly */
            aload 6 /* isolationLevel */
            iload 7 /* wasActive */
        15: .line 587
            invokespecial org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder.<init>:(Ljava/lang/Object;Ljava/util/List;Ljava/lang/String;ZLjava/lang/Integer;Z)V
        16: areturn
        end local 7 // boolean wasActive
        end local 6 // java.lang.Integer isolationLevel
        end local 5 // boolean readOnly
        end local 4 // java.lang.String name
        end local 3 // java.lang.Object suspendedResources
        17: .line 590
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager java.lang.Object java.util.List
      StackMap stack: java.lang.Throwable
            astore 3 /* ex */
        start local 3 // java.lang.Throwable ex
        18: .line 592
            aload 0 /* this */
            aload 2 /* suspendedSynchronizations */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doResumeSynchronization:(Ljava/util/List;)V
        19: .line 593
            aload 3 /* ex */
            athrow
        end local 3 // java.lang.Throwable ex
        end local 2 // java.util.List suspendedSynchronizations
        20: .line 596
      StackMap locals:
      StackMap stack:
            aload 1 /* transaction */
            ifnull 23
        21: .line 598
            aload 0 /* this */
            aload 1 /* transaction */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doSuspend:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 2 /* suspendedResources */
        start local 2 // java.lang.Object suspendedResources
        22: .line 599
            new org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder
            dup
            aload 2 /* suspendedResources */
            invokespecial org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder.<init>:(Ljava/lang/Object;)V
            areturn
        end local 2 // java.lang.Object suspendedResources
        23: .line 603
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   24     0                       this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   24     1                transaction  Ljava/lang/Object;
            2   20     2  suspendedSynchronizations  Ljava/util/List<Lorg/springframework/transaction/support/TransactionSynchronization;>;
            3   17     3         suspendedResources  Ljava/lang/Object;
            6   17     4                       name  Ljava/lang/String;
            8   17     5                   readOnly  Z
           10   17     6             isolationLevel  Ljava/lang/Integer;
           12   17     7                  wasActive  Z
           18   20     3                         ex  Ljava/lang/Throwable;
           22   23     2         suspendedResources  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           2    16      17  Class java.lang.RuntimeException
           2    16      17  Class java.lang.Error
    Exceptions:
      throws org.springframework.transaction.TransactionException
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      transaction  

  protected final void resume(java.lang.Object, org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder);
    descriptor: (Ljava/lang/Object;Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.lang.Object transaction
        start local 2 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder resourcesHolder
         0: .line 620
            aload 2 /* resourcesHolder */
            ifnull 11
         1: .line 621
            aload 2 /* resourcesHolder */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder.suspendedResources:Ljava/lang/Object;
            astore 3 /* suspendedResources */
        start local 3 // java.lang.Object suspendedResources
         2: .line 622
            aload 3 /* suspendedResources */
            ifnull 4
         3: .line 623
            aload 0 /* this */
            aload 1 /* transaction */
            aload 3 /* suspendedResources */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doResume:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 625
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* resourcesHolder */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder.suspendedSynchronizations:Ljava/util/List;
            astore 4 /* suspendedSynchronizations */
        start local 4 // java.util.List suspendedSynchronizations
         5: .line 626
            aload 4 /* suspendedSynchronizations */
            ifnull 11
         6: .line 627
            aload 2 /* resourcesHolder */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder.wasActive:Z
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setActualTransactionActive:(Z)V
         7: .line 628
            aload 2 /* resourcesHolder */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder.isolationLevel:Ljava/lang/Integer;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionIsolationLevel:(Ljava/lang/Integer;)V
         8: .line 629
            aload 2 /* resourcesHolder */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder.readOnly:Z
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionReadOnly:(Z)V
         9: .line 630
            aload 2 /* resourcesHolder */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder.name:Ljava/lang/String;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionName:(Ljava/lang/String;)V
        10: .line 631
            aload 0 /* this */
            aload 4 /* suspendedSynchronizations */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doResumeSynchronization:(Ljava/util/List;)V
        end local 4 // java.util.List suspendedSynchronizations
        end local 3 // java.lang.Object suspendedResources
        11: .line 634
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder resourcesHolder
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   12     0                       this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   12     1                transaction  Ljava/lang/Object;
            0   12     2            resourcesHolder  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;
            2   11     3         suspendedResources  Ljava/lang/Object;
            5   11     4  suspendedSynchronizations  Ljava/util/List<Lorg/springframework/transaction/support/TransactionSynchronization;>;
    Exceptions:
      throws org.springframework.transaction.TransactionException
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
                 Name  Flags
      transaction      
      resourcesHolder  

  private void resumeAfterBeginException(java.lang.Object, org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder, java.lang.Throwable);
    descriptor: (Ljava/lang/Object;Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.lang.Object transaction
        start local 2 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspendedResources
        start local 3 // java.lang.Throwable beginEx
         0: .line 642
            ldc "Inner transaction begin exception overridden by outer transaction resume exception"
            astore 4 /* exMessage */
        start local 4 // java.lang.String exMessage
         1: .line 644
            aload 0 /* this */
            aload 1 /* transaction */
            aload 2 /* suspendedResources */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.resume:(Ljava/lang/Object;Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;)V
         2: .line 645
            goto 6
         3: .line 646
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager java.lang.Object org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder java.lang.Throwable java.lang.String
      StackMap stack: java.lang.Throwable
            astore 5 /* resumeEx */
        start local 5 // java.lang.Throwable resumeEx
         4: .line 647
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            aload 4 /* exMessage */
            aload 3 /* beginEx */
            invokeinterface org.apache.commons.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         5: .line 648
            aload 5 /* resumeEx */
            athrow
        end local 5 // java.lang.Throwable resumeEx
         6: .line 650
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.lang.String exMessage
        end local 3 // java.lang.Throwable beginEx
        end local 2 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspendedResources
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    7     0                this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    7     1         transaction  Ljava/lang/Object;
            0    7     2  suspendedResources  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;
            0    7     3             beginEx  Ljava/lang/Throwable;
            1    7     4           exMessage  Ljava/lang/String;
            4    6     5            resumeEx  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.RuntimeException
           1     2       3  Class java.lang.Error
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
      2:
    MethodParameters:
                    Name  Flags
      transaction         
      suspendedResources  
      beginEx             

  private java.util.List<org.springframework.transaction.support.TransactionSynchronization> doSuspendSynchronization();
    descriptor: ()Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=4, args_size=1
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
         0: .line 659
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getSynchronizations:()Ljava/util/List;
         1: .line 658
            astore 1 /* suspendedSynchronizations */
        start local 1 // java.util.List suspendedSynchronizations
         2: .line 660
            aload 1 /* suspendedSynchronizations */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager java.util.List top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.transaction.support.TransactionSynchronization
            astore 2 /* synchronization */
        start local 2 // org.springframework.transaction.support.TransactionSynchronization synchronization
         4: .line 661
            aload 2 /* synchronization */
            invokeinterface org.springframework.transaction.support.TransactionSynchronization.suspend:()V
        end local 2 // org.springframework.transaction.support.TransactionSynchronization synchronization
         5: .line 660
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 663
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.clearSynchronization:()V
         7: .line 664
            aload 1 /* suspendedSynchronizations */
            areturn
        end local 1 // java.util.List suspendedSynchronizations
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    8     0                       this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            2    8     1  suspendedSynchronizations  Ljava/util/List<Lorg/springframework/transaction/support/TransactionSynchronization;>;
            4    5     2            synchronization  Lorg/springframework/transaction/support/TransactionSynchronization;
    Signature: ()Ljava/util/List<Lorg/springframework/transaction/support/TransactionSynchronization;>;

  private void doResumeSynchronization(java.util.List<org.springframework.transaction.support.TransactionSynchronization>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=4, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.util.List suspendedSynchronizations
         0: .line 673
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.initSynchronization:()V
         1: .line 674
            aload 1 /* suspendedSynchronizations */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.transaction.support.TransactionSynchronization
            astore 2 /* synchronization */
        start local 2 // org.springframework.transaction.support.TransactionSynchronization synchronization
         3: .line 675
            aload 2 /* synchronization */
            invokeinterface org.springframework.transaction.support.TransactionSynchronization.resume:()V
         4: .line 676
            aload 2 /* synchronization */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.registerSynchronization:(Lorg/springframework/transaction/support/TransactionSynchronization;)V
        end local 2 // org.springframework.transaction.support.TransactionSynchronization synchronization
         5: .line 674
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 678
            return
        end local 1 // java.util.List suspendedSynchronizations
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    7     0                       this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    7     1  suspendedSynchronizations  Ljava/util/List<Lorg/springframework/transaction/support/TransactionSynchronization;>;
            3    5     2            synchronization  Lorg/springframework/transaction/support/TransactionSynchronization;
    Signature: (Ljava/util/List<Lorg/springframework/transaction/support/TransactionSynchronization;>;)V
    MethodParameters:
                           Name  Flags
      suspendedSynchronizations  

  public final void commit(org.springframework.transaction.TransactionStatus);
    descriptor: (Lorg/springframework/transaction/TransactionStatus;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.TransactionStatus status
         0: .line 692
            aload 1 /* status */
            invokeinterface org.springframework.transaction.TransactionStatus.isCompleted:()Z
            ifeq 4
         1: .line 693
            new org.springframework.transaction.IllegalTransactionStateException
            dup
         2: .line 694
            ldc "Transaction is already completed - do not call commit or rollback more than once per transaction"
         3: .line 693
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 697
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            checkcast org.springframework.transaction.support.DefaultTransactionStatus
            astore 2 /* defStatus */
        start local 2 // org.springframework.transaction.support.DefaultTransactionStatus defStatus
         5: .line 698
            aload 2 /* defStatus */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isLocalRollbackOnly:()Z
            ifeq 10
         6: .line 699
            aload 2 /* defStatus */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 8
         7: .line 700
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Transactional code has requested rollback"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         8: .line 702
      StackMap locals: org.springframework.transaction.support.DefaultTransactionStatus
      StackMap stack:
            aload 0 /* this */
            aload 2 /* defStatus */
            iconst_0
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback:(Lorg/springframework/transaction/support/DefaultTransactionStatus;Z)V
         9: .line 703
            return
        10: .line 706
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.shouldCommitOnGlobalRollbackOnly:()Z
            ifne 15
            aload 2 /* defStatus */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isGlobalRollbackOnly:()Z
            ifeq 15
        11: .line 707
            aload 2 /* defStatus */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 13
        12: .line 708
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Global transaction is marked as rollback-only but transactional code requested commit"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        13: .line 710
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* defStatus */
            iconst_1
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback:(Lorg/springframework/transaction/support/DefaultTransactionStatus;Z)V
        14: .line 711
            return
        15: .line 714
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* defStatus */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        16: .line 715
            return
        end local 2 // org.springframework.transaction.support.DefaultTransactionStatus defStatus
        end local 1 // org.springframework.transaction.TransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   17     0       this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   17     1     status  Lorg/springframework/transaction/TransactionStatus;
            5   17     2  defStatus  Lorg/springframework/transaction/support/DefaultTransactionStatus;
    Exceptions:
      throws org.springframework.transaction.TransactionException
    MethodParameters:
        Name  Flags
      status  

  private void processCommit(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 725
            iconst_0
            istore 2 /* beforeCompletionInvoked */
        start local 2 // boolean beforeCompletionInvoked
         1: .line 728
            iconst_0
            istore 3 /* unexpectedRollback */
        start local 3 // boolean unexpectedRollback
         2: .line 729
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.prepareForCommit:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
         3: .line 730
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
         4: .line 731
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
         5: .line 732
            iconst_1
            istore 2 /* beforeCompletionInvoked */
         6: .line 734
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.hasSavepoint:()Z
            ifeq 12
         7: .line 735
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 9
         8: .line 736
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Releasing transaction savepoint"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         9: .line 738
      StackMap locals: int int
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isGlobalRollbackOnly:()Z
            istore 3 /* unexpectedRollback */
        10: .line 739
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.releaseHeldSavepoint:()V
        11: .line 740
            goto 20
        12: .line 741
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewTransaction:()Z
            ifeq 18
        13: .line 742
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 15
        14: .line 743
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Initiating transaction commit"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        15: .line 745
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isGlobalRollbackOnly:()Z
            istore 3 /* unexpectedRollback */
        16: .line 746
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doCommit:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        17: .line 747
            goto 20
        18: .line 748
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isFailEarlyOnGlobalRollbackOnly:()Z
            ifeq 20
        19: .line 749
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isGlobalRollbackOnly:()Z
            istore 3 /* unexpectedRollback */
        20: .line 754
      StackMap locals:
      StackMap stack:
            iload 3 /* unexpectedRollback */
            ifeq 38
        21: .line 755
            new org.springframework.transaction.UnexpectedRollbackException
            dup
        22: .line 756
            ldc "Transaction silently rolled back because it has been marked as rollback-only"
        23: .line 755
            invokespecial org.springframework.transaction.UnexpectedRollbackException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // boolean unexpectedRollback
        24: .line 759
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager org.springframework.transaction.support.DefaultTransactionStatus int
      StackMap stack: org.springframework.transaction.UnexpectedRollbackException
            astore 3 /* ex */
        start local 3 // org.springframework.transaction.UnexpectedRollbackException ex
        25: .line 761
            aload 0 /* this */
            aload 1 /* status */
            iconst_1
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        26: .line 762
            aload 3 /* ex */
            athrow
        end local 3 // org.springframework.transaction.UnexpectedRollbackException ex
        27: .line 764
      StackMap locals:
      StackMap stack: org.springframework.transaction.TransactionException
            astore 3 /* ex */
        start local 3 // org.springframework.transaction.TransactionException ex
        28: .line 766
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isRollbackOnCommitFailure:()Z
            ifeq 31
        29: .line 767
            aload 0 /* this */
            aload 1 /* status */
            aload 3 /* ex */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doRollbackOnCommitException:(Lorg/springframework/transaction/support/DefaultTransactionStatus;Ljava/lang/Throwable;)V
        30: .line 768
            goto 32
        31: .line 770
      StackMap locals: org.springframework.transaction.TransactionException
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            iconst_2
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        32: .line 772
      StackMap locals:
      StackMap stack:
            aload 3 /* ex */
            athrow
        end local 3 // org.springframework.transaction.TransactionException ex
        33: .line 774
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager org.springframework.transaction.support.DefaultTransactionStatus int
      StackMap stack: java.lang.Throwable
            astore 3 /* ex */
        start local 3 // java.lang.Throwable ex
        34: .line 775
            iload 2 /* beforeCompletionInvoked */
            ifne 36
        35: .line 776
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        36: .line 778
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            aload 3 /* ex */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doRollbackOnCommitException:(Lorg/springframework/transaction/support/DefaultTransactionStatus;Ljava/lang/Throwable;)V
        37: .line 779
            aload 3 /* ex */
            athrow
        end local 3 // java.lang.Throwable ex
        38: .line 785
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCommit:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        39: .line 786
            goto 43
        40: .line 787
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3
        41: .line 788
            aload 0 /* this */
            aload 1 /* status */
            iconst_0
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        42: .line 789
            aload 3
            athrow
        43: .line 788
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            iconst_0
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        end local 2 // boolean beforeCompletionInvoked
        44: .line 791
            goto 48
        45: .line 792
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager org.springframework.transaction.support.DefaultTransactionStatus
      StackMap stack: java.lang.Throwable
            astore 4
        46: .line 793
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.cleanupAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        47: .line 794
            aload 4
            athrow
        48: .line 793
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.cleanupAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        49: .line 795
            return
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   50     0                     this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   50     1                   status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            1   44     2  beforeCompletionInvoked  Z
            2   24     3       unexpectedRollback  Z
           25   27     3                       ex  Lorg/springframework/transaction/UnexpectedRollbackException;
           28   33     3                       ex  Lorg/springframework/transaction/TransactionException;
           34   38     3                       ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1    24      24  Class org.springframework.transaction.UnexpectedRollbackException
           1    24      27  Class org.springframework.transaction.TransactionException
           1    24      33  Class java.lang.RuntimeException
           1    24      33  Class java.lang.Error
          38    40      40  any
           0    45      45  any
    Exceptions:
      throws org.springframework.transaction.TransactionException
    MethodParameters:
        Name  Flags
      status  

  public final void rollback(org.springframework.transaction.TransactionStatus);
    descriptor: (Lorg/springframework/transaction/TransactionStatus;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.TransactionStatus status
         0: .line 806
            aload 1 /* status */
            invokeinterface org.springframework.transaction.TransactionStatus.isCompleted:()Z
            ifeq 4
         1: .line 807
            new org.springframework.transaction.IllegalTransactionStateException
            dup
         2: .line 808
            ldc "Transaction is already completed - do not call commit or rollback more than once per transaction"
         3: .line 807
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 811
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            checkcast org.springframework.transaction.support.DefaultTransactionStatus
            astore 2 /* defStatus */
        start local 2 // org.springframework.transaction.support.DefaultTransactionStatus defStatus
         5: .line 812
            aload 0 /* this */
            aload 2 /* defStatus */
            iconst_0
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback:(Lorg/springframework/transaction/support/DefaultTransactionStatus;Z)V
         6: .line 813
            return
        end local 2 // org.springframework.transaction.support.DefaultTransactionStatus defStatus
        end local 1 // org.springframework.transaction.TransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    7     1     status  Lorg/springframework/transaction/TransactionStatus;
            5    7     2  defStatus  Lorg/springframework/transaction/support/DefaultTransactionStatus;
    Exceptions:
      throws org.springframework.transaction.TransactionException
    MethodParameters:
        Name  Flags
      status  

  private void processRollback(org.springframework.transaction.support.DefaultTransactionStatus, boolean);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        start local 2 // boolean unexpected
         0: .line 823
            iload 2 /* unexpected */
            istore 3 /* unexpectedRollback */
        start local 3 // boolean unexpectedRollback
         1: .line 826
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
         2: .line 828
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.hasSavepoint:()Z
            ifeq 7
         3: .line 829
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 5
         4: .line 830
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Rolling back transaction to savepoint"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         5: .line 832
      StackMap locals: int
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.rollbackToHeldSavepoint:()V
         6: .line 833
            goto 28
         7: .line 834
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewTransaction:()Z
            ifeq 12
         8: .line 835
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 10
         9: .line 836
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Initiating transaction rollback"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        10: .line 838
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doRollback:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        11: .line 839
            goto 28
        12: .line 842
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.hasTransaction:()Z
            ifeq 21
        13: .line 843
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isLocalRollbackOnly:()Z
            ifne 14
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isGlobalRollbackOnParticipationFailure:()Z
            ifeq 18
        14: .line 844
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 16
        15: .line 845
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Participating transaction failed - marking existing transaction as rollback-only"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        16: .line 847
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doSetRollbackOnly:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        17: .line 848
            goto 22
        18: .line 850
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 22
        19: .line 851
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Participating transaction failed - letting transaction originator decide on rollback"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        20: .line 854
            goto 22
        21: .line 856
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Should roll back transaction but cannot - no transaction available"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        22: .line 859
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isFailEarlyOnGlobalRollbackOnly:()Z
            ifne 28
        23: .line 860
            iconst_0
            istore 3 /* unexpectedRollback */
        24: .line 863
            goto 28
        25: .line 864
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* ex */
        start local 4 // java.lang.Throwable ex
        26: .line 865
            aload 0 /* this */
            aload 1 /* status */
            iconst_2
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        27: .line 866
            aload 4 /* ex */
            athrow
        end local 4 // java.lang.Throwable ex
        28: .line 869
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            iconst_1
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        29: .line 872
            iload 3 /* unexpectedRollback */
            ifeq 36
        30: .line 873
            new org.springframework.transaction.UnexpectedRollbackException
            dup
        31: .line 874
            ldc "Transaction rolled back because it has been marked as rollback-only"
        32: .line 873
            invokespecial org.springframework.transaction.UnexpectedRollbackException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // boolean unexpectedRollback
        33: .line 877
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager org.springframework.transaction.support.DefaultTransactionStatus int
      StackMap stack: java.lang.Throwable
            astore 5
        34: .line 878
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.cleanupAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        35: .line 879
            aload 5
            athrow
        36: .line 878
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.cleanupAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        37: .line 880
            return
        end local 2 // boolean unexpected
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   38     0                this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   38     1              status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            0   38     2          unexpected  Z
            1   33     3  unexpectedRollback  Z
           26   28     4                  ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1    24      25  Class java.lang.RuntimeException
           1    24      25  Class java.lang.Error
           0    33      33  any
    MethodParameters:
            Name  Flags
      status      
      unexpected  

  private void doRollbackOnCommitException(org.springframework.transaction.support.DefaultTransactionStatus, java.lang.Throwable);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        start local 2 // java.lang.Throwable ex
         0: .line 891
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewTransaction:()Z
            ifeq 5
         1: .line 892
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 3
         2: .line 893
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Initiating transaction rollback after commit exception"
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         3: .line 895
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doRollback:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
         4: .line 896
            goto 14
         5: .line 897
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.hasTransaction:()Z
            ifeq 14
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isGlobalRollbackOnParticipationFailure:()Z
            ifeq 14
         6: .line 898
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 8
         7: .line 899
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Marking existing transaction as rollback-only after commit exception"
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         8: .line 901
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doSetRollbackOnly:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
         9: .line 903
            goto 14
        10: .line 904
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3 /* rbex */
        start local 3 // java.lang.Throwable rbex
        11: .line 905
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Commit exception overridden by rollback exception"
            aload 2 /* ex */
            invokeinterface org.apache.commons.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        12: .line 906
            aload 0 /* this */
            aload 1 /* status */
            iconst_2
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        13: .line 907
            aload 3 /* rbex */
            athrow
        end local 3 // java.lang.Throwable rbex
        14: .line 909
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* status */
            iconst_1
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        15: .line 910
            return
        end local 2 // java.lang.Throwable ex
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   16     1  status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            0   16     2      ex  Ljava/lang/Throwable;
           11   14     3    rbex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     9      10  Class java.lang.RuntimeException
           0     9      10  Class java.lang.Error
    Exceptions:
      throws org.springframework.transaction.TransactionException
    MethodParameters:
        Name  Flags
      status  
      ex      

  protected final void triggerBeforeCommit(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 918
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 4
         1: .line 919
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 3
         2: .line 920
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Triggering beforeCommit synchronization"
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         3: .line 922
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isReadOnly:()Z
            invokestatic org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCommit:(Z)V
         4: .line 924
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    5     1  status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
    MethodParameters:
        Name  Flags
      status  

  protected final void triggerBeforeCompletion(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 931
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 4
         1: .line 932
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 3
         2: .line 933
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Triggering beforeCompletion synchronization"
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         3: .line 935
      StackMap locals:
      StackMap stack:
            invokestatic org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCompletion:()V
         4: .line 937
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    5     1  status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
    MethodParameters:
        Name  Flags
      status  

  private void triggerAfterCommit(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 944
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 4
         1: .line 945
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 3
         2: .line 946
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Triggering afterCommit synchronization"
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         3: .line 948
      StackMap locals:
      StackMap stack:
            invokestatic org.springframework.transaction.support.TransactionSynchronizationUtils.triggerAfterCommit:()V
         4: .line 950
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    5     1  status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
    MethodParameters:
        Name  Flags
      status  

  private void triggerAfterCompletion(org.springframework.transaction.support.DefaultTransactionStatus, int);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        start local 2 // int completionStatus
         0: .line 958
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 10
         1: .line 959
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getSynchronizations:()Ljava/util/List;
            astore 3 /* synchronizations */
        start local 3 // java.util.List synchronizations
         2: .line 960
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.clearSynchronization:()V
         3: .line 961
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.hasTransaction:()Z
            ifeq 4
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewTransaction:()Z
            ifeq 8
         4: .line 962
      StackMap locals: java.util.List
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 6
         5: .line 963
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Triggering afterCompletion synchronization"
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         6: .line 967
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* synchronizations */
            iload 2 /* completionStatus */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion:(Ljava/util/List;I)V
         7: .line 968
            goto 10
         8: .line 969
      StackMap locals:
      StackMap stack:
            aload 3 /* synchronizations */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 10
         9: .line 973
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            aload 3 /* synchronizations */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.registerAfterCompletionWithExistingTransaction:(Ljava/lang/Object;Ljava/util/List;)V
        end local 3 // java.util.List synchronizations
        10: .line 976
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int completionStatus
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   11     0              this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   11     1            status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            0   11     2  completionStatus  I
            2   10     3  synchronizations  Ljava/util/List<Lorg/springframework/transaction/support/TransactionSynchronization;>;
    MethodParameters:
                  Name  Flags
      status            
      completionStatus  

  protected final void invokeAfterCompletion(java.util.List<org.springframework.transaction.support.TransactionSynchronization>, );
    descriptor: (Ljava/util/List;I)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.util.List synchronizations
        start local 2 // int completionStatus
         0: .line 992
            aload 1 /* synchronizations */
            iload 2 /* completionStatus */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCompletion:(Ljava/util/List;I)V
         1: .line 993
            return
        end local 2 // int completionStatus
        end local 1 // java.util.List synchronizations
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    2     1  synchronizations  Ljava/util/List<Lorg/springframework/transaction/support/TransactionSynchronization;>;
            0    2     2  completionStatus  I
    Signature: (Ljava/util/List<Lorg/springframework/transaction/support/TransactionSynchronization;>;I)V
    MethodParameters:
                  Name  Flags
      synchronizations  
      completionStatus  

  private void cleanupAfterCompletion(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 1002
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.setCompleted:()V
         1: .line 1003
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 3
         2: .line 1004
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.clear:()V
         3: .line 1006
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewTransaction:()Z
            ifeq 5
         4: .line 1007
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doCleanupAfterCompletion:(Ljava/lang/Object;)V
         5: .line 1009
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getSuspendedResources:()Ljava/lang/Object;
            ifnull 12
         6: .line 1010
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 8
         7: .line 1011
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Resuming suspended transaction after completion of inner transaction"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         8: .line 1013
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.hasTransaction:()Z
            ifeq 9
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            goto 10
      StackMap locals:
      StackMap stack:
         9: aconst_null
      StackMap locals:
      StackMap stack: java.lang.Object
        10: astore 2 /* transaction */
        start local 2 // java.lang.Object transaction
        11: .line 1014
            aload 0 /* this */
            aload 2 /* transaction */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getSuspendedResources:()Ljava/lang/Object;
            checkcast org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.resume:(Ljava/lang/Object;Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;)V
        end local 2 // java.lang.Object transaction
        12: .line 1016
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0         this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   13     1       status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
           11   12     2  transaction  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      status  

  protected abstract java.lang.Object doGetTransaction();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws org.springframework.transaction.TransactionException

  protected boolean isExistingTransaction(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 1063
            iconst_0
            ireturn
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    1     1  transaction  Ljava/lang/Object;
    Exceptions:
      throws org.springframework.transaction.TransactionException
    MethodParameters:
             Name  Flags
      transaction  

  protected boolean useSavepointForNestedTransaction();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
         0: .line 1083
            iconst_1
            ireturn
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;

  protected abstract void doBegin(java.lang.Object, org.springframework.transaction.TransactionDefinition);
    descriptor: (Ljava/lang/Object;Lorg/springframework/transaction/TransactionDefinition;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws org.springframework.transaction.TransactionException
    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=5, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 1120
            new org.springframework.transaction.TransactionSuspensionNotSupportedException
            dup
         1: .line 1121
            new java.lang.StringBuilder
            dup
            ldc "Transaction manager ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "] does not support transaction suspension"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         2: .line 1120
            invokespecial org.springframework.transaction.TransactionSuspensionNotSupportedException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    3     1  transaction  Ljava/lang/Object;
    Exceptions:
      throws org.springframework.transaction.TransactionException
    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=5, locals=3, args_size=3
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.lang.Object transaction
        start local 2 // java.lang.Object suspendedResources
         0: .line 1138
            new org.springframework.transaction.TransactionSuspensionNotSupportedException
            dup
         1: .line 1139
            new java.lang.StringBuilder
            dup
            ldc "Transaction manager ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "] does not support transaction suspension"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         2: .line 1138
            invokespecial org.springframework.transaction.TransactionSuspensionNotSupportedException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.Object suspendedResources
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    3     0                this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    3     1         transaction  Ljava/lang/Object;
            0    3     2  suspendedResources  Ljava/lang/Object;
    Exceptions:
      throws org.springframework.transaction.TransactionException
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
                    Name  Flags
      transaction         
      suspendedResources  

  protected boolean shouldCommitOnGlobalRollbackOnly();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
         0: .line 1172
            iconst_0
            ireturn
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;

  protected void prepareForCommit(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 1185
            return
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    1     1  status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
    MethodParameters:
        Name  Flags
      status  

  protected abstract void doCommit(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws org.springframework.transaction.TransactionException
    MethodParameters:
        Name  Flags
      status  

  protected abstract void doRollback(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws org.springframework.transaction.TransactionException
    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=3, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 1220
            new org.springframework.transaction.IllegalTransactionStateException
            dup
         1: .line 1221
            ldc "Participating in existing transactions is not supported - when 'isExistingTransaction' returns true, appropriate 'doSetRollbackOnly' behavior must be provided"
         2: .line 1220
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    3     1  status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
    Exceptions:
      throws org.springframework.transaction.TransactionException
    MethodParameters:
        Name  Flags
      status  

  protected void registerAfterCompletionWithExistingTransaction(, java.util.List<org.springframework.transaction.support.TransactionSynchronization>);
    descriptor: (Ljava/lang/Object;Ljava/util/List;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.lang.Object transaction
        start local 2 // java.util.List synchronizations
         0: .line 1243
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Cannot register Spring after-completion synchronization with existing transaction - processing Spring after-completion callbacks immediately, with outcome status 'unknown'"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         1: .line 1245
            aload 0 /* this */
            aload 2 /* synchronizations */
            iconst_2
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion:(Ljava/util/List;I)V
         2: .line 1246
            return
        end local 2 // java.util.List synchronizations
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    3     0              this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    3     1       transaction  Ljava/lang/Object;
            0    3     2  synchronizations  Ljava/util/List<Lorg/springframework/transaction/support/TransactionSynchronization;>;
    Exceptions:
      throws org.springframework.transaction.TransactionException
    Signature: (Ljava/lang/Object;Ljava/util/List<Lorg/springframework/transaction/support/TransactionSynchronization;>;)V
    MethodParameters:
                  Name  Flags
      transaction       
      synchronizations  

  protected void doCleanupAfterCompletion(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 1256
            return
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    1     1  transaction  Ljava/lang/Object;
    MethodParameters:
             Name  Flags
      transaction  

  private void readObject(java.io.ObjectInputStream);
    descriptor: (Ljava/io/ObjectInputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
        start local 1 // java.io.ObjectInputStream ois
         0: .line 1265
            aload 1 /* ois */
            invokevirtual java.io.ObjectInputStream.defaultReadObject:()V
         1: .line 1268
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
         2: .line 1269
            return
        end local 1 // java.io.ObjectInputStream ois
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0    3     1   ois  Ljava/io/ObjectInputStream;
    Exceptions:
      throws java.io.IOException, java.lang.ClassNotFoundException
    MethodParameters:
      Name  Flags
      ois   
}
SourceFile: "AbstractPlatformTransactionManager.java"
NestMembers:
  org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder
InnerClasses:
  protected final SuspendedResourcesHolder = org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder of org.springframework.transaction.support.AbstractPlatformTransactionManager