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 345
            aload 1 /* definition */
            ifnull 1
            aload 1 /* definition */
            goto 2
      StackMap locals:
      StackMap stack:
         1: invokestatic org.springframework.transaction.TransactionDefinition.withDefaults:()Lorg/springframework/transaction/TransactionDefinition;
      StackMap locals:
      StackMap stack: org.springframework.transaction.TransactionDefinition
         2: astore 2 /* def */
        start local 2 // org.springframework.transaction.TransactionDefinition def
         3: .line 347
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doGetTransaction:()Ljava/lang/Object;
            astore 3 /* transaction */
        start local 3 // java.lang.Object transaction
         4: .line 348
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            istore 4 /* debugEnabled */
        start local 4 // boolean debugEnabled
         5: .line 350
            aload 0 /* this */
            aload 3 /* transaction */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isExistingTransaction:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 352
            aload 0 /* this */
            aload 2 /* def */
            aload 3 /* transaction */
            iload 4 /* debugEnabled */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.handleExistingTransaction:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;Z)Lorg/springframework/transaction/TransactionStatus;
            areturn
         7: .line 356
      StackMap locals: org.springframework.transaction.TransactionDefinition java.lang.Object int
      StackMap stack:
            aload 2 /* def */
            invokeinterface org.springframework.transaction.TransactionDefinition.getTimeout:()I
            iconst_m1
            if_icmpge 9
         8: .line 357
            new org.springframework.transaction.InvalidTimeoutException
            dup
            ldc "Invalid transaction timeout"
            aload 2 /* def */
            invokeinterface org.springframework.transaction.TransactionDefinition.getTimeout:()I
            invokespecial org.springframework.transaction.InvalidTimeoutException.<init>:(Ljava/lang/String;I)V
            athrow
         9: .line 361
      StackMap locals:
      StackMap stack:
            aload 2 /* def */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            iconst_2
            if_icmpne 13
        10: .line 362
            new org.springframework.transaction.IllegalTransactionStateException
            dup
        11: .line 363
            ldc "No existing transaction found for transaction marked with propagation 'mandatory'"
        12: .line 362
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 365
      StackMap locals:
      StackMap stack:
            aload 2 /* def */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            ifeq 16
        14: .line 366
            aload 2 /* def */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            iconst_3
            if_icmpeq 16
        15: .line 367
            aload 2 /* def */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            bipush 6
            if_icmpne 24
        16: .line 368
      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 5 /* suspendedResources */
        start local 5 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspendedResources
        17: .line 369
            iload 4 /* debugEnabled */
            ifeq 19
        18: .line 370
            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 2 /* def */
            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 2 /* def */
            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
        19: .line 373
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder
      StackMap stack:
            aload 0 /* this */
            aload 2 /* def */
            aload 3 /* transaction */
            iload 4 /* debugEnabled */
            aload 5 /* suspendedResources */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZLorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;)Lorg/springframework/transaction/TransactionStatus;
        20: areturn
        21: .line 375
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6 /* ex */
        start local 6 // java.lang.Throwable ex
        22: .line 376
            aload 0 /* this */
            aconst_null
            aload 5 /* suspendedResources */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.resume:(Ljava/lang/Object;Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;)V
        23: .line 377
            aload 6 /* ex */
            athrow
        end local 6 // java.lang.Throwable ex
        end local 5 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspendedResources
        24: .line 382
      StackMap locals:
      StackMap stack:
            aload 2 /* def */
            invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
            iconst_m1
            if_icmpeq 28
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isWarnEnabled:()Z
            ifeq 28
        25: .line 383
            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
        26: .line 384
            aload 2 /* def */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        27: .line 383
            invokeinterface org.apache.commons.logging.Log.warn:(Ljava/lang/Object;)V
        28: .line 386
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransactionSynchronization:()I
            ifne 29
            iconst_1
            goto 30
      StackMap locals:
      StackMap stack:
        29: iconst_0
      StackMap locals:
      StackMap stack: int
        30: istore 5 /* newSynchronization */
        start local 5 // boolean newSynchronization
        31: .line 387
            aload 0 /* this */
            aload 2 /* def */
            aconst_null
            iconst_1
            iload 5 /* newSynchronization */
            iload 4 /* 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 5 // boolean newSynchronization
        end local 4 // boolean debugEnabled
        end local 3 // java.lang.Object transaction
        end local 2 // org.springframework.transaction.TransactionDefinition def
        end local 1 // org.springframework.transaction.TransactionDefinition definition
        end local 0 // org.springframework.transaction.support.AbstractPlatformTransactionManager this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   32     0                this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   32     1          definition  Lorg/springframework/transaction/TransactionDefinition;
            3   32     2                 def  Lorg/springframework/transaction/TransactionDefinition;
            4   32     3         transaction  Ljava/lang/Object;
            5   32     4        debugEnabled  Z
           17   24     5  suspendedResources  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;
           22   24     6                  ex  Ljava/lang/Throwable;
           31   32     5  newSynchronization  Z
      Exception table:
        from    to  target  type
          19    20      21  Class java.lang.RuntimeException
          19    20      21  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 startTransaction(org.springframework.transaction.TransactionDefinition, java.lang.Object, boolean, org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder);
    descriptor: (Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZLorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;)Lorg/springframework/transaction/TransactionStatus;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=7, args_size=5
        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
        start local 4 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspendedResources
         0: .line 397
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransactionSynchronization:()I
            iconst_2
            if_icmpeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 5 /* newSynchronization */
        start local 5 // boolean newSynchronization
         3: .line 398
            aload 0 /* this */
         4: .line 399
            aload 1 /* definition */
            aload 2 /* transaction */
            iconst_1
            iload 5 /* newSynchronization */
            iload 3 /* debugEnabled */
            aload 4 /* suspendedResources */
         5: .line 398
            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
         6: .line 400
            aload 0 /* this */
            aload 2 /* transaction */
            aload 1 /* definition */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doBegin:(Ljava/lang/Object;Lorg/springframework/transaction/TransactionDefinition;)V
         7: .line 401
            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
         8: .line 402
            aload 6 /* status */
            areturn
        end local 6 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 5 // boolean newSynchronization
        end local 4 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspendedResources
        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    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        debugEnabled  Z
            0    9     4  suspendedResources  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;
            3    9     5  newSynchronization  Z
            6    9     6              status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.springframework.lang.Nullable()
    MethodParameters:
                    Name  Flags
      definition          
      transaction         
      debugEnabled        
      suspendedResources  

  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=6, 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 412
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            iconst_5
            if_icmpne 4
         1: .line 413
            new org.springframework.transaction.IllegalTransactionStateException
            dup
         2: .line 414
            ldc "Existing transaction found for transaction marked with propagation 'never'"
         3: .line 413
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 417
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            iconst_4
            if_icmpne 14
         5: .line 418
            iload 3 /* debugEnabled */
            ifeq 7
         6: .line 419
            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 421
      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 422
            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 423
            aload 0 /* this */
        12: .line 424
            aload 1 /* definition */
            aconst_null
            iconst_0
            iload 5 /* newSynchronization */
            iload 3 /* debugEnabled */
            aload 4 /* suspendedResources */
        13: .line 423
            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 427
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            iconst_3
            if_icmpne 25
        15: .line 428
            iload 3 /* debugEnabled */
            ifeq 19
        16: .line 429
            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 430
            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 429
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        19: .line 432
      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 434
            aload 0 /* this */
            aload 1 /* definition */
            aload 2 /* transaction */
            iload 3 /* debugEnabled */
            aload 4 /* suspendedResources */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZLorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;)Lorg/springframework/transaction/TransactionStatus;
        21: areturn
        22: .line 436
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager org.springframework.transaction.TransactionDefinition java.lang.Object int org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder
      StackMap stack: java.lang.Throwable
            astore 5 /* beginEx */
        start local 5 // java.lang.Throwable beginEx
        23: .line 437
            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
        24: .line 438
            aload 5 /* beginEx */
            athrow
        end local 5 // java.lang.Throwable beginEx
        end local 4 // org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder suspendedResources
        25: .line 442
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getPropagationBehavior:()I
            bipush 6
            if_icmpne 38
        26: .line 443
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isNestedTransactionAllowed:()Z
            ifne 30
        27: .line 444
            new org.springframework.transaction.NestedTransactionNotSupportedException
            dup
        28: .line 445
            ldc "Transaction manager does not allow nested transactions by default - specify 'nestedTransactionAllowed' property with value 'true'"
        29: .line 444
            invokespecial org.springframework.transaction.NestedTransactionNotSupportedException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 448
      StackMap locals:
      StackMap stack:
            iload 3 /* debugEnabled */
            ifeq 32
        31: .line 449
            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
        32: .line 451
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.useSavepointForNestedTransaction:()Z
            ifeq 37
        33: .line 456
            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;
        34: .line 455
            astore 4 /* status */
        start local 4 // org.springframework.transaction.support.DefaultTransactionStatus status
        35: .line 457
            aload 4 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.createAndHoldSavepoint:()V
        36: .line 458
            aload 4 /* status */
            areturn
        end local 4 // org.springframework.transaction.support.DefaultTransactionStatus status
        37: .line 464
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* definition */
            aload 2 /* transaction */
            iload 3 /* debugEnabled */
            aconst_null
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction:(Lorg/springframework/transaction/TransactionDefinition;Ljava/lang/Object;ZLorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;)Lorg/springframework/transaction/TransactionStatus;
            areturn
        38: .line 469
      StackMap locals:
      StackMap stack:
            iload 3 /* debugEnabled */
            ifeq 40
        39: .line 470
            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
        40: .line 472
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isValidateExistingTransaction:()Z
            ifeq 57
        41: .line 473
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
            iconst_m1
            if_icmpeq 52
        42: .line 474
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getCurrentTransactionIsolationLevel:()Ljava/lang/Integer;
            astore 4 /* currentIsolationLevel */
        start local 4 // java.lang.Integer currentIsolationLevel
        43: .line 475
            aload 4 /* currentIsolationLevel */
            ifnull 44
            aload 4 /* currentIsolationLevel */
            invokevirtual java.lang.Integer.intValue:()I
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
            if_icmpeq 52
        44: .line 476
      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
        45: .line 477
            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
        46: .line 478
            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;
        47: .line 479
            aload 4 /* currentIsolationLevel */
            ifnull 49
        48: .line 480
            aload 5 /* isoConstants */
            aload 4 /* currentIsolationLevel */
            ldc "ISOLATION_"
            invokevirtual org.springframework.core.Constants.toCode:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;
            goto 50
        49: .line 481
      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 45 new 45 java.lang.StringBuilder
            ldc "(unknown)"
        50: .line 479
      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 45 new 45 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;
        51: .line 477
            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
        52: .line 484
      StackMap locals:
      StackMap stack:
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
            ifne 57
        53: .line 485
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isCurrentTransactionReadOnly:()Z
            ifeq 57
        54: .line 486
            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
        55: .line 487
            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;
        56: .line 486
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
        57: .line 491
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransactionSynchronization:()I
            iconst_2
            if_icmpeq 58
            iconst_1
            goto 59
      StackMap locals:
      StackMap stack:
        58: iconst_0
      StackMap locals:
      StackMap stack: int
        59: istore 4 /* newSynchronization */
        start local 4 // boolean newSynchronization
        60: .line 492
            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   61     0                   this  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager;
            0   61     1             definition  Lorg/springframework/transaction/TransactionDefinition;
            0   61     2            transaction  Ljava/lang/Object;
            0   61     3           debugEnabled  Z
            8   14     4     suspendedResources  Ljava/lang/Object;
           11   14     5     newSynchronization  Z
           20   25     4     suspendedResources  Lorg/springframework/transaction/support/AbstractPlatformTransactionManager$SuspendedResourcesHolder;
           23   25     5                beginEx  Ljava/lang/Throwable;
           35   37     4                 status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
           43   52     4  currentIsolationLevel  Ljava/lang/Integer;
           45   52     5           isoConstants  Lorg/springframework/core/Constants;
           60   61     4     newSynchronization  Z
      Exception table:
        from    to  target  type
          20    21      22  Class java.lang.RuntimeException
          20    21      22  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 505
            aload 0 /* this */
         1: .line 506
            aload 1 /* definition */
            aload 2 /* transaction */
            iload 3 /* newTransaction */
            iload 4 /* newSynchronization */
            iload 5 /* debug */
            aload 6 /* suspendedResources */
         2: .line 505
            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 507
            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 508
            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 518
            iload 4 /* newSynchronization */
            ifeq 3
         1: .line 519
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isSynchronizationActive:()Z
            ifne 3
         2: .line 518
            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 520
            new org.springframework.transaction.support.DefaultTransactionStatus
            dup
         6: .line 521
            aload 2 /* transaction */
            iload 3 /* newTransaction */
            iload 7 /* actualNewSynchronization */
         7: .line 522
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
            iload 5 /* debug */
            aload 6 /* suspendedResources */
         8: .line 520
            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 529
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 9
         1: .line 530
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.hasTransaction:()Z
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setActualTransactionActive:(Z)V
         2: .line 532
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
            iconst_m1
            if_icmpeq 4
         3: .line 533
            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 531
      StackMap locals:
      StackMap stack: java.lang.Integer
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionIsolationLevel:(Ljava/lang/Integer;)V
         6: .line 534
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionReadOnly:(Z)V
         7: .line 535
            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 536
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.initSynchronization:()V
         9: .line 538
      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 550
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getTimeout:()I
            iconst_m1
            if_icmpeq 2
         1: .line 551
            aload 1 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getTimeout:()I
            ireturn
         2: .line 553
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.getDefaultTimeout:()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 569
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isSynchronizationActive:()Z
            ifeq 20
         1: .line 570
            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 572
            aconst_null
            astore 3 /* suspendedResources */
        start local 3 // java.lang.Object suspendedResources
         3: .line 573
            aload 1 /* transaction */
            ifnull 5
         4: .line 574
            aload 0 /* this */
            aload 1 /* transaction */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doSuspend:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* suspendedResources */
         5: .line 576
      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 577
            aconst_null
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionName:(Ljava/lang/String;)V
         7: .line 578
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isCurrentTransactionReadOnly:()Z
            istore 5 /* readOnly */
        start local 5 // boolean readOnly
         8: .line 579
            iconst_0
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionReadOnly:(Z)V
         9: .line 580
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getCurrentTransactionIsolationLevel:()Ljava/lang/Integer;
            astore 6 /* isolationLevel */
        start local 6 // java.lang.Integer isolationLevel
        10: .line 581
            aconst_null
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionIsolationLevel:(Ljava/lang/Integer;)V
        11: .line 582
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isActualTransactionActive:()Z
            istore 7 /* wasActive */
        start local 7 // boolean wasActive
        12: .line 583
            iconst_0
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setActualTransactionActive:(Z)V
        13: .line 584
            new org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder
            dup
        14: .line 585
            aload 3 /* suspendedResources */
            aload 2 /* suspendedSynchronizations */
            aload 4 /* name */
            iload 5 /* readOnly */
            aload 6 /* isolationLevel */
            iload 7 /* wasActive */
        15: .line 584
            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 587
      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 589
            aload 0 /* this */
            aload 2 /* suspendedSynchronizations */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doResumeSynchronization:(Ljava/util/List;)V
        19: .line 590
            aload 3 /* ex */
            athrow
        end local 3 // java.lang.Throwable ex
        end local 2 // java.util.List suspendedSynchronizations
        20: .line 593
      StackMap locals:
      StackMap stack:
            aload 1 /* transaction */
            ifnull 23
        21: .line 595
            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 596
            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 600
      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 617
            aload 2 /* resourcesHolder */
            ifnull 11
         1: .line 618
            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 619
            aload 3 /* suspendedResources */
            ifnull 4
         3: .line 620
            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 622
      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 623
            aload 4 /* suspendedSynchronizations */
            ifnull 11
         6: .line 624
            aload 2 /* resourcesHolder */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder.wasActive:Z
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setActualTransactionActive:(Z)V
         7: .line 625
            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 626
            aload 2 /* resourcesHolder */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager$SuspendedResourcesHolder.readOnly:Z
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.setCurrentTransactionReadOnly:(Z)V
         9: .line 627
            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 628
            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 631
      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 640
            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
         1: .line 641
            goto 6
         2: .line 642
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* resumeEx */
        start local 4 // java.lang.Throwable resumeEx
         3: .line 643
            ldc "Inner transaction begin exception overridden by outer transaction resume exception"
            astore 5 /* exMessage */
        start local 5 // java.lang.String exMessage
         4: .line 644
            aload 0 /* this */
            getfield org.springframework.transaction.support.AbstractPlatformTransactionManager.logger:Lorg/apache/commons/logging/Log;
            aload 5 /* exMessage */
            aload 3 /* beginEx */
            invokeinterface org.apache.commons.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         5: .line 645
            aload 4 /* resumeEx */
            athrow
        end local 5 // java.lang.String exMessage
        end local 4 // java.lang.Throwable resumeEx
         6: .line 647
      StackMap locals:
      StackMap stack:
            return
        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;
            3    6     4            resumeEx  Ljava/lang/Throwable;
            4    6     5           exMessage  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.RuntimeException
           0     1       2  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 656
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getSynchronizations:()Ljava/util/List;
         1: .line 655
            astore 1 /* suspendedSynchronizations */
        start local 1 // java.util.List suspendedSynchronizations
         2: .line 657
            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 658
            aload 2 /* synchronization */
            invokeinterface org.springframework.transaction.support.TransactionSynchronization.suspend:()V
        end local 2 // org.springframework.transaction.support.TransactionSynchronization synchronization
         5: .line 657
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 660
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.clearSynchronization:()V
         7: .line 661
            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 670
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.initSynchronization:()V
         1: .line 671
            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 672
            aload 2 /* synchronization */
            invokeinterface org.springframework.transaction.support.TransactionSynchronization.resume:()V
         4: .line 673
            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 671
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 675
            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 689
            aload 1 /* status */
            invokeinterface org.springframework.transaction.TransactionStatus.isCompleted:()Z
            ifeq 4
         1: .line 690
            new org.springframework.transaction.IllegalTransactionStateException
            dup
         2: .line 691
            ldc "Transaction is already completed - do not call commit or rollback more than once per transaction"
         3: .line 690
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 694
      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 695
            aload 2 /* defStatus */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isLocalRollbackOnly:()Z
            ifeq 10
         6: .line 696
            aload 2 /* defStatus */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 8
         7: .line 697
            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 699
      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 700
            return
        10: .line 703
      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 704
            aload 2 /* defStatus */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 13
        12: .line 705
            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 707
      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 708
            return
        15: .line 711
      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 712
            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 722
            iconst_0
            istore 2 /* beforeCompletionInvoked */
        start local 2 // boolean beforeCompletionInvoked
         1: .line 725
            iconst_0
            istore 3 /* unexpectedRollback */
        start local 3 // boolean unexpectedRollback
         2: .line 726
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.prepareForCommit:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
         3: .line 727
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCommit:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
         4: .line 728
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
         5: .line 729
            iconst_1
            istore 2 /* beforeCompletionInvoked */
         6: .line 731
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.hasSavepoint:()Z
            ifeq 12
         7: .line 732
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 9
         8: .line 733
            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 735
      StackMap locals: int int
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isGlobalRollbackOnly:()Z
            istore 3 /* unexpectedRollback */
        10: .line 736
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.releaseHeldSavepoint:()V
        11: .line 737
            goto 20
        12: .line 738
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewTransaction:()Z
            ifeq 18
        13: .line 739
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 15
        14: .line 740
            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 742
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isGlobalRollbackOnly:()Z
            istore 3 /* unexpectedRollback */
        16: .line 743
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.doCommit:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        17: .line 744
            goto 20
        18: .line 745
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isFailEarlyOnGlobalRollbackOnly:()Z
            ifeq 20
        19: .line 746
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isGlobalRollbackOnly:()Z
            istore 3 /* unexpectedRollback */
        20: .line 751
      StackMap locals:
      StackMap stack:
            iload 3 /* unexpectedRollback */
            ifeq 38
        21: .line 752
            new org.springframework.transaction.UnexpectedRollbackException
            dup
        22: .line 753
            ldc "Transaction silently rolled back because it has been marked as rollback-only"
        23: .line 752
            invokespecial org.springframework.transaction.UnexpectedRollbackException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // boolean unexpectedRollback
        24: .line 756
      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 758
            aload 0 /* this */
            aload 1 /* status */
            iconst_1
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        26: .line 759
            aload 3 /* ex */
            athrow
        end local 3 // org.springframework.transaction.UnexpectedRollbackException ex
        27: .line 761
      StackMap locals:
      StackMap stack: org.springframework.transaction.TransactionException
            astore 3 /* ex */
        start local 3 // org.springframework.transaction.TransactionException ex
        28: .line 763
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isRollbackOnCommitFailure:()Z
            ifeq 31
        29: .line 764
            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 765
            goto 32
        31: .line 767
      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 769
      StackMap locals:
      StackMap stack:
            aload 3 /* ex */
            athrow
        end local 3 // org.springframework.transaction.TransactionException ex
        33: .line 771
      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 772
            iload 2 /* beforeCompletionInvoked */
            ifne 36
        35: .line 773
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        36: .line 775
      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 776
            aload 3 /* ex */
            athrow
        end local 3 // java.lang.Throwable ex
        38: .line 782
      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 783
            goto 43
        40: .line 784
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3
        41: .line 785
            aload 0 /* this */
            aload 1 /* status */
            iconst_0
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        42: .line 786
            aload 3
            athrow
        43: .line 785
      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 788
            goto 48
        45: .line 789
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager org.springframework.transaction.support.DefaultTransactionStatus
      StackMap stack: java.lang.Throwable
            astore 4
        46: .line 790
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.cleanupAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        47: .line 791
            aload 4
            athrow
        48: .line 790
      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 792
            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 803
            aload 1 /* status */
            invokeinterface org.springframework.transaction.TransactionStatus.isCompleted:()Z
            ifeq 4
         1: .line 804
            new org.springframework.transaction.IllegalTransactionStateException
            dup
         2: .line 805
            ldc "Transaction is already completed - do not call commit or rollback more than once per transaction"
         3: .line 804
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 808
      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 809
            aload 0 /* this */
            aload 2 /* defStatus */
            iconst_0
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback:(Lorg/springframework/transaction/support/DefaultTransactionStatus;Z)V
         6: .line 810
            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 820
            iload 2 /* unexpected */
            istore 3 /* unexpectedRollback */
        start local 3 // boolean unexpectedRollback
         1: .line 823
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerBeforeCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
         2: .line 825
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.hasSavepoint:()Z
            ifeq 7
         3: .line 826
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 5
         4: .line 827
            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 829
      StackMap locals: int
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.rollbackToHeldSavepoint:()V
         6: .line 830
            goto 28
         7: .line 831
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewTransaction:()Z
            ifeq 12
         8: .line 832
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 10
         9: .line 833
            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 835
      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 836
            goto 28
        12: .line 839
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.hasTransaction:()Z
            ifeq 21
        13: .line 840
            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 841
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 16
        15: .line 842
            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 844
      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 845
            goto 22
        18: .line 847
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 22
        19: .line 848
            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 851
            goto 22
        21: .line 853
      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 856
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.isFailEarlyOnGlobalRollbackOnly:()Z
            ifne 28
        23: .line 857
            iconst_0
            istore 3 /* unexpectedRollback */
        24: .line 860
            goto 28
        25: .line 861
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* ex */
        start local 4 // java.lang.Throwable ex
        26: .line 862
            aload 0 /* this */
            aload 1 /* status */
            iconst_2
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        27: .line 863
            aload 4 /* ex */
            athrow
        end local 4 // java.lang.Throwable ex
        28: .line 866
      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 869
            iload 3 /* unexpectedRollback */
            ifeq 36
        30: .line 870
            new org.springframework.transaction.UnexpectedRollbackException
            dup
        31: .line 871
            ldc "Transaction rolled back because it has been marked as rollback-only"
        32: .line 870
            invokespecial org.springframework.transaction.UnexpectedRollbackException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // boolean unexpectedRollback
        33: .line 874
      StackMap locals: org.springframework.transaction.support.AbstractPlatformTransactionManager org.springframework.transaction.support.DefaultTransactionStatus int
      StackMap stack: java.lang.Throwable
            astore 5
        34: .line 875
            aload 0 /* this */
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.cleanupAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
        35: .line 876
            aload 5
            athrow
        36: .line 875
      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 877
            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 888
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewTransaction:()Z
            ifeq 5
         1: .line 889
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 3
         2: .line 890
            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 892
      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 893
            goto 14
         5: .line 894
      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 895
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 8
         7: .line 896
            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 898
      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 900
            goto 14
        10: .line 901
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3 /* rbex */
        start local 3 // java.lang.Throwable rbex
        11: .line 902
            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 903
            aload 0 /* this */
            aload 1 /* status */
            iconst_2
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion:(Lorg/springframework/transaction/support/DefaultTransactionStatus;I)V
        13: .line 904
            aload 3 /* rbex */
            athrow
        end local 3 // java.lang.Throwable rbex
        14: .line 906
      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 907
            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 915
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 4
         1: .line 916
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 3
         2: .line 917
            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 919
      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 921
      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 928
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 4
         1: .line 929
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 3
         2: .line 930
            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 932
      StackMap locals:
      StackMap stack:
            invokestatic org.springframework.transaction.support.TransactionSynchronizationUtils.triggerBeforeCompletion:()V
         4: .line 934
      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 941
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 4
         1: .line 942
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 3
         2: .line 943
            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 945
      StackMap locals:
      StackMap stack:
            invokestatic org.springframework.transaction.support.TransactionSynchronizationUtils.triggerAfterCommit:()V
         4: .line 947
      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 955
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 10
         1: .line 956
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getSynchronizations:()Ljava/util/List;
            astore 3 /* synchronizations */
        start local 3 // java.util.List synchronizations
         2: .line 957
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.clearSynchronization:()V
         3: .line 958
            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 959
      StackMap locals: java.util.List
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 6
         5: .line 960
            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 964
      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 965
            goto 10
         8: .line 966
      StackMap locals:
      StackMap stack:
            aload 3 /* synchronizations */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 10
         9: .line 970
            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 973
      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 989
            aload 1 /* synchronizations */
            iload 2 /* completionStatus */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCompletion:(Ljava/util/List;I)V
         1: .line 990
            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 999
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.setCompleted:()V
         1: .line 1000
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewSynchronization:()Z
            ifeq 3
         2: .line 1001
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.clear:()V
         3: .line 1003
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isNewTransaction:()Z
            ifeq 5
         4: .line 1004
            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 1006
      StackMap locals:
      StackMap stack:
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getSuspendedResources:()Ljava/lang/Object;
            ifnull 12
         6: .line 1007
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 8
         7: .line 1008
            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 1010
      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 1011
            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 1013
      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 1060
            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 1080
            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 1119
            new org.springframework.transaction.TransactionSuspensionNotSupportedException
            dup
         1: .line 1120
            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 1119
            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 1137
            new org.springframework.transaction.TransactionSuspensionNotSupportedException
            dup
         1: .line 1138
            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 1137
            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 1171
            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 1184
            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 1219
            new org.springframework.transaction.IllegalTransactionStateException
            dup
         1: .line 1220
            ldc "Participating in existing transactions is not supported - when 'isExistingTransaction' returns true, appropriate 'doSetRollbackOnly' behavior must be provided"
         2: .line 1219
            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 1242
            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 1244
            aload 0 /* this */
            aload 2 /* synchronizations */
            iconst_2
            invokevirtual org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion:(Ljava/util/List;I)V
         2: .line 1245
            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 1255
            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 1264
            aload 1 /* ois */
            invokevirtual java.io.ObjectInputStream.defaultReadObject:()V
         1: .line 1267
            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 1268
            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