public class org.springframework.orm.jpa.JpaTransactionManager extends org.springframework.transaction.support.AbstractPlatformTransactionManager implements org.springframework.transaction.support.ResourceTransactionManager, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.InitializingBean
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.orm.jpa.JpaTransactionManager
  super_class: org.springframework.transaction.support.AbstractPlatformTransactionManager
{
  private javax.persistence.EntityManagerFactory entityManagerFactory;
    descriptor: Ljavax/persistence/EntityManagerFactory;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private java.lang.String persistenceUnitName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

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

  private javax.sql.DataSource dataSource;
    descriptor: Ljavax/sql/DataSource;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private org.springframework.orm.jpa.JpaDialect jpaDialect;
    descriptor: Lorg/springframework/orm/jpa/JpaDialect;
    flags: (0x0002) ACC_PRIVATE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
         0: .line 136
            aload 0 /* this */
            invokespecial org.springframework.transaction.support.AbstractPlatformTransactionManager.<init>:()V
         1: .line 123
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.springframework.orm.jpa.JpaTransactionManager.jpaPropertyMap:Ljava/util/Map;
         2: .line 128
            aload 0 /* this */
            new org.springframework.orm.jpa.DefaultJpaDialect
            dup
            invokespecial org.springframework.orm.jpa.DefaultJpaDialect.<init>:()V
            putfield org.springframework.orm.jpa.JpaTransactionManager.jpaDialect:Lorg/springframework/orm/jpa/JpaDialect;
         3: .line 137
            aload 0 /* this */
            iconst_1
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.setNestedTransactionAllowed:(Z)V
         4: .line 138
            return
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/orm/jpa/JpaTransactionManager;

  public void <init>(javax.persistence.EntityManagerFactory);
    descriptor: (Ljavax/persistence/EntityManagerFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // javax.persistence.EntityManagerFactory emf
         0: .line 145
            aload 0 /* this */
            invokespecial org.springframework.orm.jpa.JpaTransactionManager.<init>:()V
         1: .line 146
            aload 0 /* this */
            aload 1 /* emf */
            putfield org.springframework.orm.jpa.JpaTransactionManager.entityManagerFactory:Ljavax/persistence/EntityManagerFactory;
         2: .line 147
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.afterPropertiesSet:()V
         3: .line 148
            return
        end local 1 // javax.persistence.EntityManagerFactory emf
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0    4     1   emf  Ljavax/persistence/EntityManagerFactory;
    MethodParameters:
      Name  Flags
      emf   

  public void setEntityManagerFactory(javax.persistence.EntityManagerFactory);
    descriptor: (Ljavax/persistence/EntityManagerFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // javax.persistence.EntityManagerFactory emf
         0: .line 159
            aload 0 /* this */
            aload 1 /* emf */
            putfield org.springframework.orm.jpa.JpaTransactionManager.entityManagerFactory:Ljavax/persistence/EntityManagerFactory;
         1: .line 160
            return
        end local 1 // javax.persistence.EntityManagerFactory emf
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0    2     1   emf  Ljavax/persistence/EntityManagerFactory;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      emf   

  public javax.persistence.EntityManagerFactory getEntityManagerFactory();
    descriptor: ()Ljavax/persistence/EntityManagerFactory;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
         0: .line 167
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.entityManagerFactory:Ljavax/persistence/EntityManagerFactory;
            areturn
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/orm/jpa/JpaTransactionManager;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  protected final javax.persistence.EntityManagerFactory obtainEntityManagerFactory();
    descriptor: ()Ljavax/persistence/EntityManagerFactory;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
         0: .line 177
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            astore 1 /* emf */
        start local 1 // javax.persistence.EntityManagerFactory emf
         1: .line 178
            aload 1 /* emf */
            ifnull 2
            iconst_1
            goto 3
      StackMap locals: javax.persistence.EntityManagerFactory
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "No EntityManagerFactory set"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         4: .line 179
            aload 1 /* emf */
            areturn
        end local 1 // javax.persistence.EntityManagerFactory emf
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            1    5     1   emf  Ljavax/persistence/EntityManagerFactory;

  public void setPersistenceUnitName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // java.lang.String persistenceUnitName
         0: .line 191
            aload 0 /* this */
            aload 1 /* persistenceUnitName */
            putfield org.springframework.orm.jpa.JpaTransactionManager.persistenceUnitName:Ljava/lang/String;
         1: .line 192
            return
        end local 1 // java.lang.String persistenceUnitName
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0                 this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0    2     1  persistenceUnitName  Ljava/lang/String;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
                     Name  Flags
      persistenceUnitName  

  public java.lang.String getPersistenceUnitName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
         0: .line 199
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.persistenceUnitName:Ljava/lang/String;
            areturn
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/orm/jpa/JpaTransactionManager;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public void setJpaProperties(java.util.Properties);
    descriptor: (Ljava/util/Properties;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // java.util.Properties jpaProperties
         0: .line 210
            aload 1 /* jpaProperties */
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.jpaPropertyMap:Ljava/util/Map;
            invokestatic org.springframework.util.CollectionUtils.mergePropertiesIntoMap:(Ljava/util/Properties;Ljava/util/Map;)V
         1: .line 211
            return
        end local 1 // java.util.Properties jpaProperties
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0    2     1  jpaProperties  Ljava/util/Properties;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
               Name  Flags
      jpaProperties  

  public void setJpaPropertyMap(java.util.Map<java.lang.String, ?>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // java.util.Map jpaProperties
         0: .line 220
            aload 1 /* jpaProperties */
            ifnull 2
         1: .line 221
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.jpaPropertyMap:Ljava/util/Map;
            aload 1 /* jpaProperties */
            invokeinterface java.util.Map.putAll:(Ljava/util/Map;)V
         2: .line 223
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.Map jpaProperties
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0    3     1  jpaProperties  Ljava/util/Map<Ljava/lang/String;*>;
    Signature: (Ljava/util/Map<Ljava/lang/String;*>;)V
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
               Name  Flags
      jpaProperties  

  public java.util.Map<java.lang.String, java.lang.Object> getJpaPropertyMap();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
         0: .line 231
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.jpaPropertyMap:Ljava/util/Map;
            areturn
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/orm/jpa/JpaTransactionManager;
    Signature: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;

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

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

  public void setJpaDialect(org.springframework.orm.jpa.JpaDialect);
    descriptor: (Lorg/springframework/orm/jpa/JpaDialect;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // org.springframework.orm.jpa.JpaDialect jpaDialect
         0: .line 290
            aload 0 /* this */
            aload 1 /* jpaDialect */
            ifnull 1
            aload 1 /* jpaDialect */
            goto 2
      StackMap locals:
      StackMap stack: org.springframework.orm.jpa.JpaTransactionManager
         1: new org.springframework.orm.jpa.DefaultJpaDialect
            dup
            invokespecial org.springframework.orm.jpa.DefaultJpaDialect.<init>:()V
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager org.springframework.orm.jpa.JpaDialect
      StackMap stack: org.springframework.orm.jpa.JpaTransactionManager org.springframework.orm.jpa.JpaDialect
         2: putfield org.springframework.orm.jpa.JpaTransactionManager.jpaDialect:Lorg/springframework/orm/jpa/JpaDialect;
         3: .line 291
            return
        end local 1 // org.springframework.orm.jpa.JpaDialect jpaDialect
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0    4     1  jpaDialect  Lorg/springframework/orm/jpa/JpaDialect;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      jpaDialect  

  public org.springframework.orm.jpa.JpaDialect getJpaDialect();
    descriptor: ()Lorg/springframework/orm/jpa/JpaDialect;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
         0: .line 297
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.jpaDialect:Lorg/springframework/orm/jpa/JpaDialect;
            areturn
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/orm/jpa/JpaTransactionManager;

  public void setBeanFactory(org.springframework.beans.factory.BeanFactory);
    descriptor: (Lorg/springframework/beans/factory/BeanFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // org.springframework.beans.factory.BeanFactory beanFactory
         0: .line 307
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            ifnonnull 7
         1: .line 308
            aload 1 /* beanFactory */
            instanceof org.springframework.beans.factory.ListableBeanFactory
            ifne 5
         2: .line 309
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot retrieve EntityManagerFactory by persistence unit name in a non-listable BeanFactory: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         3: .line 310
            aload 1 /* beanFactory */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 309
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 312
      StackMap locals:
      StackMap stack:
            aload 1 /* beanFactory */
            checkcast org.springframework.beans.factory.ListableBeanFactory
            astore 2 /* lbf */
        start local 2 // org.springframework.beans.factory.ListableBeanFactory lbf
         6: .line 313
            aload 0 /* this */
            aload 2 /* lbf */
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getPersistenceUnitName:()Ljava/lang/String;
            invokestatic org.springframework.orm.jpa.EntityManagerFactoryUtils.findEntityManagerFactory:(Lorg/springframework/beans/factory/ListableBeanFactory;Ljava/lang/String;)Ljavax/persistence/EntityManagerFactory;
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.setEntityManagerFactory:(Ljavax/persistence/EntityManagerFactory;)V
        end local 2 // org.springframework.beans.factory.ListableBeanFactory lbf
         7: .line 315
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.springframework.beans.factory.BeanFactory beanFactory
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0    8     1  beanFactory  Lorg/springframework/beans/factory/BeanFactory;
            6    7     2          lbf  Lorg/springframework/beans/factory/ListableBeanFactory;
    Exceptions:
      throws org.springframework.beans.BeansException
    MethodParameters:
             Name  Flags
      beanFactory  

  public void afterPropertiesSet();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
         0: .line 324
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            ifnonnull 2
         1: .line 325
            new java.lang.IllegalArgumentException
            dup
            ldc "'entityManagerFactory' or 'persistenceUnitName' is required"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 327
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            instanceof org.springframework.orm.jpa.EntityManagerFactoryInfo
            ifeq 10
         3: .line 328
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            checkcast org.springframework.orm.jpa.EntityManagerFactoryInfo
            astore 1 /* emfInfo */
        start local 1 // org.springframework.orm.jpa.EntityManagerFactoryInfo emfInfo
         4: .line 329
            aload 1 /* emfInfo */
            invokeinterface org.springframework.orm.jpa.EntityManagerFactoryInfo.getDataSource:()Ljavax/sql/DataSource;
            astore 2 /* dataSource */
        start local 2 // javax.sql.DataSource dataSource
         5: .line 330
            aload 2 /* dataSource */
            ifnull 7
         6: .line 331
            aload 0 /* this */
            aload 2 /* dataSource */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.setDataSource:(Ljavax/sql/DataSource;)V
         7: .line 333
      StackMap locals: org.springframework.orm.jpa.EntityManagerFactoryInfo javax.sql.DataSource
      StackMap stack:
            aload 1 /* emfInfo */
            invokeinterface org.springframework.orm.jpa.EntityManagerFactoryInfo.getJpaDialect:()Lorg/springframework/orm/jpa/JpaDialect;
            astore 3 /* jpaDialect */
        start local 3 // org.springframework.orm.jpa.JpaDialect jpaDialect
         8: .line 334
            aload 3 /* jpaDialect */
            ifnull 10
         9: .line 335
            aload 0 /* this */
            aload 3 /* jpaDialect */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.setJpaDialect:(Lorg/springframework/orm/jpa/JpaDialect;)V
        end local 3 // org.springframework.orm.jpa.JpaDialect jpaDialect
        end local 2 // javax.sql.DataSource dataSource
        end local 1 // org.springframework.orm.jpa.EntityManagerFactoryInfo emfInfo
        10: .line 338
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            4   10     1     emfInfo  Lorg/springframework/orm/jpa/EntityManagerFactoryInfo;
            5   10     2  dataSource  Ljavax/sql/DataSource;
            8   10     3  jpaDialect  Lorg/springframework/orm/jpa/JpaDialect;

  public java.lang.Object getResourceFactory();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
         0: .line 343
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.obtainEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            areturn
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/orm/jpa/JpaTransactionManager;

  protected java.lang.Object doGetTransaction();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
         0: .line 348
            new org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
            dup
            aload 0 /* this */
            invokespecial org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.<init>:(Lorg/springframework/orm/jpa/JpaTransactionManager;)V
            astore 1 /* txObject */
        start local 1 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
         1: .line 349
            aload 1 /* txObject */
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.isNestedTransactionAllowed:()Z
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setSavepointAllowed:(Z)V
         2: .line 352
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.obtainEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
         3: .line 351
            checkcast org.springframework.orm.jpa.EntityManagerHolder
            astore 2 /* emHolder */
        start local 2 // org.springframework.orm.jpa.EntityManagerHolder emHolder
         4: .line 353
            aload 2 /* emHolder */
            ifnull 10
         5: .line 354
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 9
         6: .line 355
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Found thread-bound EntityManager ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* emHolder */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         7: .line 356
            ldc "] for JPA transaction"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 355
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         9: .line 358
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject org.springframework.orm.jpa.EntityManagerHolder
      StackMap stack:
            aload 1 /* txObject */
            aload 2 /* emHolder */
            iconst_0
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setEntityManagerHolder:(Lorg/springframework/orm/jpa/EntityManagerHolder;Z)V
        10: .line 361
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnull 14
        11: .line 363
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
        12: .line 362
            checkcast org.springframework.jdbc.datasource.ConnectionHolder
            astore 3 /* conHolder */
        start local 3 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        13: .line 364
            aload 1 /* txObject */
            aload 3 /* conHolder */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setConnectionHolder:(Lorg/springframework/jdbc/datasource/ConnectionHolder;)V
        end local 3 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        14: .line 367
      StackMap locals:
      StackMap stack:
            aload 1 /* txObject */
            areturn
        end local 2 // org.springframework.orm.jpa.EntityManagerHolder emHolder
        end local 1 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0       this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            1   15     1   txObject  Lorg/springframework/orm/jpa/JpaTransactionManager$JpaTransactionObject;
            4   15     2   emHolder  Lorg/springframework/orm/jpa/EntityManagerHolder;
           13   14     3  conHolder  Lorg/springframework/jdbc/datasource/ConnectionHolder;

  protected boolean isExistingTransaction(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 372
            aload 1 /* transaction */
            checkcast org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.hasTransaction:()Z
            ireturn
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0    1     1  transaction  Ljava/lang/Object;
    MethodParameters:
             Name  Flags
      transaction  

  protected void doBegin(java.lang.Object, org.springframework.transaction.TransactionDefinition);
    descriptor: (Ljava/lang/Object;Lorg/springframework/transaction/TransactionDefinition;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=9, args_size=3
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // java.lang.Object transaction
        start local 2 // org.springframework.transaction.TransactionDefinition definition
         0: .line 377
            aload 1 /* transaction */
            checkcast org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
            astore 3 /* txObject */
        start local 3 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
         1: .line 379
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.hasConnectionHolder:()Z
            ifeq 5
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.isSynchronizedWithTransaction:()Z
            ifne 5
         2: .line 380
            new org.springframework.transaction.IllegalTransactionStateException
            dup
         3: .line 381
            ldc "Pre-bound JDBC Connection found! JpaTransactionManager does not support running within DataSourceTransactionManager if told to manage the DataSource itself. It is recommended to use a single JpaTransactionManager for all transactions on a single DataSource, no matter whether JPA or JDBC access."
         4: .line 380
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 388
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
      StackMap stack:
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.hasEntityManagerHolder:()Z
            ifeq 7
         6: .line 389
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.isSynchronizedWithTransaction:()Z
            ifeq 11
         7: .line 390
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.createEntityManagerForTransaction:()Ljavax/persistence/EntityManager;
            astore 4 /* newEm */
        start local 4 // javax.persistence.EntityManager newEm
         8: .line 391
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 10
         9: .line 392
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Opened new EntityManager ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* newEm */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] for JPA transaction"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        10: .line 394
      StackMap locals: javax.persistence.EntityManager
      StackMap stack:
            aload 3 /* txObject */
            new org.springframework.orm.jpa.EntityManagerHolder
            dup
            aload 4 /* newEm */
            invokespecial org.springframework.orm.jpa.EntityManagerHolder.<init>:(Ljavax/persistence/EntityManager;)V
            iconst_1
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setEntityManagerHolder:(Lorg/springframework/orm/jpa/EntityManagerHolder;Z)V
        end local 4 // javax.persistence.EntityManager newEm
        11: .line 397
      StackMap locals:
      StackMap stack:
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            astore 4 /* em */
        start local 4 // javax.persistence.EntityManager em
        12: .line 400
            aload 0 /* this */
            aload 2 /* definition */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.determineTimeout:(Lorg/springframework/transaction/TransactionDefinition;)I
            istore 5 /* timeoutToUse */
        start local 5 // int timeoutToUse
        13: .line 401
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getJpaDialect:()Lorg/springframework/orm/jpa/JpaDialect;
            aload 4 /* em */
        14: .line 402
            new org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionDefinition
            dup
            aload 2 /* definition */
            iload 5 /* timeoutToUse */
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.isNewEntityManagerHolder:()Z
            invokespecial org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionDefinition.<init>:(Lorg/springframework/transaction/TransactionDefinition;IZ)V
        15: .line 401
            invokeinterface org.springframework.orm.jpa.JpaDialect.beginTransaction:(Ljavax/persistence/EntityManager;Lorg/springframework/transaction/TransactionDefinition;)Ljava/lang/Object;
            astore 6 /* transactionData */
        start local 6 // java.lang.Object transactionData
        16: .line 403
            aload 3 /* txObject */
            aload 6 /* transactionData */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setTransactionData:(Ljava/lang/Object;)V
        17: .line 406
            iload 5 /* timeoutToUse */
            iconst_m1
            if_icmpeq 19
        18: .line 407
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            iload 5 /* timeoutToUse */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.setTimeoutInSeconds:(I)V
        19: .line 411
      StackMap locals: javax.persistence.EntityManager int java.lang.Object
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnull 34
        20: .line 412
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getJpaDialect:()Lorg/springframework/orm/jpa/JpaDialect;
            aload 4 /* em */
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
            invokeinterface org.springframework.orm.jpa.JpaDialect.getJdbcConnection:(Ljavax/persistence/EntityManager;Z)Lorg/springframework/jdbc/datasource/ConnectionHandle;
            astore 7 /* conHandle */
        start local 7 // org.springframework.jdbc.datasource.ConnectionHandle conHandle
        21: .line 413
            aload 7 /* conHandle */
            ifnull 30
        22: .line 414
            new org.springframework.jdbc.datasource.ConnectionHolder
            dup
            aload 7 /* conHandle */
            invokespecial org.springframework.jdbc.datasource.ConnectionHolder.<init>:(Lorg/springframework/jdbc/datasource/ConnectionHandle;)V
            astore 8 /* conHolder */
        start local 8 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        23: .line 415
            iload 5 /* timeoutToUse */
            iconst_m1
            if_icmpeq 25
        24: .line 416
            aload 8 /* conHolder */
            iload 5 /* timeoutToUse */
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.setTimeoutInSeconds:(I)V
        25: .line 418
      StackMap locals: org.springframework.jdbc.datasource.ConnectionHandle org.springframework.jdbc.datasource.ConnectionHolder
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 27
        26: .line 419
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Exposing JPA transaction as JDBC ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 7 /* conHandle */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        27: .line 421
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            aload 8 /* conHolder */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
        28: .line 422
            aload 3 /* txObject */
            aload 8 /* conHolder */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setConnectionHolder:(Lorg/springframework/jdbc/datasource/ConnectionHolder;)V
        end local 8 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        29: .line 423
            goto 34
        30: .line 425
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 34
        31: .line 426
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Not exposing JPA transaction ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* em */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] as JDBC transaction because "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        32: .line 427
            ldc "JpaDialect ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getJpaDialect:()Lorg/springframework/orm/jpa/JpaDialect;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] does not support JDBC Connection retrieval"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        33: .line 426
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        end local 7 // org.springframework.jdbc.datasource.ConnectionHandle conHandle
        34: .line 433
      StackMap locals:
      StackMap stack:
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.isNewEntityManagerHolder:()Z
            ifeq 37
        35: .line 435
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.obtainEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
        36: .line 434
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
        37: .line 437
      StackMap locals:
      StackMap stack:
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            iconst_1
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.setSynchronizedWithTransaction:(Z)V
        end local 6 // java.lang.Object transactionData
        end local 5 // int timeoutToUse
        end local 4 // javax.persistence.EntityManager em
        38: .line 438
            goto 45
        39: .line 440
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager java.lang.Object org.springframework.transaction.TransactionDefinition org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
      StackMap stack: org.springframework.transaction.TransactionException
            astore 4 /* ex */
        start local 4 // org.springframework.transaction.TransactionException ex
        40: .line 441
            aload 0 /* this */
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.closeEntityManagerAfterFailedBegin:(Lorg/springframework/orm/jpa/JpaTransactionManager$JpaTransactionObject;)V
        41: .line 442
            aload 4 /* ex */
            athrow
        end local 4 // org.springframework.transaction.TransactionException ex
        42: .line 444
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* ex */
        start local 4 // java.lang.Throwable ex
        43: .line 445
            aload 0 /* this */
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.closeEntityManagerAfterFailedBegin:(Lorg/springframework/orm/jpa/JpaTransactionManager$JpaTransactionObject;)V
        44: .line 446
            new org.springframework.transaction.CannotCreateTransactionException
            dup
            ldc "Could not open JPA EntityManager for transaction"
            aload 4 /* ex */
            invokespecial org.springframework.transaction.CannotCreateTransactionException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.lang.Throwable ex
        45: .line 448
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
        end local 2 // org.springframework.transaction.TransactionDefinition definition
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   46     0             this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0   46     1      transaction  Ljava/lang/Object;
            0   46     2       definition  Lorg/springframework/transaction/TransactionDefinition;
            1   46     3         txObject  Lorg/springframework/orm/jpa/JpaTransactionManager$JpaTransactionObject;
            8   11     4            newEm  Ljavax/persistence/EntityManager;
           12   38     4               em  Ljavax/persistence/EntityManager;
           13   38     5     timeoutToUse  I
           16   38     6  transactionData  Ljava/lang/Object;
           21   34     7        conHandle  Lorg/springframework/jdbc/datasource/ConnectionHandle;
           23   29     8        conHolder  Lorg/springframework/jdbc/datasource/ConnectionHolder;
           40   42     4               ex  Lorg/springframework/transaction/TransactionException;
           43   45     4               ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           5    38      39  Class org.springframework.transaction.TransactionException
           5    38      42  Class java.lang.Throwable
    MethodParameters:
             Name  Flags
      transaction  
      definition   

  protected javax.persistence.EntityManager createEntityManagerForTransaction();
    descriptor: ()Ljavax/persistence/EntityManager;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
         0: .line 458
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.obtainEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            astore 1 /* emf */
        start local 1 // javax.persistence.EntityManagerFactory emf
         1: .line 459
            aload 1 /* emf */
            instanceof org.springframework.orm.jpa.EntityManagerFactoryInfo
            ifeq 3
         2: .line 460
            aload 1 /* emf */
            checkcast org.springframework.orm.jpa.EntityManagerFactoryInfo
            invokeinterface org.springframework.orm.jpa.EntityManagerFactoryInfo.getNativeEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            astore 1 /* emf */
         3: .line 462
      StackMap locals: javax.persistence.EntityManagerFactory
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getJpaPropertyMap:()Ljava/util/Map;
            astore 2 /* properties */
        start local 2 // java.util.Map properties
         4: .line 463
            aload 2 /* properties */
            invokestatic org.springframework.util.CollectionUtils.isEmpty:(Ljava/util/Map;)Z
            ifne 6
         5: .line 464
            aload 1 /* emf */
            aload 2 /* properties */
            invokeinterface javax.persistence.EntityManagerFactory.createEntityManager:(Ljava/util/Map;)Ljavax/persistence/EntityManager;
            goto 7
      StackMap locals: java.util.Map
      StackMap stack:
         6: aload 1 /* emf */
            invokeinterface javax.persistence.EntityManagerFactory.createEntityManager:()Ljavax/persistence/EntityManager;
         7: .line 463
      StackMap locals:
      StackMap stack: javax.persistence.EntityManager
            areturn
        end local 2 // java.util.Map properties
        end local 1 // javax.persistence.EntityManagerFactory emf
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            1    8     1         emf  Ljavax/persistence/EntityManagerFactory;
            4    8     2  properties  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;

  protected void closeEntityManagerAfterFailedBegin(org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject);
    descriptor: (Lorg/springframework/orm/jpa/JpaTransactionManager$JpaTransactionObject;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
         0: .line 473
            aload 1 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.isNewEntityManagerHolder:()Z
            ifeq 13
         1: .line 474
            aload 1 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            astore 2 /* em */
        start local 2 // javax.persistence.EntityManager em
         2: .line 476
            aload 2 /* em */
            invokeinterface javax.persistence.EntityManager.getTransaction:()Ljavax/persistence/EntityTransaction;
            invokeinterface javax.persistence.EntityTransaction.isActive:()Z
            ifeq 11
         3: .line 477
            aload 2 /* em */
            invokeinterface javax.persistence.EntityManager.getTransaction:()Ljavax/persistence/EntityTransaction;
            invokeinterface javax.persistence.EntityTransaction.rollback:()V
         4: .line 479
            goto 11
         5: .line 480
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject javax.persistence.EntityManager
      StackMap stack: java.lang.Throwable
            astore 3 /* ex */
        start local 3 // java.lang.Throwable ex
         6: .line 481
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Could not rollback EntityManager after failed transaction begin"
            aload 3 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 3 // java.lang.Throwable ex
         7: .line 484
            aload 2 /* em */
            invokestatic org.springframework.orm.jpa.EntityManagerFactoryUtils.closeEntityManager:(Ljavax/persistence/EntityManager;)V
            goto 12
         8: .line 483
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
         9: .line 484
            aload 2 /* em */
            invokestatic org.springframework.orm.jpa.EntityManagerFactoryUtils.closeEntityManager:(Ljavax/persistence/EntityManager;)V
        10: .line 485
            aload 4
            athrow
        11: .line 484
      StackMap locals:
      StackMap stack:
            aload 2 /* em */
            invokestatic org.springframework.orm.jpa.EntityManagerFactoryUtils.closeEntityManager:(Ljavax/persistence/EntityManager;)V
        12: .line 486
      StackMap locals:
      StackMap stack:
            aload 1 /* txObject */
            aconst_null
            iconst_0
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setEntityManagerHolder:(Lorg/springframework/orm/jpa/EntityManagerHolder;Z)V
        end local 2 // javax.persistence.EntityManager em
        13: .line 488
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0      this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0   14     1  txObject  Lorg/springframework/orm/jpa/JpaTransactionManager$JpaTransactionObject;
            2   13     2        em  Ljavax/persistence/EntityManager;
            6    7     3        ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     4       5  Class java.lang.Throwable
           2     7       8  any
    MethodParameters:
          Name  Flags
      txObject  

  protected java.lang.Object doSuspend(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 492
            aload 1 /* transaction */
            checkcast org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
         1: .line 493
            aload 2 /* txObject */
            aconst_null
            iconst_0
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setEntityManagerHolder:(Lorg/springframework/orm/jpa/EntityManagerHolder;Z)V
         2: .line 495
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.obtainEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource:(Ljava/lang/Object;)Ljava/lang/Object;
         3: .line 494
            checkcast org.springframework.orm.jpa.EntityManagerHolder
            astore 3 /* entityManagerHolder */
        start local 3 // org.springframework.orm.jpa.EntityManagerHolder entityManagerHolder
         4: .line 496
            aload 2 /* txObject */
            aconst_null
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setConnectionHolder:(Lorg/springframework/jdbc/datasource/ConnectionHolder;)V
         5: .line 497
            aconst_null
            astore 4 /* connectionHolder */
        start local 4 // org.springframework.jdbc.datasource.ConnectionHolder connectionHolder
         6: .line 498
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnull 8
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.hasResource:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 499
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.jdbc.datasource.ConnectionHolder
            astore 4 /* connectionHolder */
         8: .line 501
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject org.springframework.orm.jpa.EntityManagerHolder org.springframework.jdbc.datasource.ConnectionHolder
      StackMap stack:
            new org.springframework.orm.jpa.JpaTransactionManager$SuspendedResourcesHolder
            dup
            aload 3 /* entityManagerHolder */
            aload 4 /* connectionHolder */
            invokespecial org.springframework.orm.jpa.JpaTransactionManager$SuspendedResourcesHolder.<init>:(Lorg/springframework/orm/jpa/EntityManagerHolder;Lorg/springframework/jdbc/datasource/ConnectionHolder;)V
            areturn
        end local 4 // org.springframework.jdbc.datasource.ConnectionHolder connectionHolder
        end local 3 // org.springframework.orm.jpa.EntityManagerHolder entityManagerHolder
        end local 2 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    9     0                 this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0    9     1          transaction  Ljava/lang/Object;
            1    9     2             txObject  Lorg/springframework/orm/jpa/JpaTransactionManager$JpaTransactionObject;
            4    9     3  entityManagerHolder  Lorg/springframework/orm/jpa/EntityManagerHolder;
            6    9     4     connectionHolder  Lorg/springframework/jdbc/datasource/ConnectionHolder;
    MethodParameters:
             Name  Flags
      transaction  

  protected void doResume(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // java.lang.Object transaction
        start local 2 // java.lang.Object suspendedResources
         0: .line 506
            aload 2 /* suspendedResources */
            checkcast org.springframework.orm.jpa.JpaTransactionManager$SuspendedResourcesHolder
            astore 3 /* resourcesHolder */
        start local 3 // org.springframework.orm.jpa.JpaTransactionManager$SuspendedResourcesHolder resourcesHolder
         1: .line 508
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.obtainEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            aload 3 /* resourcesHolder */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$SuspendedResourcesHolder.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
         2: .line 507
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 509
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnull 5
            aload 3 /* resourcesHolder */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$SuspendedResourcesHolder.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            ifnull 5
         4: .line 510
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            aload 3 /* resourcesHolder */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$SuspendedResourcesHolder.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 512
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager$SuspendedResourcesHolder
      StackMap stack:
            return
        end local 3 // org.springframework.orm.jpa.JpaTransactionManager$SuspendedResourcesHolder resourcesHolder
        end local 2 // java.lang.Object suspendedResources
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    6     0                this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0    6     1         transaction  Ljava/lang/Object;
            0    6     2  suspendedResources  Ljava/lang/Object;
            1    6     3     resourcesHolder  Lorg/springframework/orm/jpa/JpaTransactionManager$SuspendedResourcesHolder;
    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.orm.jpa.JpaTransactionManager this
         0: .line 520
            iconst_1
            ireturn
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/orm/jpa/JpaTransactionManager;

  protected void doCommit(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 525
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            checkcast org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
         1: .line 526
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 5
         2: .line 527
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Committing JPA transaction on EntityManager ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         3: .line 528
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 527
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         5: .line 531
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            invokeinterface javax.persistence.EntityManager.getTransaction:()Ljavax/persistence/EntityTransaction;
            astore 3 /* tx */
        start local 3 // javax.persistence.EntityTransaction tx
         6: .line 532
            aload 3 /* tx */
            invokeinterface javax.persistence.EntityTransaction.commit:()V
        end local 3 // javax.persistence.EntityTransaction tx
         7: .line 533
            goto 16
         8: .line 534
      StackMap locals:
      StackMap stack: javax.persistence.RollbackException
            astore 3 /* ex */
        start local 3 // javax.persistence.RollbackException ex
         9: .line 535
            aload 3 /* ex */
            invokevirtual javax.persistence.RollbackException.getCause:()Ljava/lang/Throwable;
            instanceof java.lang.RuntimeException
            ifeq 13
        10: .line 536
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getJpaDialect:()Lorg/springframework/orm/jpa/JpaDialect;
            aload 3 /* ex */
            invokevirtual javax.persistence.RollbackException.getCause:()Ljava/lang/Throwable;
            checkcast java.lang.RuntimeException
            invokeinterface org.springframework.orm.jpa.JpaDialect.translateExceptionIfPossible:(Ljava/lang/RuntimeException;)Lorg/springframework/dao/DataAccessException;
            astore 4 /* dae */
        start local 4 // org.springframework.dao.DataAccessException dae
        11: .line 537
            aload 4 /* dae */
            ifnull 13
        12: .line 538
            aload 4 /* dae */
            athrow
        end local 4 // org.springframework.dao.DataAccessException dae
        13: .line 541
      StackMap locals: javax.persistence.RollbackException
      StackMap stack:
            new org.springframework.transaction.TransactionSystemException
            dup
            ldc "Could not commit JPA transaction"
            aload 3 /* ex */
            invokespecial org.springframework.transaction.TransactionSystemException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // javax.persistence.RollbackException ex
        14: .line 543
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager org.springframework.transaction.support.DefaultTransactionStatus org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
      StackMap stack: java.lang.RuntimeException
            astore 3 /* ex */
        start local 3 // java.lang.RuntimeException ex
        15: .line 545
            aload 3 /* ex */
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getJpaDialect:()Lorg/springframework/orm/jpa/JpaDialect;
            invokestatic org.springframework.dao.support.DataAccessUtils.translateIfNecessary:(Ljava/lang/RuntimeException;Lorg/springframework/dao/support/PersistenceExceptionTranslator;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // java.lang.RuntimeException ex
        16: .line 547
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   17     0      this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0   17     1    status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            1   17     2  txObject  Lorg/springframework/orm/jpa/JpaTransactionManager$JpaTransactionObject;
            6    7     3        tx  Ljavax/persistence/EntityTransaction;
            9   14     3        ex  Ljavax/persistence/RollbackException;
           11   13     4       dae  Lorg/springframework/dao/DataAccessException;
           15   16     3        ex  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           5     7       8  Class javax.persistence.RollbackException
           5     7      14  Class java.lang.RuntimeException
    MethodParameters:
        Name  Flags
      status  

  protected void doRollback(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 551
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            checkcast org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
         1: .line 552
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 5
         2: .line 553
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Rolling back JPA transaction on EntityManager ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         3: .line 554
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 553
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         5: .line 557
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            invokeinterface javax.persistence.EntityManager.getTransaction:()Ljavax/persistence/EntityTransaction;
            astore 3 /* tx */
        start local 3 // javax.persistence.EntityTransaction tx
         6: .line 558
            aload 3 /* tx */
            invokeinterface javax.persistence.EntityTransaction.isActive:()Z
            ifeq 15
         7: .line 559
            aload 3 /* tx */
            invokeinterface javax.persistence.EntityTransaction.rollback:()V
        end local 3 // javax.persistence.EntityTransaction tx
         8: .line 561
            goto 15
         9: .line 562
      StackMap locals:
      StackMap stack: javax.persistence.PersistenceException
            astore 3 /* ex */
        start local 3 // javax.persistence.PersistenceException ex
        10: .line 563
            new org.springframework.transaction.TransactionSystemException
            dup
            ldc "Could not roll back JPA transaction"
            aload 3 /* ex */
            invokespecial org.springframework.transaction.TransactionSystemException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // javax.persistence.PersistenceException ex
        11: .line 565
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        12: .line 566
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.isNewEntityManagerHolder:()Z
            ifne 14
        13: .line 569
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            invokeinterface javax.persistence.EntityManager.clear:()V
        14: .line 571
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager org.springframework.transaction.support.DefaultTransactionStatus org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject top java.lang.Throwable
      StackMap stack:
            aload 4
            athrow
        15: .line 566
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager org.springframework.transaction.support.DefaultTransactionStatus org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.isNewEntityManagerHolder:()Z
            ifne 17
        16: .line 569
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            invokeinterface javax.persistence.EntityManager.clear:()V
        17: .line 572
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   18     0      this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0   18     1    status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            1   18     2  txObject  Lorg/springframework/orm/jpa/JpaTransactionManager$JpaTransactionObject;
            6    8     3        tx  Ljavax/persistence/EntityTransaction;
           10   11     3        ex  Ljavax/persistence/PersistenceException;
      Exception table:
        from    to  target  type
           5     8       9  Class javax.persistence.PersistenceException
           5    11      11  any
    MethodParameters:
        Name  Flags
      status  

  protected void doSetRollbackOnly(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 576
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            checkcast org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
         1: .line 577
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 5
         2: .line 578
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Setting JPA transaction on EntityManager ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         3: .line 579
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] rollback-only"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 578
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         5: .line 581
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setRollbackOnly:()V
         6: .line 582
            return
        end local 2 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0    7     1    status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            1    7     2  txObject  Lorg/springframework/orm/jpa/JpaTransactionManager$JpaTransactionObject;
    MethodParameters:
        Name  Flags
      status  

  protected void doCleanupAfterCompletion(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.springframework.orm.jpa.JpaTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 586
            aload 1 /* transaction */
            checkcast org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
         1: .line 591
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.isNewEntityManagerHolder:()Z
            ifeq 3
         2: .line 592
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.obtainEntityManagerFactory:()Ljavax/persistence/EntityManagerFactory;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.unbindResourceIfPossible:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 594
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.clear:()V
         4: .line 597
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnull 14
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.hasConnectionHolder:()Z
            ifeq 14
         5: .line 598
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 599
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getConnectionHandle:()Lorg/springframework/jdbc/datasource/ConnectionHandle;
            astore 3 /* conHandle */
        start local 3 // org.springframework.jdbc.datasource.ConnectionHandle conHandle
         7: .line 600
            aload 3 /* conHandle */
            ifnull 14
         8: .line 602
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getJpaDialect:()Lorg/springframework/orm/jpa/JpaDialect;
            aload 3 /* conHandle */
         9: .line 603
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
        10: .line 602
            invokeinterface org.springframework.orm.jpa.JpaDialect.releaseJdbcConnection:(Lorg/springframework/jdbc/datasource/ConnectionHandle;Ljavax/persistence/EntityManager;)V
        11: .line 604
            goto 14
        12: .line 605
      StackMap locals: org.springframework.orm.jpa.JpaTransactionManager java.lang.Object org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject org.springframework.jdbc.datasource.ConnectionHandle
      StackMap stack: java.lang.Exception
            astore 4 /* ex */
        start local 4 // java.lang.Exception ex
        13: .line 607
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Could not close JDBC connection after transaction"
            aload 4 /* ex */
            invokeinterface org.apache.commons.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 4 // java.lang.Exception ex
        end local 3 // org.springframework.jdbc.datasource.ConnectionHandle conHandle
        14: .line 612
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager.getJpaDialect:()Lorg/springframework/orm/jpa/JpaDialect;
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getTransactionData:()Ljava/lang/Object;
            invokeinterface org.springframework.orm.jpa.JpaDialect.cleanupTransaction:(Ljava/lang/Object;)V
        15: .line 615
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.isNewEntityManagerHolder:()Z
            ifeq 21
        16: .line 616
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.getEntityManagerHolder:()Lorg/springframework/orm/jpa/EntityManagerHolder;
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            astore 3 /* em */
        start local 3 // javax.persistence.EntityManager em
        17: .line 617
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 19
        18: .line 618
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Closing JPA EntityManager ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* em */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] after transaction"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        19: .line 620
      StackMap locals: javax.persistence.EntityManager
      StackMap stack:
            aload 3 /* em */
            invokestatic org.springframework.orm.jpa.EntityManagerFactoryUtils.closeEntityManager:(Ljavax/persistence/EntityManager;)V
        end local 3 // javax.persistence.EntityManager em
        20: .line 621
            goto 22
        21: .line 623
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.jpa.JpaTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Not closing pre-bound JPA EntityManager after transaction"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        22: .line 625
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject txObject
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.orm.jpa.JpaTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Lorg/springframework/orm/jpa/JpaTransactionManager;
            0   23     1  transaction  Ljava/lang/Object;
            1   23     2     txObject  Lorg/springframework/orm/jpa/JpaTransactionManager$JpaTransactionObject;
            7   14     3    conHandle  Lorg/springframework/jdbc/datasource/ConnectionHandle;
           13   14     4           ex  Ljava/lang/Exception;
           17   20     3           em  Ljavax/persistence/EntityManager;
      Exception table:
        from    to  target  type
           8    11      12  Class java.lang.Exception
    MethodParameters:
             Name  Flags
      transaction  
}
SourceFile: "JpaTransactionManager.java"
NestMembers:
  org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionDefinition  org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject  org.springframework.orm.jpa.JpaTransactionManager$SuspendedResourcesHolder
InnerClasses:
  private JpaTransactionDefinition = org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionDefinition of org.springframework.orm.jpa.JpaTransactionManager
  private JpaTransactionObject = org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject of org.springframework.orm.jpa.JpaTransactionManager
  private final SuspendedResourcesHolder = org.springframework.orm.jpa.JpaTransactionManager$SuspendedResourcesHolder of org.springframework.orm.jpa.JpaTransactionManager