public class org.springframework.orm.hibernate5.HibernateTransactionManager 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.hibernate5.HibernateTransactionManager
  super_class: org.springframework.transaction.support.AbstractPlatformTransactionManager
{
  private org.hibernate.SessionFactory sessionFactory;
    descriptor: Lorg/hibernate/SessionFactory;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

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

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

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

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

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

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

  private org.springframework.beans.factory.BeanFactory beanFactory;
    descriptor: Lorg/springframework/beans/factory/BeanFactory;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
         0: .line 143
            aload 0 /* this */
            invokespecial org.springframework.transaction.support.AbstractPlatformTransactionManager.<init>:()V
         1: .line 119
            aload 0 /* this */
            iconst_1
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.autodetectDataSource:Z
         2: .line 121
            aload 0 /* this */
            iconst_1
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.prepareConnection:Z
         3: .line 123
            aload 0 /* this */
            iconst_0
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.allowResultAccessAfterCompletion:Z
         4: .line 125
            aload 0 /* this */
            iconst_0
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.hibernateManagedSession:Z
         5: .line 144
            return
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;

  public void <init>(org.hibernate.SessionFactory);
    descriptor: (Lorg/hibernate/SessionFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // org.hibernate.SessionFactory sessionFactory
         0: .line 150
            aload 0 /* this */
            invokespecial org.springframework.transaction.support.AbstractPlatformTransactionManager.<init>:()V
         1: .line 119
            aload 0 /* this */
            iconst_1
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.autodetectDataSource:Z
         2: .line 121
            aload 0 /* this */
            iconst_1
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.prepareConnection:Z
         3: .line 123
            aload 0 /* this */
            iconst_0
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.allowResultAccessAfterCompletion:Z
         4: .line 125
            aload 0 /* this */
            iconst_0
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.hibernateManagedSession:Z
         5: .line 151
            aload 0 /* this */
            aload 1 /* sessionFactory */
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.sessionFactory:Lorg/hibernate/SessionFactory;
         6: .line 152
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.afterPropertiesSet:()V
         7: .line 153
            return
        end local 1 // org.hibernate.SessionFactory sessionFactory
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    8     1  sessionFactory  Lorg/hibernate/SessionFactory;
    MethodParameters:
                Name  Flags
      sessionFactory  

  public void setSessionFactory(org.hibernate.SessionFactory);
    descriptor: (Lorg/hibernate/SessionFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // org.hibernate.SessionFactory sessionFactory
         0: .line 160
            aload 0 /* this */
            aload 1 /* sessionFactory */
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.sessionFactory:Lorg/hibernate/SessionFactory;
         1: .line 161
            return
        end local 1 // org.hibernate.SessionFactory sessionFactory
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    2     1  sessionFactory  Lorg/hibernate/SessionFactory;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
                Name  Flags
      sessionFactory  

  public org.hibernate.SessionFactory getSessionFactory();
    descriptor: ()Lorg/hibernate/SessionFactory;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
         0: .line 168
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.sessionFactory:Lorg/hibernate/SessionFactory;
            areturn
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  protected final org.hibernate.SessionFactory obtainSessionFactory();
    descriptor: ()Lorg/hibernate/SessionFactory;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
         0: .line 178
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getSessionFactory:()Lorg/hibernate/SessionFactory;
            astore 1 /* sessionFactory */
        start local 1 // org.hibernate.SessionFactory sessionFactory
         1: .line 179
            aload 1 /* sessionFactory */
            ifnull 2
            iconst_1
            goto 3
      StackMap locals: org.hibernate.SessionFactory
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "No SessionFactory set"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         4: .line 180
            aload 1 /* sessionFactory */
            areturn
        end local 1 // org.hibernate.SessionFactory sessionFactory
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0            this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            1    5     1  sessionFactory  Lorg/hibernate/SessionFactory;

  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.hibernate5.HibernateTransactionManager this
        start local 1 // javax.sql.DataSource dataSource
         0: .line 213
            aload 1 /* dataSource */
            instanceof org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy
            ifeq 3
         1: .line 217
            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.hibernate5.HibernateTransactionManager.dataSource:Ljavax/sql/DataSource;
         2: .line 218
            goto 4
         3: .line 220
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* dataSource */
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.dataSource:Ljavax/sql/DataSource;
         4: .line 222
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.sql.DataSource dataSource
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            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.hibernate5.HibernateTransactionManager this
         0: .line 229
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.dataSource:Ljavax/sql/DataSource;
            areturn
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public void setAutodetectDataSource(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // boolean autodetectDataSource
         0: .line 240
            aload 0 /* this */
            iload 1 /* autodetectDataSource */
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.autodetectDataSource:Z
         1: .line 241
            return
        end local 1 // boolean autodetectDataSource
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    2     0                  this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    2     1  autodetectDataSource  Z
    MethodParameters:
                      Name  Flags
      autodetectDataSource  

  public void setPrepareConnection(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // boolean prepareConnection
         0: .line 257
            aload 0 /* this */
            iload 1 /* prepareConnection */
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.prepareConnection:Z
         1: .line 258
            return
        end local 1 // boolean prepareConnection
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    2     1  prepareConnection  Z
    MethodParameters:
                   Name  Flags
      prepareConnection  

  public void setAllowResultAccessAfterCompletion(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // boolean allowResultAccessAfterCompletion
         0: .line 271
            aload 0 /* this */
            iload 1 /* allowResultAccessAfterCompletion */
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.allowResultAccessAfterCompletion:Z
         1: .line 272
            return
        end local 1 // boolean allowResultAccessAfterCompletion
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot                              Name  Signature
            0    2     0                              this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    2     1  allowResultAccessAfterCompletion  Z
    MethodParameters:
                                  Name  Flags
      allowResultAccessAfterCompletion  

  public void setHibernateManagedSession(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // boolean hibernateManagedSession
         0: .line 299
            aload 0 /* this */
            iload 1 /* hibernateManagedSession */
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.hibernateManagedSession:Z
         1: .line 300
            return
        end local 1 // boolean hibernateManagedSession
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    2     0                     this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    2     1  hibernateManagedSession  Z
    MethodParameters:
                         Name  Flags
      hibernateManagedSession  

  public void setEntityInterceptorBeanName(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.hibernate5.HibernateTransactionManager this
        start local 1 // java.lang.String entityInterceptorBeanName
         0: .line 317
            aload 0 /* this */
            aload 1 /* entityInterceptorBeanName */
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.entityInterceptor:Ljava/lang/Object;
         1: .line 318
            return
        end local 1 // java.lang.String entityInterceptorBeanName
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    2     0                       this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    2     1  entityInterceptorBeanName  Ljava/lang/String;
    MethodParameters:
                           Name  Flags
      entityInterceptorBeanName  

  public void setEntityInterceptor(org.hibernate.Interceptor);
    descriptor: (Lorg/hibernate/Interceptor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // org.hibernate.Interceptor entityInterceptor
         0: .line 330
            aload 0 /* this */
            aload 1 /* entityInterceptor */
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.entityInterceptor:Ljava/lang/Object;
         1: .line 331
            return
        end local 1 // org.hibernate.Interceptor entityInterceptor
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    2     1  entityInterceptor  Lorg/hibernate/Interceptor;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
                   Name  Flags
      entityInterceptor  

  public org.hibernate.Interceptor getEntityInterceptor();
    descriptor: ()Lorg/hibernate/Interceptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
         0: .line 345
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.entityInterceptor:Ljava/lang/Object;
            instanceof org.hibernate.Interceptor
            ifeq 2
         1: .line 346
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.entityInterceptor:Ljava/lang/Object;
            checkcast org.hibernate.Interceptor
            areturn
         2: .line 348
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.entityInterceptor:Ljava/lang/Object;
            instanceof java.lang.String
            ifeq 7
         3: .line 349
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.beanFactory:Lorg/springframework/beans/factory/BeanFactory;
            ifnonnull 5
         4: .line 350
            new java.lang.IllegalStateException
            dup
            ldc "Cannot get entity interceptor via bean name if no bean factory set"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 352
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.entityInterceptor:Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* beanName */
        start local 1 // java.lang.String beanName
         6: .line 353
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.beanFactory:Lorg/springframework/beans/factory/BeanFactory;
            aload 1 /* beanName */
            ldc Lorg/hibernate/Interceptor;
            invokeinterface org.springframework.beans.factory.BeanFactory.getBean:(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast org.hibernate.Interceptor
            areturn
        end local 1 // java.lang.String beanName
         7: .line 356
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            6    7     1  beanName  Ljava/lang/String;
    Exceptions:
      throws java.lang.IllegalStateException, org.springframework.beans.BeansException
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public void setBeanFactory(org.springframework.beans.factory.BeanFactory);
    descriptor: (Lorg/springframework/beans/factory/BeanFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // org.springframework.beans.factory.BeanFactory beanFactory
         0: .line 367
            aload 0 /* this */
            aload 1 /* beanFactory */
            putfield org.springframework.orm.hibernate5.HibernateTransactionManager.beanFactory:Lorg/springframework/beans/factory/BeanFactory;
         1: .line 368
            return
        end local 1 // org.springframework.beans.factory.BeanFactory beanFactory
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    2     1  beanFactory  Lorg/springframework/beans/factory/BeanFactory;
    MethodParameters:
             Name  Flags
      beanFactory  

  public void afterPropertiesSet();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
         0: .line 372
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getSessionFactory:()Lorg/hibernate/SessionFactory;
            ifnonnull 2
         1: .line 373
            new java.lang.IllegalArgumentException
            dup
            ldc "Property 'sessionFactory' is required"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 375
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.entityInterceptor:Ljava/lang/Object;
            instanceof java.lang.String
            ifeq 4
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.beanFactory:Lorg/springframework/beans/factory/BeanFactory;
            ifnonnull 4
         3: .line 376
            new java.lang.IllegalArgumentException
            dup
            ldc "Property 'beanFactory' is required for 'entityInterceptorBeanName'"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 380
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.autodetectDataSource:Z
            ifeq 12
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnonnull 12
         5: .line 381
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getSessionFactory:()Lorg/hibernate/SessionFactory;
            invokestatic org.springframework.orm.hibernate5.SessionFactoryUtils.getDataSource:(Lorg/hibernate/SessionFactory;)Ljavax/sql/DataSource;
            astore 1 /* sfds */
        start local 1 // javax.sql.DataSource sfds
         6: .line 382
            aload 1 /* sfds */
            ifnull 12
         7: .line 384
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 11
         8: .line 385
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Using DataSource ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* sfds */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         9: .line 386
            ldc "] of Hibernate SessionFactory for HibernateTransactionManager"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 385
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        11: .line 388
      StackMap locals: javax.sql.DataSource
      StackMap stack:
            aload 0 /* this */
            aload 1 /* sfds */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.setDataSource:(Ljavax/sql/DataSource;)V
        end local 1 // javax.sql.DataSource sfds
        12: .line 391
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            6   12     1  sfds  Ljavax/sql/DataSource;

  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.hibernate5.HibernateTransactionManager this
         0: .line 396
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.obtainSessionFactory:()Lorg/hibernate/SessionFactory;
            areturn
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;

  protected java.lang.Object doGetTransaction();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
         0: .line 401
            new org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
            dup
            aload 0 /* this */
            invokespecial org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.<init>:(Lorg/springframework/orm/hibernate5/HibernateTransactionManager;)V
            astore 1 /* txObject */
        start local 1 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
         1: .line 402
            aload 1 /* txObject */
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.isNestedTransactionAllowed:()Z
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setSavepointAllowed:(Z)V
         2: .line 404
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.obtainSessionFactory:()Lorg/hibernate/SessionFactory;
            astore 2 /* sessionFactory */
        start local 2 // org.hibernate.SessionFactory sessionFactory
         3: .line 406
            aload 2 /* sessionFactory */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.orm.hibernate5.SessionHolder
         4: .line 405
            astore 3 /* sessionHolder */
        start local 3 // org.springframework.orm.hibernate5.SessionHolder sessionHolder
         5: .line 407
            aload 3 /* sessionHolder */
            ifnull 10
         6: .line 408
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 8
         7: .line 409
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Found thread-bound Session ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* sessionHolder */
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getSession:()Lorg/hibernate/Session;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] for Hibernate 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
         8: .line 411
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.SessionFactory org.springframework.orm.hibernate5.SessionHolder
      StackMap stack:
            aload 1 /* txObject */
            aload 3 /* sessionHolder */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setSessionHolder:(Lorg/springframework/orm/hibernate5/SessionHolder;)V
         9: .line 412
            goto 20
        10: .line 413
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.hibernateManagedSession:Z
            ifeq 20
        11: .line 415
            aload 2 /* sessionFactory */
            invokeinterface org.hibernate.SessionFactory.getCurrentSession:()Lorg/hibernate/Session;
            astore 4 /* session */
        start local 4 // org.hibernate.Session session
        12: .line 416
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 14
        13: .line 417
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Found Hibernate-managed Session ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* session */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] for Spring-managed 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
        14: .line 419
      StackMap locals: org.hibernate.Session
      StackMap stack:
            aload 1 /* txObject */
            aload 4 /* session */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setExistingSession:(Lorg/hibernate/Session;)V
        end local 4 // org.hibernate.Session session
        15: .line 420
            goto 20
        16: .line 421
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.SessionFactory org.springframework.orm.hibernate5.SessionHolder
      StackMap stack: org.hibernate.HibernateException
            astore 4 /* ex */
        start local 4 // org.hibernate.HibernateException ex
        17: .line 422
            new org.springframework.dao.DataAccessResourceFailureException
            dup
        18: .line 423
            ldc "Could not obtain Hibernate-managed Session for Spring-managed transaction"
            aload 4 /* ex */
        19: .line 422
            invokespecial org.springframework.dao.DataAccessResourceFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // org.hibernate.HibernateException ex
        20: .line 427
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnull 24
        21: .line 429
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.getResource:(Ljava/lang/Object;)Ljava/lang/Object;
        22: .line 428
            checkcast org.springframework.jdbc.datasource.ConnectionHolder
            astore 4 /* conHolder */
        start local 4 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        23: .line 430
            aload 1 /* txObject */
            aload 4 /* conHolder */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setConnectionHolder:(Lorg/springframework/jdbc/datasource/ConnectionHolder;)V
        end local 4 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        24: .line 433
      StackMap locals:
      StackMap stack:
            aload 1 /* txObject */
            areturn
        end local 3 // org.springframework.orm.hibernate5.SessionHolder sessionHolder
        end local 2 // org.hibernate.SessionFactory sessionFactory
        end local 1 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   25     0            this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            1   25     1        txObject  Lorg/springframework/orm/hibernate5/HibernateTransactionManager$HibernateTransactionObject;
            3   25     2  sessionFactory  Lorg/hibernate/SessionFactory;
            5   25     3   sessionHolder  Lorg/springframework/orm/hibernate5/SessionHolder;
           12   15     4         session  Lorg/hibernate/Session;
           17   20     4              ex  Lorg/hibernate/HibernateException;
           23   24     4       conHolder  Lorg/springframework/jdbc/datasource/ConnectionHolder;
      Exception table:
        from    to  target  type
          11    15      16  Class org.hibernate.HibernateException

  protected boolean isExistingTransaction(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=3, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 438
            aload 1 /* transaction */
            checkcast org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
         1: .line 439
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.hasSpringManagedTransaction:()Z
            ifne 4
         2: .line 440
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.hibernateManagedSession:Z
            ifeq 3
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.hasHibernateManagedTransaction:()Z
            ifne 4
         3: .line 439
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_1
            ireturn
        end local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    5     1  transaction  Ljava/lang/Object;
            1    5     2     txObject  Lorg/springframework/orm/hibernate5/HibernateTransactionManager$HibernateTransactionObject;
    MethodParameters:
             Name  Flags
      transaction  

  protected void doBegin(java.lang.Object, org.springframework.transaction.TransactionDefinition);
    descriptor: (Ljava/lang/Object;Lorg/springframework/transaction/TransactionDefinition;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=11, args_size=3
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // java.lang.Object transaction
        start local 2 // org.springframework.transaction.TransactionDefinition definition
         0: .line 446
            aload 1 /* transaction */
            checkcast org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
            astore 3 /* txObject */
        start local 3 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
         1: .line 448
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.hasConnectionHolder:()Z
            ifeq 5
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.isSynchronizedWithTransaction:()Z
            ifne 5
         2: .line 449
            new org.springframework.transaction.IllegalTransactionStateException
            dup
         3: .line 450
            ldc "Pre-bound JDBC Connection found! HibernateTransactionManager does not support running within DataSourceTransactionManager if told to manage the DataSource itself. It is recommended to use a single HibernateTransactionManager for all transactions on a single DataSource, no matter whether Hibernate or JDBC access."
         4: .line 449
            invokespecial org.springframework.transaction.IllegalTransactionStateException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 456
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
      StackMap stack:
            aconst_null
            astore 4 /* session */
        start local 4 // org.hibernate.Session session
         6: .line 459
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.hasSessionHolder:()Z
            ifeq 7
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.isSynchronizedWithTransaction:()Z
            ifeq 15
         7: .line 460
      StackMap locals: org.hibernate.Session
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getEntityInterceptor:()Lorg/hibernate/Interceptor;
            astore 5 /* entityInterceptor */
        start local 5 // org.hibernate.Interceptor entityInterceptor
         8: .line 461
            aload 5 /* entityInterceptor */
            ifnull 10
         9: .line 462
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.obtainSessionFactory:()Lorg/hibernate/SessionFactory;
            invokeinterface org.hibernate.SessionFactory.withOptions:()Lorg/hibernate/SessionBuilder;
            aload 5 /* entityInterceptor */
            invokeinterface org.hibernate.SessionBuilder.interceptor:(Lorg/hibernate/Interceptor;)Lorg/hibernate/SessionBuilder;
            invokeinterface org.hibernate.SessionBuilder.openSession:()Lorg/hibernate/Session;
            goto 11
        10: .line 463
      StackMap locals: org.hibernate.Interceptor
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.obtainSessionFactory:()Lorg/hibernate/SessionFactory;
            invokeinterface org.hibernate.SessionFactory.openSession:()Lorg/hibernate/Session;
        11: .line 461
      StackMap locals:
      StackMap stack: org.hibernate.Session
            astore 6 /* newSession */
        start local 6 // org.hibernate.Session newSession
        12: .line 464
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 14
        13: .line 465
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Opened new Session ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* newSession */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] for Hibernate 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
        14: .line 467
      StackMap locals: org.hibernate.Session
      StackMap stack:
            aload 3 /* txObject */
            aload 6 /* newSession */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setSession:(Lorg/hibernate/Session;)V
        end local 6 // org.hibernate.Session newSession
        end local 5 // org.hibernate.Interceptor entityInterceptor
        15: .line 470
      StackMap locals:
      StackMap stack:
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getSession:()Lorg/hibernate/Session;
            astore 4 /* session */
        16: .line 472
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.allowResultAccessAfterCompletion:Z
            ifeq 17
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.isNewSession:()Z
            ifne 17
            iconst_1
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_0
      StackMap locals:
      StackMap stack: int
        18: istore 5 /* holdabilityNeeded */
        start local 5 // boolean holdabilityNeeded
        19: .line 473
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.getIsolationLevel:()I
            iconst_m1
            if_icmpeq 20
            iconst_1
            goto 21
      StackMap locals: int
      StackMap stack:
        20: iconst_0
      StackMap locals:
      StackMap stack: int
        21: istore 6 /* isolationLevelNeeded */
        start local 6 // boolean isolationLevelNeeded
        22: .line 474
            iload 5 /* holdabilityNeeded */
            ifne 23
            iload 6 /* isolationLevelNeeded */
            ifne 23
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
            ifeq 41
        23: .line 475
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.prepareConnection:Z
            ifeq 35
            aload 0 /* this */
            aload 4 /* session */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.isSameConnectionForEntireSession:(Lorg/hibernate/Session;)Z
            ifeq 35
        24: .line 477
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 26
        25: .line 478
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Preparing JDBC Connection of Hibernate Session ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* session */
            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
        26: .line 480
      StackMap locals:
      StackMap stack:
            aload 4 /* session */
            checkcast org.hibernate.engine.spi.SessionImplementor
            invokeinterface org.hibernate.engine.spi.SessionImplementor.connection:()Ljava/sql/Connection;
            astore 7 /* con */
        start local 7 // java.sql.Connection con
        27: .line 481
            aload 7 /* con */
            aload 2 /* definition */
            invokestatic org.springframework.jdbc.datasource.DataSourceUtils.prepareConnectionForTransaction:(Ljava/sql/Connection;Lorg/springframework/transaction/TransactionDefinition;)Ljava/lang/Integer;
            astore 8 /* previousIsolationLevel */
        start local 8 // java.lang.Integer previousIsolationLevel
        28: .line 482
            aload 3 /* txObject */
            aload 8 /* previousIsolationLevel */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setPreviousIsolationLevel:(Ljava/lang/Integer;)V
        29: .line 483
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.allowResultAccessAfterCompletion:Z
            ifeq 41
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.isNewSession:()Z
            ifne 41
        30: .line 484
            aload 7 /* con */
            invokeinterface java.sql.Connection.getHoldability:()I
            istore 9 /* currentHoldability */
        start local 9 // int currentHoldability
        31: .line 485
            iload 9 /* currentHoldability */
            iconst_1
            if_icmpeq 41
        32: .line 486
            aload 3 /* txObject */
            iload 9 /* currentHoldability */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setPreviousHoldability:(Ljava/lang/Integer;)V
        33: .line 487
            aload 7 /* con */
            iconst_1
            invokeinterface java.sql.Connection.setHoldability:(I)V
        end local 9 // int currentHoldability
        end local 8 // java.lang.Integer previousIsolationLevel
        end local 7 // java.sql.Connection con
        34: .line 490
            goto 41
        35: .line 493
      StackMap locals:
      StackMap stack:
            iload 6 /* isolationLevelNeeded */
            ifeq 39
        36: .line 495
            new org.springframework.transaction.InvalidIsolationLevelException
            dup
        37: .line 496
            ldc "HibernateTransactionManager is not allowed to support custom isolation levels: make sure that its 'prepareConnection' flag is on (the default) and that the Hibernate connection release mode is set to 'on_close' (the default for JDBC)."
        38: .line 495
            invokespecial org.springframework.transaction.InvalidIsolationLevelException.<init>:(Ljava/lang/String;)V
            athrow
        39: .line 500
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 41
        40: .line 501
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Not preparing JDBC Connection of Hibernate Session ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* session */
            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
        41: .line 506
      StackMap locals:
      StackMap stack:
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
            ifeq 44
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.isNewSession:()Z
            ifeq 44
        42: .line 508
            aload 4 /* session */
            getstatic org.hibernate.FlushMode.MANUAL:Lorg/hibernate/FlushMode;
            invokeinterface org.hibernate.Session.setFlushMode:(Lorg/hibernate/FlushMode;)V
        43: .line 510
            aload 4 /* session */
            iconst_1
            invokeinterface org.hibernate.Session.setDefaultReadOnly:(Z)V
        44: .line 513
      StackMap locals:
      StackMap stack:
            aload 2 /* definition */
            invokeinterface org.springframework.transaction.TransactionDefinition.isReadOnly:()Z
            ifne 49
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.isNewSession:()Z
            ifne 49
        45: .line 515
            aload 4 /* session */
            invokestatic org.springframework.orm.hibernate5.SessionFactoryUtils.getFlushMode:(Lorg/hibernate/Session;)Lorg/hibernate/FlushMode;
            astore 7 /* flushMode */
        start local 7 // org.hibernate.FlushMode flushMode
        46: .line 516
            getstatic org.hibernate.FlushMode.MANUAL:Lorg/hibernate/FlushMode;
            aload 7 /* flushMode */
            invokevirtual org.hibernate.FlushMode.equals:(Ljava/lang/Object;)Z
            ifeq 49
        47: .line 517
            aload 4 /* session */
            getstatic org.hibernate.FlushMode.AUTO:Lorg/hibernate/FlushMode;
            invokeinterface org.hibernate.Session.setFlushMode:(Lorg/hibernate/FlushMode;)V
        48: .line 518
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            aload 7 /* flushMode */
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.setPreviousFlushMode:(Lorg/hibernate/FlushMode;)V
        end local 7 // org.hibernate.FlushMode flushMode
        49: .line 525
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* definition */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.determineTimeout:(Lorg/springframework/transaction/TransactionDefinition;)I
            istore 8 /* timeout */
        start local 8 // int timeout
        50: .line 526
            iload 8 /* timeout */
            iconst_m1
            if_icmpeq 55
        51: .line 529
            aload 4 /* session */
            invokeinterface org.hibernate.Session.getTransaction:()Lorg/hibernate/Transaction;
            astore 7 /* hibTx */
        start local 7 // org.hibernate.Transaction hibTx
        52: .line 530
            aload 7 /* hibTx */
            iload 8 /* timeout */
            invokeinterface org.hibernate.Transaction.setTimeout:(I)V
        53: .line 531
            aload 7 /* hibTx */
            invokeinterface org.hibernate.Transaction.begin:()V
        54: .line 532
            goto 56
        end local 7 // org.hibernate.Transaction hibTx
        55: .line 535
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager java.lang.Object org.springframework.transaction.TransactionDefinition org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.Session int int top int
      StackMap stack:
            aload 4 /* session */
            invokeinterface org.hibernate.Session.beginTransaction:()Lorg/hibernate/Transaction;
            astore 7 /* hibTx */
        start local 7 // org.hibernate.Transaction hibTx
        56: .line 539
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager java.lang.Object org.springframework.transaction.TransactionDefinition org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.Session int int org.hibernate.Transaction int
      StackMap stack:
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            aload 7 /* hibTx */
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.setTransaction:(Lorg/hibernate/Transaction;)V
        57: .line 542
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnull 66
        58: .line 543
            aload 4 /* session */
            checkcast org.hibernate.engine.spi.SessionImplementor
            astore 9 /* sessionImpl */
        start local 9 // org.hibernate.engine.spi.SessionImplementor sessionImpl
        59: .line 547
            new org.springframework.jdbc.datasource.ConnectionHolder
            dup
            aload 9 /* sessionImpl */
            invokedynamic getConnection(Lorg/hibernate/engine/spi/SessionImplementor;)Lorg/springframework/jdbc/datasource/ConnectionHandle;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()Ljava/sql/Connection;
                  org/springframework/orm/hibernate5/HibernateTransactionManager.lambda$0(Lorg/hibernate/engine/spi/SessionImplementor;)Ljava/sql/Connection; (6)
                  ()Ljava/sql/Connection;
            invokespecial org.springframework.jdbc.datasource.ConnectionHolder.<init>:(Lorg/springframework/jdbc/datasource/ConnectionHandle;)V
            astore 10 /* conHolder */
        start local 10 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        60: .line 548
            iload 8 /* timeout */
            iconst_m1
            if_icmpeq 62
        61: .line 549
            aload 10 /* conHolder */
            iload 8 /* timeout */
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.setTimeoutInSeconds:(I)V
        62: .line 551
      StackMap locals: org.hibernate.engine.spi.SessionImplementor org.springframework.jdbc.datasource.ConnectionHolder
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 64
        63: .line 552
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Exposing Hibernate transaction as JDBC ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 10 /* conHolder */
            invokevirtual org.springframework.jdbc.datasource.ConnectionHolder.getConnectionHandle:()Lorg/springframework/jdbc/datasource/ConnectionHandle;
            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
        64: .line 554
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            aload 10 /* conHolder */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
        65: .line 555
            aload 3 /* txObject */
            aload 10 /* conHolder */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setConnectionHolder:(Lorg/springframework/jdbc/datasource/ConnectionHolder;)V
        end local 10 // org.springframework.jdbc.datasource.ConnectionHolder conHolder
        end local 9 // org.hibernate.engine.spi.SessionImplementor sessionImpl
        66: .line 559
      StackMap locals:
      StackMap stack:
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.isNewSessionHolder:()Z
            ifeq 68
        67: .line 560
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.obtainSessionFactory:()Lorg/hibernate/SessionFactory;
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
        68: .line 562
      StackMap locals:
      StackMap stack:
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            iconst_1
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.setSynchronizedWithTransaction:(Z)V
        end local 8 // int timeout
        end local 7 // org.hibernate.Transaction hibTx
        end local 6 // boolean isolationLevelNeeded
        end local 5 // boolean holdabilityNeeded
        69: .line 563
            goto 86
        70: .line 565
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager java.lang.Object org.springframework.transaction.TransactionDefinition org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.Session
      StackMap stack: java.lang.Throwable
            astore 5 /* ex */
        start local 5 // java.lang.Throwable ex
        71: .line 566
            aload 3 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.isNewSession:()Z
            ifeq 85
        72: .line 568
            aload 4 /* session */
            ifnull 83
            aload 4 /* session */
            invokeinterface org.hibernate.Session.getTransaction:()Lorg/hibernate/Transaction;
            invokeinterface org.hibernate.Transaction.getStatus:()Lorg/hibernate/resource/transaction/spi/TransactionStatus;
            getstatic org.hibernate.resource.transaction.spi.TransactionStatus.ACTIVE:Lorg/hibernate/resource/transaction/spi/TransactionStatus;
            if_acmpne 83
        73: .line 569
            aload 4 /* session */
            invokeinterface org.hibernate.Session.getTransaction:()Lorg/hibernate/Transaction;
            invokeinterface org.hibernate.Transaction.rollback:()V
        74: .line 571
            goto 83
        75: .line 572
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager java.lang.Object org.springframework.transaction.TransactionDefinition org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.Session java.lang.Throwable
      StackMap stack: java.lang.Throwable
            pop
        76: .line 573
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Could not rollback Session after failed transaction begin"
            aload 5 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        77: .line 576
            aload 4 /* session */
            invokestatic org.springframework.orm.hibernate5.SessionFactoryUtils.closeSession:(Lorg/hibernate/Session;)V
        78: .line 577
            aload 3 /* txObject */
            aconst_null
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setSessionHolder:(Lorg/springframework/orm/hibernate5/SessionHolder;)V
            goto 85
        79: .line 575
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
        80: .line 576
            aload 4 /* session */
            invokestatic org.springframework.orm.hibernate5.SessionFactoryUtils.closeSession:(Lorg/hibernate/Session;)V
        81: .line 577
            aload 3 /* txObject */
            aconst_null
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setSessionHolder:(Lorg/springframework/orm/hibernate5/SessionHolder;)V
        82: .line 578
            aload 6
            athrow
        83: .line 576
      StackMap locals:
      StackMap stack:
            aload 4 /* session */
            invokestatic org.springframework.orm.hibernate5.SessionFactoryUtils.closeSession:(Lorg/hibernate/Session;)V
        84: .line 577
            aload 3 /* txObject */
            aconst_null
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setSessionHolder:(Lorg/springframework/orm/hibernate5/SessionHolder;)V
        85: .line 580
      StackMap locals:
      StackMap stack:
            new org.springframework.transaction.CannotCreateTransactionException
            dup
            ldc "Could not open Hibernate Session for transaction"
            aload 5 /* ex */
            invokespecial org.springframework.transaction.CannotCreateTransactionException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.Throwable ex
        86: .line 582
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.hibernate.Session session
        end local 3 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
        end local 2 // org.springframework.transaction.TransactionDefinition definition
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   87     0                    this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0   87     1             transaction  Ljava/lang/Object;
            0   87     2              definition  Lorg/springframework/transaction/TransactionDefinition;
            1   87     3                txObject  Lorg/springframework/orm/hibernate5/HibernateTransactionManager$HibernateTransactionObject;
            6   87     4                 session  Lorg/hibernate/Session;
            8   15     5       entityInterceptor  Lorg/hibernate/Interceptor;
           12   15     6              newSession  Lorg/hibernate/Session;
           19   69     5       holdabilityNeeded  Z
           22   69     6    isolationLevelNeeded  Z
           27   34     7                     con  Ljava/sql/Connection;
           28   34     8  previousIsolationLevel  Ljava/lang/Integer;
           31   34     9      currentHoldability  I
           46   49     7               flushMode  Lorg/hibernate/FlushMode;
           52   55     7                   hibTx  Lorg/hibernate/Transaction;
           56   69     7                   hibTx  Lorg/hibernate/Transaction;
           50   69     8                 timeout  I
           59   66     9             sessionImpl  Lorg/hibernate/engine/spi/SessionImplementor;
           60   66    10               conHolder  Lorg/springframework/jdbc/datasource/ConnectionHolder;
           71   86     5                      ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           6    69      70  Class java.lang.Throwable
          72    74      75  Class java.lang.Throwable
          72    77      79  any
    MethodParameters:
             Name  Flags
      transaction  
      definition   

  protected java.lang.Object doSuspend(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 586
            aload 1 /* transaction */
            checkcast org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
         1: .line 587
            aload 2 /* txObject */
            aconst_null
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setSessionHolder:(Lorg/springframework/orm/hibernate5/SessionHolder;)V
         2: .line 589
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.obtainSessionFactory:()Lorg/hibernate/SessionFactory;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.orm.hibernate5.SessionHolder
         3: .line 588
            astore 3 /* sessionHolder */
        start local 3 // org.springframework.orm.hibernate5.SessionHolder sessionHolder
         4: .line 590
            aload 2 /* txObject */
            aconst_null
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setConnectionHolder:(Lorg/springframework/jdbc/datasource/ConnectionHolder;)V
         5: .line 591
            aconst_null
            astore 4 /* connectionHolder */
        start local 4 // org.springframework.jdbc.datasource.ConnectionHolder connectionHolder
         6: .line 592
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnull 8
         7: .line 593
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.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 595
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.springframework.orm.hibernate5.SessionHolder org.springframework.jdbc.datasource.ConnectionHolder
      StackMap stack:
            new org.springframework.orm.hibernate5.HibernateTransactionManager$SuspendedResourcesHolder
            dup
            aload 3 /* sessionHolder */
            aload 4 /* connectionHolder */
            invokespecial org.springframework.orm.hibernate5.HibernateTransactionManager$SuspendedResourcesHolder.<init>:(Lorg/springframework/orm/hibernate5/SessionHolder;Lorg/springframework/jdbc/datasource/ConnectionHolder;)V
            areturn
        end local 4 // org.springframework.jdbc.datasource.ConnectionHolder connectionHolder
        end local 3 // org.springframework.orm.hibernate5.SessionHolder sessionHolder
        end local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    9     0              this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    9     1       transaction  Ljava/lang/Object;
            1    9     2          txObject  Lorg/springframework/orm/hibernate5/HibernateTransactionManager$HibernateTransactionObject;
            4    9     3     sessionHolder  Lorg/springframework/orm/hibernate5/SessionHolder;
            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=5, args_size=3
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // java.lang.Object transaction
        start local 2 // java.lang.Object suspendedResources
         0: .line 600
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.obtainSessionFactory:()Lorg/hibernate/SessionFactory;
            astore 3 /* sessionFactory */
        start local 3 // org.hibernate.SessionFactory sessionFactory
         1: .line 602
            aload 2 /* suspendedResources */
            checkcast org.springframework.orm.hibernate5.HibernateTransactionManager$SuspendedResourcesHolder
            astore 4 /* resourcesHolder */
        start local 4 // org.springframework.orm.hibernate5.HibernateTransactionManager$SuspendedResourcesHolder resourcesHolder
         2: .line 603
            aload 3 /* sessionFactory */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.hasResource:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 606
            aload 3 /* sessionFactory */
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 608
      StackMap locals: org.hibernate.SessionFactory org.springframework.orm.hibernate5.HibernateTransactionManager$SuspendedResourcesHolder
      StackMap stack:
            aload 3 /* sessionFactory */
            aload 4 /* resourcesHolder */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$SuspendedResourcesHolder.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 609
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnull 7
            aload 4 /* resourcesHolder */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$SuspendedResourcesHolder.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            ifnull 7
         6: .line 610
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            aload 4 /* resourcesHolder */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$SuspendedResourcesHolder.getConnectionHolder:()Lorg/springframework/jdbc/datasource/ConnectionHolder;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.bindResource:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 612
      StackMap locals:
      StackMap stack:
            return
        end local 4 // org.springframework.orm.hibernate5.HibernateTransactionManager$SuspendedResourcesHolder resourcesHolder
        end local 3 // org.hibernate.SessionFactory sessionFactory
        end local 2 // java.lang.Object suspendedResources
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    8     0                this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    8     1         transaction  Ljava/lang/Object;
            0    8     2  suspendedResources  Ljava/lang/Object;
            1    8     3      sessionFactory  Lorg/hibernate/SessionFactory;
            2    8     4     resourcesHolder  Lorg/springframework/orm/hibernate5/HibernateTransactionManager$SuspendedResourcesHolder;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
                    Name  Flags
      transaction         
      suspendedResources  

  protected void doCommit(org.springframework.transaction.support.DefaultTransactionStatus);
    descriptor: (Lorg/springframework/transaction/support/DefaultTransactionStatus;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 616
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            checkcast org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
         1: .line 617
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getTransaction:()Lorg/hibernate/Transaction;
            astore 3 /* hibTx */
        start local 3 // org.hibernate.Transaction hibTx
         2: .line 618
            aload 3 /* hibTx */
            ifnull 3
            iconst_1
            goto 4
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.Transaction
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: ldc "No Hibernate transaction"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         5: .line 619
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 9
         6: .line 620
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Committing Hibernate transaction on Session ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         7: .line 621
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getSession:()Lorg/hibernate/Session;
            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;
         8: .line 620
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         9: .line 625
      StackMap locals:
      StackMap stack:
            aload 3 /* hibTx */
            invokeinterface org.hibernate.Transaction.commit:()V
        10: .line 626
            goto 19
        11: .line 627
      StackMap locals:
      StackMap stack: org.hibernate.TransactionException
            astore 4 /* ex */
        start local 4 // org.hibernate.TransactionException ex
        12: .line 629
            new org.springframework.transaction.TransactionSystemException
            dup
            ldc "Could not commit Hibernate transaction"
            aload 4 /* ex */
            invokespecial org.springframework.transaction.TransactionSystemException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // org.hibernate.TransactionException ex
        13: .line 631
      StackMap locals:
      StackMap stack: org.hibernate.HibernateException
            astore 4 /* ex */
        start local 4 // org.hibernate.HibernateException ex
        14: .line 633
            aload 0 /* this */
            aload 4 /* ex */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.convertHibernateAccessException:(Lorg/hibernate/HibernateException;)Lorg/springframework/dao/DataAccessException;
            athrow
        end local 4 // org.hibernate.HibernateException ex
        15: .line 635
      StackMap locals:
      StackMap stack: javax.persistence.PersistenceException
            astore 4 /* ex */
        start local 4 // javax.persistence.PersistenceException ex
        16: .line 636
            aload 4 /* ex */
            invokevirtual javax.persistence.PersistenceException.getCause:()Ljava/lang/Throwable;
            instanceof org.hibernate.HibernateException
            ifeq 18
        17: .line 637
            aload 0 /* this */
            aload 4 /* ex */
            invokevirtual javax.persistence.PersistenceException.getCause:()Ljava/lang/Throwable;
            checkcast org.hibernate.HibernateException
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.convertHibernateAccessException:(Lorg/hibernate/HibernateException;)Lorg/springframework/dao/DataAccessException;
            athrow
        18: .line 639
      StackMap locals: javax.persistence.PersistenceException
      StackMap stack:
            aload 4 /* ex */
            athrow
        end local 4 // javax.persistence.PersistenceException ex
        19: .line 641
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.hibernate.Transaction hibTx
        end local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   20     0      this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0   20     1    status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            1   20     2  txObject  Lorg/springframework/orm/hibernate5/HibernateTransactionManager$HibernateTransactionObject;
            2   20     3     hibTx  Lorg/hibernate/Transaction;
           12   13     4        ex  Lorg/hibernate/TransactionException;
           14   15     4        ex  Lorg/hibernate/HibernateException;
           16   19     4        ex  Ljavax/persistence/PersistenceException;
      Exception table:
        from    to  target  type
           9    10      11  Class org.hibernate.TransactionException
           9    10      13  Class org.hibernate.HibernateException
           9    10      15  Class javax.persistence.PersistenceException
    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=6, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 645
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            checkcast org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
         1: .line 646
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getTransaction:()Lorg/hibernate/Transaction;
            astore 3 /* hibTx */
        start local 3 // org.hibernate.Transaction hibTx
         2: .line 647
            aload 3 /* hibTx */
            ifnull 3
            iconst_1
            goto 4
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.Transaction
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: ldc "No Hibernate transaction"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         5: .line 648
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 9
         6: .line 649
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Rolling back Hibernate transaction on Session ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         7: .line 650
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getSession:()Lorg/hibernate/Session;
            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;
         8: .line 649
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         9: .line 654
      StackMap locals:
      StackMap stack:
            aload 3 /* hibTx */
            invokeinterface org.hibernate.Transaction.rollback:()V
        10: .line 655
            goto 23
        11: .line 656
      StackMap locals:
      StackMap stack: org.hibernate.TransactionException
            astore 4 /* ex */
        start local 4 // org.hibernate.TransactionException ex
        12: .line 657
            new org.springframework.transaction.TransactionSystemException
            dup
            ldc "Could not roll back Hibernate transaction"
            aload 4 /* ex */
            invokespecial org.springframework.transaction.TransactionSystemException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // org.hibernate.TransactionException ex
        13: .line 659
      StackMap locals:
      StackMap stack: org.hibernate.HibernateException
            astore 4 /* ex */
        start local 4 // org.hibernate.HibernateException ex
        14: .line 661
            aload 0 /* this */
            aload 4 /* ex */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.convertHibernateAccessException:(Lorg/hibernate/HibernateException;)Lorg/springframework/dao/DataAccessException;
            athrow
        end local 4 // org.hibernate.HibernateException ex
        15: .line 663
      StackMap locals:
      StackMap stack: javax.persistence.PersistenceException
            astore 4 /* ex */
        start local 4 // javax.persistence.PersistenceException ex
        16: .line 664
            aload 4 /* ex */
            invokevirtual javax.persistence.PersistenceException.getCause:()Ljava/lang/Throwable;
            instanceof org.hibernate.HibernateException
            ifeq 18
        17: .line 665
            aload 0 /* this */
            aload 4 /* ex */
            invokevirtual javax.persistence.PersistenceException.getCause:()Ljava/lang/Throwable;
            checkcast org.hibernate.HibernateException
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.convertHibernateAccessException:(Lorg/hibernate/HibernateException;)Lorg/springframework/dao/DataAccessException;
            athrow
        18: .line 667
      StackMap locals: javax.persistence.PersistenceException
      StackMap stack:
            aload 4 /* ex */
            athrow
        end local 4 // javax.persistence.PersistenceException ex
        19: .line 669
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager org.springframework.transaction.support.DefaultTransactionStatus org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.Transaction
      StackMap stack: java.lang.Throwable
            astore 5
        20: .line 670
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.isNewSession:()Z
            ifne 22
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.hibernateManagedSession:Z
            ifne 22
        21: .line 673
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getSession:()Lorg/hibernate/Session;
            invokeinterface org.hibernate.Session.clear:()V
        22: .line 675
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager org.springframework.transaction.support.DefaultTransactionStatus org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.Transaction top java.lang.Throwable
      StackMap stack:
            aload 5
            athrow
        23: .line 670
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager org.springframework.transaction.support.DefaultTransactionStatus org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.Transaction
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.isNewSession:()Z
            ifne 25
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.hibernateManagedSession:Z
            ifne 25
        24: .line 673
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getSession:()Lorg/hibernate/Session;
            invokeinterface org.hibernate.Session.clear:()V
        25: .line 676
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.hibernate.Transaction hibTx
        end local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   26     0      this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0   26     1    status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            1   26     2  txObject  Lorg/springframework/orm/hibernate5/HibernateTransactionManager$HibernateTransactionObject;
            2   26     3     hibTx  Lorg/hibernate/Transaction;
           12   13     4        ex  Lorg/hibernate/TransactionException;
           14   15     4        ex  Lorg/hibernate/HibernateException;
           16   19     4        ex  Ljavax/persistence/PersistenceException;
      Exception table:
        from    to  target  type
           9    10      11  Class org.hibernate.TransactionException
           9    10      13  Class org.hibernate.HibernateException
           9    10      15  Class javax.persistence.PersistenceException
           9    19      19  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.hibernate5.HibernateTransactionManager this
        start local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
         0: .line 680
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.getTransaction:()Ljava/lang/Object;
            checkcast org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
         1: .line 681
            aload 1 /* status */
            invokevirtual org.springframework.transaction.support.DefaultTransactionStatus.isDebug:()Z
            ifeq 5
         2: .line 682
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Setting Hibernate transaction on Session ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         3: .line 683
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getSession:()Lorg/hibernate/Session;
            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 682
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         5: .line 685
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.setRollbackOnly:()V
         6: .line 686
            return
        end local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
        end local 1 // org.springframework.transaction.support.DefaultTransactionStatus status
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    7     1    status  Lorg/springframework/transaction/support/DefaultTransactionStatus;
            1    7     2  txObject  Lorg/springframework/orm/hibernate5/HibernateTransactionManager$HibernateTransactionObject;
    MethodParameters:
        Name  Flags
      status  

  protected void doCleanupAfterCompletion(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // java.lang.Object transaction
         0: .line 691
            aload 1 /* transaction */
            checkcast org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
            astore 2 /* txObject */
        start local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
         1: .line 694
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.isNewSessionHolder:()Z
            ifeq 3
         2: .line 695
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.obtainSessionFactory:()Lorg/hibernate/SessionFactory;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 699
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            ifnull 5
         4: .line 700
            aload 0 /* this */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.getDataSource:()Ljavax/sql/DataSource;
            invokestatic org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 703
      StackMap locals:
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getSession:()Lorg/hibernate/Session;
            astore 3 /* session */
        start local 3 // org.hibernate.Session session
         6: .line 704
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.prepareConnection:Z
            ifeq 18
            aload 0 /* this */
            aload 3 /* session */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.isPhysicallyConnected:(Lorg/hibernate/Session;)Z
            ifeq 18
         7: .line 709
            aload 3 /* session */
            checkcast org.hibernate.engine.spi.SessionImplementor
            invokeinterface org.hibernate.engine.spi.SessionImplementor.connection:()Ljava/sql/Connection;
            astore 4 /* con */
        start local 4 // java.sql.Connection con
         8: .line 710
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getPreviousHoldability:()Ljava/lang/Integer;
            astore 5 /* previousHoldability */
        start local 5 // java.lang.Integer previousHoldability
         9: .line 711
            aload 5 /* previousHoldability */
            ifnull 11
        10: .line 712
            aload 4 /* con */
            aload 5 /* previousHoldability */
            invokevirtual java.lang.Integer.intValue:()I
            invokeinterface java.sql.Connection.setHoldability:(I)V
        11: .line 714
      StackMap locals: org.hibernate.Session java.sql.Connection java.lang.Integer
      StackMap stack:
            aload 4 /* con */
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getPreviousIsolationLevel:()Ljava/lang/Integer;
            invokestatic org.springframework.jdbc.datasource.DataSourceUtils.resetConnectionAfterTransaction:(Ljava/sql/Connection;Ljava/lang/Integer;)V
        end local 5 // java.lang.Integer previousHoldability
        end local 4 // java.sql.Connection con
        12: .line 715
            goto 18
        13: .line 716
      StackMap locals: org.springframework.orm.hibernate5.HibernateTransactionManager java.lang.Object org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject org.hibernate.Session
      StackMap stack: org.hibernate.HibernateException
            astore 4 /* ex */
        start local 4 // org.hibernate.HibernateException ex
        14: .line 717
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Could not access JDBC Connection of Hibernate Session"
            aload 4 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 4 // org.hibernate.HibernateException ex
        15: goto 18
        16: .line 719
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4 /* ex */
        start local 4 // java.lang.Throwable ex
        17: .line 720
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            ldc "Could not reset JDBC Connection after transaction"
            aload 4 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 4 // java.lang.Throwable ex
        18: .line 724
      StackMap locals:
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.isNewSession:()Z
            ifeq 23
        19: .line 725
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 21
        20: .line 726
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Closing Hibernate Session ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* session */
            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
        21: .line 728
      StackMap locals:
      StackMap stack:
            aload 3 /* session */
            invokestatic org.springframework.orm.hibernate5.SessionFactoryUtils.closeSession:(Lorg/hibernate/Session;)V
        22: .line 729
            goto 29
        23: .line 731
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 25
        24: .line 732
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Not closing pre-bound Hibernate Session ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* session */
            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
        25: .line 734
      StackMap locals:
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getPreviousFlushMode:()Lorg/hibernate/FlushMode;
            ifnull 27
        26: .line 735
            aload 3 /* session */
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.getPreviousFlushMode:()Lorg/hibernate/FlushMode;
            invokeinterface org.hibernate.Session.setFlushMode:(Lorg/hibernate/FlushMode;)V
        27: .line 737
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.allowResultAccessAfterCompletion:Z
            ifne 29
            aload 0 /* this */
            getfield org.springframework.orm.hibernate5.HibernateTransactionManager.hibernateManagedSession:Z
            ifne 29
        28: .line 738
            aload 0 /* this */
            aload 3 /* session */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager.disconnectOnCompletion:(Lorg/hibernate/Session;)V
        29: .line 741
      StackMap locals:
      StackMap stack:
            aload 2 /* txObject */
            invokevirtual org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject.getSessionHolder:()Lorg/springframework/orm/hibernate5/SessionHolder;
            invokevirtual org.springframework.orm.hibernate5.SessionHolder.clear:()V
        30: .line 742
            return
        end local 3 // org.hibernate.Session session
        end local 2 // org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject txObject
        end local 1 // java.lang.Object transaction
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   31     0                 this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0   31     1          transaction  Ljava/lang/Object;
            1   31     2             txObject  Lorg/springframework/orm/hibernate5/HibernateTransactionManager$HibernateTransactionObject;
            6   31     3              session  Lorg/hibernate/Session;
            8   12     4                  con  Ljava/sql/Connection;
            9   12     5  previousHoldability  Ljava/lang/Integer;
           14   15     4                   ex  Lorg/hibernate/HibernateException;
           17   18     4                   ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           7    12      13  Class org.hibernate.HibernateException
           7    12      16  Class java.lang.Throwable
    MethodParameters:
             Name  Flags
      transaction  

  protected void disconnectOnCompletion(org.hibernate.Session);
    descriptor: (Lorg/hibernate/Session;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // org.hibernate.Session session
         0: .line 753
            aload 1 /* session */
            invokeinterface org.hibernate.Session.disconnect:()Ljava/sql/Connection;
            pop
         1: .line 754
            return
        end local 1 // org.hibernate.Session session
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    2     1  session  Lorg/hibernate/Session;
    MethodParameters:
         Name  Flags
      session  

  protected boolean isSameConnectionForEntireSession(org.hibernate.Session);
    descriptor: (Lorg/hibernate/Session;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // org.hibernate.Session session
         0: .line 767
            aload 1 /* session */
            instanceof org.hibernate.engine.spi.SessionImplementor
            ifne 2
         1: .line 769
            iconst_1
            ireturn
         2: .line 772
      StackMap locals:
      StackMap stack:
            aload 1 /* session */
            checkcast org.hibernate.engine.spi.SessionImplementor
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getJdbcCoordinator:()Lorg/hibernate/engine/jdbc/spi/JdbcCoordinator;
            invokeinterface org.hibernate.engine.jdbc.spi.JdbcCoordinator.getConnectionReleaseMode:()Lorg/hibernate/ConnectionReleaseMode;
         3: .line 771
            astore 2 /* releaseMode */
        start local 2 // org.hibernate.ConnectionReleaseMode releaseMode
         4: .line 773
            getstatic org.hibernate.ConnectionReleaseMode.ON_CLOSE:Lorg/hibernate/ConnectionReleaseMode;
            aload 2 /* releaseMode */
            invokevirtual org.hibernate.ConnectionReleaseMode.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 2 // org.hibernate.ConnectionReleaseMode releaseMode
        end local 1 // org.hibernate.Session session
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    5     1      session  Lorg/hibernate/Session;
            4    5     2  releaseMode  Lorg/hibernate/ConnectionReleaseMode;
    MethodParameters:
         Name  Flags
      session  

  protected boolean isPhysicallyConnected(org.hibernate.Session);
    descriptor: (Lorg/hibernate/Session;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // org.hibernate.Session session
         0: .line 783
            aload 1 /* session */
            instanceof org.hibernate.engine.spi.SessionImplementor
            ifne 2
         1: .line 785
            aload 1 /* session */
            invokeinterface org.hibernate.Session.isConnected:()Z
            ireturn
         2: .line 787
      StackMap locals:
      StackMap stack:
            aload 1 /* session */
            checkcast org.hibernate.engine.spi.SessionImplementor
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getJdbcCoordinator:()Lorg/hibernate/engine/jdbc/spi/JdbcCoordinator;
            invokeinterface org.hibernate.engine.jdbc.spi.JdbcCoordinator.getLogicalConnection:()Lorg/hibernate/resource/jdbc/spi/LogicalConnectionImplementor;
            invokeinterface org.hibernate.resource.jdbc.spi.LogicalConnectionImplementor.isPhysicallyConnected:()Z
            ireturn
        end local 1 // org.hibernate.Session session
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    3     1  session  Lorg/hibernate/Session;
    MethodParameters:
         Name  Flags
      session  

  protected org.springframework.dao.DataAccessException convertHibernateAccessException(org.hibernate.HibernateException);
    descriptor: (Lorg/hibernate/HibernateException;)Lorg/springframework/dao/DataAccessException;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
        start local 1 // org.hibernate.HibernateException ex
         0: .line 801
            aload 1 /* ex */
            invokestatic org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException:(Lorg/hibernate/HibernateException;)Lorg/springframework/dao/DataAccessException;
            areturn
        end local 1 // org.hibernate.HibernateException ex
        end local 0 // org.springframework.orm.hibernate5.HibernateTransactionManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/orm/hibernate5/HibernateTransactionManager;
            0    1     1    ex  Lorg/hibernate/HibernateException;
    MethodParameters:
      Name  Flags
      ex    

  private static java.sql.Connection lambda$0(org.hibernate.engine.spi.SessionImplementor);
    descriptor: (Lorg/hibernate/engine/spi/SessionImplementor;)Ljava/sql/Connection;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 547
            aload 0
            invokeinterface org.hibernate.engine.spi.SessionImplementor.connection:()Ljava/sql/Connection;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "HibernateTransactionManager.java"
NestMembers:
  org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject  org.springframework.orm.hibernate5.HibernateTransactionManager$SuspendedResourcesHolder
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  private HibernateTransactionObject = org.springframework.orm.hibernate5.HibernateTransactionManager$HibernateTransactionObject of org.springframework.orm.hibernate5.HibernateTransactionManager
  private final SuspendedResourcesHolder = org.springframework.orm.hibernate5.HibernateTransactionManager$SuspendedResourcesHolder of org.springframework.orm.hibernate5.HibernateTransactionManager