public abstract class org.springframework.orm.jpa.EntityManagerFactoryUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.springframework.orm.jpa.EntityManagerFactoryUtils
  super_class: java.lang.Object
{
  public static final int ENTITY_MANAGER_SYNCHRONIZATION_ORDER;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 900

  private static final org.apache.commons.logging.Log logger;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 79
            ldc Lorg/springframework/orm/jpa/EntityManagerFactoryUtils;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putstatic org.springframework.orm.jpa.EntityManagerFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.orm.jpa.EntityManagerFactoryUtils this
         0: .line 68
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.springframework.orm.jpa.EntityManagerFactoryUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/orm/jpa/EntityManagerFactoryUtils;

  public static javax.persistence.EntityManagerFactory findEntityManagerFactory(org.springframework.beans.factory.ListableBeanFactory, java.lang.String);
    descriptor: (Lorg/springframework/beans/factory/ListableBeanFactory;Ljava/lang/String;)Ljavax/persistence/EntityManagerFactory;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=8, args_size=2
        start local 0 // org.springframework.beans.factory.ListableBeanFactory beanFactory
        start local 1 // java.lang.String unitName
         0: .line 102
            aload 0 /* beanFactory */
            ldc "ListableBeanFactory must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 103
            aload 1 /* unitName */
            invokestatic org.springframework.util.StringUtils.hasLength:(Ljava/lang/String;)Z
            ifeq 13
         2: .line 106
            aload 0 /* beanFactory */
            ldc Ljavax/persistence/EntityManagerFactory;
            invokestatic org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors:(Lorg/springframework/beans/factory/ListableBeanFactory;Ljava/lang/Class;)[Ljava/lang/String;
         3: .line 105
            astore 2 /* candidateNames */
        start local 2 // java.lang.String[] candidateNames
         4: .line 107
            aload 2 /* candidateNames */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 11
      StackMap locals: org.springframework.beans.factory.ListableBeanFactory java.lang.String java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         5: aload 6
            iload 4
            aaload
            astore 3 /* candidateName */
        start local 3 // java.lang.String candidateName
         6: .line 108
            aload 0 /* beanFactory */
            aload 3 /* candidateName */
            invokeinterface org.springframework.beans.factory.ListableBeanFactory.getBean:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast javax.persistence.EntityManagerFactory
            astore 7 /* emf */
        start local 7 // javax.persistence.EntityManagerFactory emf
         7: .line 109
            aload 7 /* emf */
            instanceof org.springframework.orm.jpa.EntityManagerFactoryInfo
            ifeq 10
         8: .line 110
            aload 1 /* unitName */
            aload 7 /* emf */
            checkcast org.springframework.orm.jpa.EntityManagerFactoryInfo
            invokeinterface org.springframework.orm.jpa.EntityManagerFactoryInfo.getPersistenceUnitName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         9: .line 111
            aload 7 /* emf */
            areturn
        end local 7 // javax.persistence.EntityManagerFactory emf
        end local 3 // java.lang.String candidateName
        10: .line 107
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        11: iload 4
            iload 5
            if_icmplt 5
        12: .line 116
            aload 0 /* beanFactory */
            aload 1 /* unitName */
            ldc Ljavax/persistence/EntityManagerFactory;
            invokeinterface org.springframework.beans.factory.ListableBeanFactory.getBean:(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast javax.persistence.EntityManagerFactory
            areturn
        end local 2 // java.lang.String[] candidateNames
        13: .line 120
      StackMap locals: org.springframework.beans.factory.ListableBeanFactory java.lang.String
      StackMap stack:
            aload 0 /* beanFactory */
            ldc Ljavax/persistence/EntityManagerFactory;
            invokeinterface org.springframework.beans.factory.ListableBeanFactory.getBean:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast javax.persistence.EntityManagerFactory
            areturn
        end local 1 // java.lang.String unitName
        end local 0 // org.springframework.beans.factory.ListableBeanFactory beanFactory
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   14     0     beanFactory  Lorg/springframework/beans/factory/ListableBeanFactory;
            0   14     1        unitName  Ljava/lang/String;
            4   13     2  candidateNames  [Ljava/lang/String;
            6   10     3   candidateName  Ljava/lang/String;
            7   10     7             emf  Ljavax/persistence/EntityManagerFactory;
    Exceptions:
      throws org.springframework.beans.factory.NoSuchBeanDefinitionException
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      beanFactory  
      unitName     

  public static javax.persistence.EntityManager getTransactionalEntityManager(javax.persistence.EntityManagerFactory);
    descriptor: (Ljavax/persistence/EntityManagerFactory;)Ljavax/persistence/EntityManager;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // javax.persistence.EntityManagerFactory emf
         0: .line 137
            aload 0 /* emf */
            aconst_null
            invokestatic org.springframework.orm.jpa.EntityManagerFactoryUtils.getTransactionalEntityManager:(Ljavax/persistence/EntityManagerFactory;Ljava/util/Map;)Ljavax/persistence/EntityManager;
            areturn
        end local 0 // javax.persistence.EntityManagerFactory emf
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   emf  Ljavax/persistence/EntityManagerFactory;
    Exceptions:
      throws org.springframework.dao.DataAccessResourceFailureException
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      emf   

  public static javax.persistence.EntityManager getTransactionalEntityManager(javax.persistence.EntityManagerFactory, java.util.Map<?, ?>);
    descriptor: (Ljavax/persistence/EntityManagerFactory;Ljava/util/Map;)Ljavax/persistence/EntityManager;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // javax.persistence.EntityManagerFactory emf
        start local 1 // java.util.Map properties
         0: .line 155
            aload 0 /* emf */
            aload 1 /* properties */
            iconst_1
            invokestatic org.springframework.orm.jpa.EntityManagerFactoryUtils.doGetTransactionalEntityManager:(Ljavax/persistence/EntityManagerFactory;Ljava/util/Map;Z)Ljavax/persistence/EntityManager;
         1: areturn
         2: .line 157
      StackMap locals:
      StackMap stack: javax.persistence.PersistenceException
            astore 2 /* ex */
        start local 2 // javax.persistence.PersistenceException ex
         3: .line 158
            new org.springframework.dao.DataAccessResourceFailureException
            dup
            ldc "Could not obtain JPA EntityManager"
            aload 2 /* ex */
            invokespecial org.springframework.dao.DataAccessResourceFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // javax.persistence.PersistenceException ex
        end local 1 // java.util.Map properties
        end local 0 // javax.persistence.EntityManagerFactory emf
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0         emf  Ljavax/persistence/EntityManagerFactory;
            0    4     1  properties  Ljava/util/Map<**>;
            3    4     2          ex  Ljavax/persistence/PersistenceException;
      Exception table:
        from    to  target  type
           0     1       2  Class javax.persistence.PersistenceException
    Exceptions:
      throws org.springframework.dao.DataAccessResourceFailureException
    Signature: (Ljavax/persistence/EntityManagerFactory;Ljava/util/Map<**>;)Ljavax/persistence/EntityManager;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      emf         
      properties  

  public static javax.persistence.EntityManager doGetTransactionalEntityManager(javax.persistence.EntityManagerFactory, java.util.Map<?, ?>);
    descriptor: (Ljavax/persistence/EntityManagerFactory;Ljava/util/Map;)Ljavax/persistence/EntityManager;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // javax.persistence.EntityManagerFactory emf
        start local 1 // java.util.Map properties
         0: .line 178
            aload 0 /* emf */
            aload 1 /* properties */
            iconst_1
            invokestatic org.springframework.orm.jpa.EntityManagerFactoryUtils.doGetTransactionalEntityManager:(Ljavax/persistence/EntityManagerFactory;Ljava/util/Map;Z)Ljavax/persistence/EntityManager;
            areturn
        end local 1 // java.util.Map properties
        end local 0 // javax.persistence.EntityManagerFactory emf
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0         emf  Ljavax/persistence/EntityManagerFactory;
            0    1     1  properties  Ljava/util/Map<**>;
    Exceptions:
      throws javax.persistence.PersistenceException
    Signature: (Ljavax/persistence/EntityManagerFactory;Ljava/util/Map<**>;)Ljavax/persistence/EntityManager;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
            Name  Flags
      emf         
      properties  

  public static javax.persistence.EntityManager doGetTransactionalEntityManager(javax.persistence.EntityManagerFactory, java.util.Map<?, ?>, boolean);
    descriptor: (Ljavax/persistence/EntityManagerFactory;Ljava/util/Map;Z)Ljavax/persistence/EntityManager;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // javax.persistence.EntityManagerFactory emf
        start local 1 // java.util.Map properties
        start local 2 // boolean synchronizedWithTransaction
         0: .line 200
            aload 0 /* emf */
            ldc "No EntityManagerFactory specified"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 203
            aload 0 /* emf */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.orm.jpa.EntityManagerHolder
         2: .line 202
            astore 3 /* emHolder */
        start local 3 // org.springframework.orm.jpa.EntityManagerHolder emHolder
         3: .line 204
            aload 3 /* emHolder */
            ifnull 24
         4: .line 205
            iload 2 /* synchronizedWithTransaction */
            ifeq 18
         5: .line 206
            aload 3 /* emHolder */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.isSynchronizedWithTransaction:()Z
            ifne 16
         6: .line 207
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isActualTransactionActive:()Z
            ifeq 11
         7: .line 211
            aload 3 /* emHolder */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            invokeinterface javax.persistence.EntityManager.joinTransaction:()V
         8: .line 212
            goto 11
         9: .line 213
      StackMap locals: javax.persistence.EntityManagerFactory java.util.Map int org.springframework.orm.jpa.EntityManagerHolder
      StackMap stack: javax.persistence.TransactionRequiredException
            astore 4 /* ex */
        start local 4 // javax.persistence.TransactionRequiredException ex
        10: .line 214
            getstatic org.springframework.orm.jpa.EntityManagerFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            ldc "Could not join transaction because none was actually active"
            aload 4 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 4 // javax.persistence.TransactionRequiredException ex
        11: .line 217
      StackMap locals:
      StackMap stack:
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isSynchronizationActive:()Z
            ifeq 16
        12: .line 218
            aload 3 /* emHolder */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            aload 0 /* emf */
            invokestatic org.springframework.orm.jpa.EntityManagerFactoryUtils.prepareTransaction:(Ljavax/persistence/EntityManager;Ljavax/persistence/EntityManagerFactory;)Ljava/lang/Object;
            astore 4 /* transactionData */
        start local 4 // java.lang.Object transactionData
        13: .line 220
            new org.springframework.orm.jpa.EntityManagerFactoryUtils$TransactionalEntityManagerSynchronization
            dup
            aload 3 /* emHolder */
            aload 0 /* emf */
            aload 4 /* transactionData */
            iconst_0
            invokespecial org.springframework.orm.jpa.EntityManagerFactoryUtils$TransactionalEntityManagerSynchronization.<init>:(Lorg/springframework/orm/jpa/EntityManagerHolder;Ljavax/persistence/EntityManagerFactory;Ljava/lang/Object;Z)V
        14: .line 219
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.registerSynchronization:(Lorg/springframework/transaction/support/TransactionSynchronization;)V
        15: .line 221
            aload 3 /* emHolder */
            iconst_1
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.setSynchronizedWithTransaction:(Z)V
        end local 4 // java.lang.Object transactionData
        16: .line 226
      StackMap locals:
      StackMap stack:
            aload 3 /* emHolder */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.requested:()V
        17: .line 227
            aload 3 /* emHolder */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            areturn
        18: .line 231
      StackMap locals:
      StackMap stack:
            aload 3 /* emHolder */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.isTransactionActive:()Z
            ifeq 23
            aload 3 /* emHolder */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.isOpen:()Z
            ifne 23
        19: .line 232
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isSynchronizationActive:()Z
            ifne 21
        20: .line 233
            aconst_null
            areturn
        21: .line 238
      StackMap locals:
      StackMap stack:
            aload 0 /* emf */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        22: .line 239
            goto 26
        23: .line 244
      StackMap locals:
      StackMap stack:
            aload 3 /* emHolder */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getEntityManager:()Ljavax/persistence/EntityManager;
            areturn
        24: .line 248
      StackMap locals:
      StackMap stack:
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isSynchronizationActive:()Z
            ifne 26
        25: .line 250
            aconst_null
            areturn
        26: .line 254
      StackMap locals:
      StackMap stack:
            getstatic org.springframework.orm.jpa.EntityManagerFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            ldc "Opening JPA EntityManager"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        27: .line 255
            aconst_null
            astore 4 /* em */
        start local 4 // javax.persistence.EntityManager em
        28: .line 256
            iload 2 /* synchronizedWithTransaction */
            ifne 32
        29: .line 258
            aload 0 /* emf */
            getstatic javax.persistence.SynchronizationType.UNSYNCHRONIZED:Ljavax/persistence/SynchronizationType;
            aload 1 /* properties */
            invokeinterface javax.persistence.EntityManagerFactory.createEntityManager:(Ljavax/persistence/SynchronizationType;Ljava/util/Map;)Ljavax/persistence/EntityManager;
            astore 4 /* em */
        30: .line 259
            goto 32
        31: .line 260
      StackMap locals: javax.persistence.EntityManagerFactory java.util.Map int org.springframework.orm.jpa.EntityManagerHolder javax.persistence.EntityManager
      StackMap stack: java.lang.AbstractMethodError
            pop
        32: .line 265
      StackMap locals:
      StackMap stack:
            aload 4 /* em */
            ifnonnull 36
        33: .line 266
            aload 1 /* properties */
            invokestatic org.springframework.util.CollectionUtils.isEmpty:(Ljava/util/Map;)Z
            ifne 34
            aload 0 /* emf */
            aload 1 /* properties */
            invokeinterface javax.persistence.EntityManagerFactory.createEntityManager:(Ljava/util/Map;)Ljavax/persistence/EntityManager;
            goto 35
      StackMap locals:
      StackMap stack:
        34: aload 0 /* emf */
            invokeinterface javax.persistence.EntityManagerFactory.createEntityManager:()Ljavax/persistence/EntityManager;
      StackMap locals:
      StackMap stack: javax.persistence.EntityManager
        35: astore 4 /* em */
        36: .line 272
      StackMap locals:
      StackMap stack:
            new org.springframework.orm.jpa.EntityManagerHolder
            dup
            aload 4 /* em */
            invokespecial org.springframework.orm.jpa.EntityManagerHolder.<init>:(Ljavax/persistence/EntityManager;)V
            astore 3 /* emHolder */
        37: .line 273
            iload 2 /* synchronizedWithTransaction */
            ifeq 43
        38: .line 274
            aload 4 /* em */
            aload 0 /* emf */
            invokestatic org.springframework.orm.jpa.EntityManagerFactoryUtils.prepareTransaction:(Ljavax/persistence/EntityManager;Ljavax/persistence/EntityManagerFactory;)Ljava/lang/Object;
            astore 5 /* transactionData */
        start local 5 // java.lang.Object transactionData
        39: .line 276
            new org.springframework.orm.jpa.EntityManagerFactoryUtils$TransactionalEntityManagerSynchronization
            dup
            aload 3 /* emHolder */
            aload 0 /* emf */
            aload 5 /* transactionData */
            iconst_1
            invokespecial org.springframework.orm.jpa.EntityManagerFactoryUtils$TransactionalEntityManagerSynchronization.<init>:(Lorg/springframework/orm/jpa/EntityManagerHolder;Ljavax/persistence/EntityManagerFactory;Ljava/lang/Object;Z)V
        40: .line 275
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.registerSynchronization:(Lorg/springframework/transaction/support/TransactionSynchronization;)V
        41: .line 277
            aload 3 /* emHolder */
            iconst_1
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.setSynchronizedWithTransaction:(Z)V
        end local 5 // java.lang.Object transactionData
        42: .line 278
            goto 45
        43: .line 282
      StackMap locals:
      StackMap stack:
            new org.springframework.orm.jpa.EntityManagerFactoryUtils$TransactionScopedEntityManagerSynchronization
            dup
            aload 3 /* emHolder */
            aload 0 /* emf */
            invokespecial org.springframework.orm.jpa.EntityManagerFactoryUtils$TransactionScopedEntityManagerSynchronization.<init>:(Lorg/springframework/orm/jpa/EntityManagerHolder;Ljavax/persistence/EntityManagerFactory;)V
        44: .line 281
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.registerSynchronization:(Lorg/springframework/transaction/support/TransactionSynchronization;)V
        45: .line 284
      StackMap locals:
      StackMap stack:
            aload 0 /* emf */
            aload 3 /* emHolder */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
        46: .line 285
            goto 50
        47: .line 286
      StackMap locals:
      StackMap stack: java.lang.RuntimeException
            astore 5 /* ex */
        start local 5 // java.lang.RuntimeException ex
        48: .line 288
            aload 4 /* em */
            invokestatic org.springframework.orm.jpa.EntityManagerFactoryUtils.closeEntityManager:(Ljavax/persistence/EntityManager;)V
        49: .line 289
            aload 5 /* ex */
            athrow
        end local 5 // java.lang.RuntimeException ex
        50: .line 292
      StackMap locals:
      StackMap stack:
            aload 4 /* em */
            areturn
        end local 4 // javax.persistence.EntityManager em
        end local 3 // org.springframework.orm.jpa.EntityManagerHolder emHolder
        end local 2 // boolean synchronizedWithTransaction
        end local 1 // java.util.Map properties
        end local 0 // javax.persistence.EntityManagerFactory emf
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0   51     0                          emf  Ljavax/persistence/EntityManagerFactory;
            0   51     1                   properties  Ljava/util/Map<**>;
            0   51     2  synchronizedWithTransaction  Z
            3   51     3                     emHolder  Lorg/springframework/orm/jpa/EntityManagerHolder;
           10   11     4                           ex  Ljavax/persistence/TransactionRequiredException;
           13   16     4              transactionData  Ljava/lang/Object;
           28   51     4                           em  Ljavax/persistence/EntityManager;
           39   42     5              transactionData  Ljava/lang/Object;
           48   50     5                           ex  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           7     8       9  Class javax.persistence.TransactionRequiredException
          29    30      31  Class java.lang.AbstractMethodError
          36    46      47  Class java.lang.RuntimeException
    Exceptions:
      throws javax.persistence.PersistenceException
    Signature: (Ljavax/persistence/EntityManagerFactory;Ljava/util/Map<**>;Z)Ljavax/persistence/EntityManager;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
      2:
    MethodParameters:
                             Name  Flags
      emf                          
      properties                   
      synchronizedWithTransaction  

  private static java.lang.Object prepareTransaction(javax.persistence.EntityManager, javax.persistence.EntityManagerFactory);
    descriptor: (Ljavax/persistence/EntityManager;Ljavax/persistence/EntityManagerFactory;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // javax.persistence.EntityManager em
        start local 1 // javax.persistence.EntityManagerFactory emf
         0: .line 305
            aload 1 /* emf */
            instanceof org.springframework.orm.jpa.EntityManagerFactoryInfo
            ifeq 8
         1: .line 306
            aload 1 /* emf */
            checkcast org.springframework.orm.jpa.EntityManagerFactoryInfo
            astore 2 /* emfInfo */
        start local 2 // org.springframework.orm.jpa.EntityManagerFactoryInfo emfInfo
         2: .line 307
            aload 2 /* 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
         3: .line 308
            aload 3 /* jpaDialect */
            ifnull 8
         4: .line 309
            aload 3 /* jpaDialect */
            aload 0 /* em */
         5: .line 310
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.isCurrentTransactionReadOnly:()Z
         6: .line 311
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getCurrentTransactionName:()Ljava/lang/String;
         7: .line 309
            invokeinterface org.springframework.orm.jpa.JpaDialect.prepareTransaction:(Ljavax/persistence/EntityManager;ZLjava/lang/String;)Ljava/lang/Object;
            areturn
        end local 3 // org.springframework.orm.jpa.JpaDialect jpaDialect
        end local 2 // org.springframework.orm.jpa.EntityManagerFactoryInfo emfInfo
         8: .line 314
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // javax.persistence.EntityManagerFactory emf
        end local 0 // javax.persistence.EntityManager em
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0          em  Ljavax/persistence/EntityManager;
            0    9     1         emf  Ljavax/persistence/EntityManagerFactory;
            2    8     2     emfInfo  Lorg/springframework/orm/jpa/EntityManagerFactoryInfo;
            3    8     3  jpaDialect  Lorg/springframework/orm/jpa/JpaDialect;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      em    
      emf   

  private static void cleanupTransaction(java.lang.Object, javax.persistence.EntityManagerFactory);
    descriptor: (Ljava/lang/Object;Ljavax/persistence/EntityManagerFactory;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.lang.Object transactionData
        start local 1 // javax.persistence.EntityManagerFactory emf
         0: .line 325
            aload 1 /* emf */
            instanceof org.springframework.orm.jpa.EntityManagerFactoryInfo
            ifeq 5
         1: .line 326
            aload 1 /* emf */
            checkcast org.springframework.orm.jpa.EntityManagerFactoryInfo
            astore 2 /* emfInfo */
        start local 2 // org.springframework.orm.jpa.EntityManagerFactoryInfo emfInfo
         2: .line 327
            aload 2 /* 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
         3: .line 328
            aload 3 /* jpaDialect */
            ifnull 5
         4: .line 329
            aload 3 /* jpaDialect */
            aload 0 /* transactionData */
            invokeinterface org.springframework.orm.jpa.JpaDialect.cleanupTransaction:(Ljava/lang/Object;)V
        end local 3 // org.springframework.orm.jpa.JpaDialect jpaDialect
        end local 2 // org.springframework.orm.jpa.EntityManagerFactoryInfo emfInfo
         5: .line 332
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.persistence.EntityManagerFactory emf
        end local 0 // java.lang.Object transactionData
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0  transactionData  Ljava/lang/Object;
            0    6     1              emf  Ljavax/persistence/EntityManagerFactory;
            2    5     2          emfInfo  Lorg/springframework/orm/jpa/EntityManagerFactoryInfo;
            3    5     3       jpaDialect  Lorg/springframework/orm/jpa/JpaDialect;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
                 Name  Flags
      transactionData  
      emf              

  public static void applyTransactionTimeout(javax.persistence.Query, javax.persistence.EntityManagerFactory);
    descriptor: (Ljavax/persistence/Query;Ljavax/persistence/EntityManagerFactory;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // javax.persistence.Query query
        start local 1 // javax.persistence.EntityManagerFactory emf
         0: .line 341
            aload 1 /* emf */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.orm.jpa.EntityManagerHolder
            astore 2 /* emHolder */
        start local 2 // org.springframework.orm.jpa.EntityManagerHolder emHolder
         1: .line 342
            aload 2 /* emHolder */
            ifnull 6
            aload 2 /* emHolder */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.hasTimeout:()Z
            ifeq 6
         2: .line 343
            aload 2 /* emHolder */
            invokevirtual org.springframework.orm.jpa.EntityManagerHolder.getTimeToLiveInMillis:()J
            l2i
            istore 3 /* timeoutValue */
        start local 3 // int timeoutValue
         3: .line 345
            aload 0 /* query */
            ldc "javax.persistence.query.timeout"
            iload 3 /* timeoutValue */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface javax.persistence.Query.setHint:(Ljava/lang/String;Ljava/lang/Object;)Ljavax/persistence/Query;
            pop
         4: .line 346
            goto 6
         5: .line 347
      StackMap locals: javax.persistence.Query javax.persistence.EntityManagerFactory org.springframework.orm.jpa.EntityManagerHolder int
      StackMap stack: java.lang.IllegalArgumentException
            pop
        end local 3 // int timeoutValue
         6: .line 351
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.springframework.orm.jpa.EntityManagerHolder emHolder
        end local 1 // javax.persistence.EntityManagerFactory emf
        end local 0 // javax.persistence.Query query
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0         query  Ljavax/persistence/Query;
            0    7     1           emf  Ljavax/persistence/EntityManagerFactory;
            1    7     2      emHolder  Lorg/springframework/orm/jpa/EntityManagerHolder;
            3    6     3  timeoutValue  I
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.IllegalArgumentException
    MethodParameters:
       Name  Flags
      query  
      emf    

  public static org.springframework.dao.DataAccessException convertJpaAccessExceptionIfPossible(java.lang.RuntimeException);
    descriptor: (Ljava/lang/RuntimeException;)Lorg/springframework/dao/DataAccessException;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.RuntimeException ex
         0: .line 369
            aload 0 /* ex */
            instanceof java.lang.IllegalStateException
            ifeq 2
         1: .line 370
            new org.springframework.dao.InvalidDataAccessApiUsageException
            dup
            aload 0 /* ex */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.InvalidDataAccessApiUsageException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
         2: .line 372
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof java.lang.IllegalArgumentException
            ifeq 4
         3: .line 373
            new org.springframework.dao.InvalidDataAccessApiUsageException
            dup
            aload 0 /* ex */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.InvalidDataAccessApiUsageException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
         4: .line 377
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof javax.persistence.EntityNotFoundException
            ifeq 6
         5: .line 378
            new org.springframework.orm.jpa.JpaObjectRetrievalFailureException
            dup
            aload 0 /* ex */
            checkcast javax.persistence.EntityNotFoundException
            invokespecial org.springframework.orm.jpa.JpaObjectRetrievalFailureException.<init>:(Ljavax/persistence/EntityNotFoundException;)V
            areturn
         6: .line 380
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof javax.persistence.NoResultException
            ifeq 8
         7: .line 381
            new org.springframework.dao.EmptyResultDataAccessException
            dup
            aload 0 /* ex */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            iconst_1
            aload 0 /* ex */
            invokespecial org.springframework.dao.EmptyResultDataAccessException.<init>:(Ljava/lang/String;ILjava/lang/Throwable;)V
            areturn
         8: .line 383
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof javax.persistence.NonUniqueResultException
            ifeq 10
         9: .line 384
            new org.springframework.dao.IncorrectResultSizeDataAccessException
            dup
            aload 0 /* ex */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            iconst_1
            aload 0 /* ex */
            invokespecial org.springframework.dao.IncorrectResultSizeDataAccessException.<init>:(Ljava/lang/String;ILjava/lang/Throwable;)V
            areturn
        10: .line 386
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof javax.persistence.QueryTimeoutException
            ifeq 12
        11: .line 387
            new org.springframework.dao.QueryTimeoutException
            dup
            aload 0 /* ex */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.QueryTimeoutException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        12: .line 389
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof javax.persistence.LockTimeoutException
            ifeq 14
        13: .line 390
            new org.springframework.dao.CannotAcquireLockException
            dup
            aload 0 /* ex */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.CannotAcquireLockException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        14: .line 392
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof javax.persistence.PessimisticLockException
            ifeq 16
        15: .line 393
            new org.springframework.dao.PessimisticLockingFailureException
            dup
            aload 0 /* ex */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.PessimisticLockingFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        16: .line 395
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof javax.persistence.OptimisticLockException
            ifeq 18
        17: .line 396
            new org.springframework.orm.jpa.JpaOptimisticLockingFailureException
            dup
            aload 0 /* ex */
            checkcast javax.persistence.OptimisticLockException
            invokespecial org.springframework.orm.jpa.JpaOptimisticLockingFailureException.<init>:(Ljavax/persistence/OptimisticLockException;)V
            areturn
        18: .line 398
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof javax.persistence.EntityExistsException
            ifeq 20
        19: .line 399
            new org.springframework.dao.DataIntegrityViolationException
            dup
            aload 0 /* ex */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.DataIntegrityViolationException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        20: .line 401
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof javax.persistence.TransactionRequiredException
            ifeq 22
        21: .line 402
            new org.springframework.dao.InvalidDataAccessApiUsageException
            dup
            aload 0 /* ex */
            invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.InvalidDataAccessApiUsageException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        22: .line 406
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof javax.persistence.PersistenceException
            ifeq 24
        23: .line 407
            new org.springframework.orm.jpa.JpaSystemException
            dup
            aload 0 /* ex */
            invokespecial org.springframework.orm.jpa.JpaSystemException.<init>:(Ljava/lang/RuntimeException;)V
            areturn
        24: .line 413
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.lang.RuntimeException ex
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   25     0    ex  Ljava/lang/RuntimeException;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      ex    

  public static void closeEntityManager(javax.persistence.EntityManager);
    descriptor: (Ljavax/persistence/EntityManager;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // javax.persistence.EntityManager em
         0: .line 423
            aload 0 /* em */
            ifnull 9
         1: .line 425
            aload 0 /* em */
            invokeinterface javax.persistence.EntityManager.isOpen:()Z
            ifeq 9
         2: .line 426
            aload 0 /* em */
            invokeinterface javax.persistence.EntityManager.close:()V
         3: .line 428
            goto 9
         4: .line 429
      StackMap locals:
      StackMap stack: javax.persistence.PersistenceException
            astore 1 /* ex */
        start local 1 // javax.persistence.PersistenceException ex
         5: .line 430
            getstatic org.springframework.orm.jpa.EntityManagerFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            ldc "Could not close JPA EntityManager"
            aload 1 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 1 // javax.persistence.PersistenceException ex
         6: goto 9
         7: .line 432
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 1 /* ex */
        start local 1 // java.lang.Throwable ex
         8: .line 433
            getstatic org.springframework.orm.jpa.EntityManagerFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            ldc "Unexpected exception on closing JPA EntityManager"
            aload 1 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 1 // java.lang.Throwable ex
         9: .line 436
      StackMap locals:
      StackMap stack:
            return
        end local 0 // javax.persistence.EntityManager em
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0    em  Ljavax/persistence/EntityManager;
            5    6     1    ex  Ljavax/persistence/PersistenceException;
            8    9     1    ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     3       4  Class javax.persistence.PersistenceException
           1     3       7  Class java.lang.Throwable
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      em    
}
SourceFile: "EntityManagerFactoryUtils.java"
NestMembers:
  org.springframework.orm.jpa.EntityManagerFactoryUtils$TransactionScopedEntityManagerSynchronization  org.springframework.orm.jpa.EntityManagerFactoryUtils$TransactionalEntityManagerSynchronization
InnerClasses:
  private TransactionScopedEntityManagerSynchronization = org.springframework.orm.jpa.EntityManagerFactoryUtils$TransactionScopedEntityManagerSynchronization of org.springframework.orm.jpa.EntityManagerFactoryUtils
  private TransactionalEntityManagerSynchronization = org.springframework.orm.jpa.EntityManagerFactoryUtils$TransactionalEntityManagerSynchronization of org.springframework.orm.jpa.EntityManagerFactoryUtils