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

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

  private static java.lang.reflect.Method getFlushMode;
    descriptor: Ljava/lang/reflect/Method;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=1, args_size=0
         0: .line 94
            ldc Lorg/springframework/orm/hibernate5/SessionFactoryUtils;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putstatic org.springframework.orm.hibernate5.SessionFactoryUtils.logger:Lorg/apache/commons/logging/Log;
         1: .line 102
            ldc Lorg/hibernate/Session;
            ldc "getHibernateFlushMode"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            putstatic org.springframework.orm.hibernate5.SessionFactoryUtils.getFlushMode:Ljava/lang/reflect/Method;
         2: .line 103
            goto 8
         3: .line 104
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            pop
         4: .line 107
            ldc Lorg/hibernate/Session;
            ldc "getFlushMode"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            putstatic org.springframework.orm.hibernate5.SessionFactoryUtils.getFlushMode:Ljava/lang/reflect/Method;
         5: .line 108
            goto 8
         6: .line 109
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            astore 0 /* ex2 */
        start local 0 // java.lang.NoSuchMethodException ex2
         7: .line 110
            new java.lang.IllegalStateException
            dup
            ldc "No compatible Hibernate getFlushMode signature found"
            aload 0 /* ex2 */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 0 // java.lang.NoSuchMethodException ex2
         8: .line 114
      StackMap locals:
      StackMap stack:
            ldc Lorg/hibernate/FlushMode;
            getstatic org.springframework.orm.hibernate5.SessionFactoryUtils.getFlushMode:Ljava/lang/reflect/Method;
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            if_acmpne 9
            iconst_1
            goto 10
      StackMap locals:
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: ldc "Could not find Hibernate getFlushMode method"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
        11: .line 115
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            7    8     0   ex2  Ljava/lang/NoSuchMethodException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.NoSuchMethodException
           4     5       6  Class java.lang.NoSuchMethodException

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

  static org.hibernate.FlushMode getFlushMode(org.hibernate.Session);
    descriptor: (Lorg/hibernate/Session;)Lorg/hibernate/FlushMode;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.hibernate.Session session
         0: .line 125
            getstatic org.springframework.orm.hibernate5.SessionFactoryUtils.getFlushMode:Ljava/lang/reflect/Method;
            aload 0 /* session */
            invokestatic org.springframework.util.ReflectionUtils.invokeMethod:(Ljava/lang/reflect/Method;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.hibernate.FlushMode
            astore 1 /* flushMode */
        start local 1 // org.hibernate.FlushMode flushMode
         1: .line 126
            aload 1 /* flushMode */
            ifnull 2
            iconst_1
            goto 3
      StackMap locals: org.hibernate.FlushMode
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "No FlushMode from Session"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         4: .line 127
            aload 1 /* flushMode */
            areturn
        end local 1 // org.hibernate.FlushMode flushMode
        end local 0 // org.hibernate.Session session
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0    session  Lorg/hibernate/Session;
            1    5     1  flushMode  Lorg/hibernate/FlushMode;
    MethodParameters:
         Name  Flags
      session  

  static void flush(org.hibernate.Session, boolean);
    descriptor: (Lorg/hibernate/Session;Z)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.hibernate.Session session
        start local 1 // boolean synch
         0: .line 140
            iload 1 /* synch */
            ifeq 3
         1: .line 141
            getstatic org.springframework.orm.hibernate5.SessionFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            ldc "Flushing Hibernate Session on transaction synchronization"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         2: .line 142
            goto 4
         3: .line 144
      StackMap locals:
      StackMap stack:
            getstatic org.springframework.orm.hibernate5.SessionFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            ldc "Flushing Hibernate Session on explicit request"
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
         4: .line 147
      StackMap locals:
      StackMap stack:
            aload 0 /* session */
            invokeinterface org.hibernate.Session.flush:()V
         5: .line 148
            goto 12
         6: .line 149
      StackMap locals:
      StackMap stack: org.hibernate.HibernateException
            astore 2 /* ex */
        start local 2 // org.hibernate.HibernateException ex
         7: .line 150
            aload 2 /* ex */
            invokestatic org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException:(Lorg/hibernate/HibernateException;)Lorg/springframework/dao/DataAccessException;
            athrow
        end local 2 // org.hibernate.HibernateException ex
         8: .line 152
      StackMap locals:
      StackMap stack: javax.persistence.PersistenceException
            astore 2 /* ex */
        start local 2 // javax.persistence.PersistenceException ex
         9: .line 153
            aload 2 /* ex */
            invokevirtual javax.persistence.PersistenceException.getCause:()Ljava/lang/Throwable;
            instanceof org.hibernate.HibernateException
            ifeq 11
        10: .line 154
            aload 2 /* ex */
            invokevirtual javax.persistence.PersistenceException.getCause:()Ljava/lang/Throwable;
            checkcast org.hibernate.HibernateException
            invokestatic org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException:(Lorg/hibernate/HibernateException;)Lorg/springframework/dao/DataAccessException;
            athrow
        11: .line 156
      StackMap locals: javax.persistence.PersistenceException
      StackMap stack:
            aload 2 /* ex */
            athrow
        end local 2 // javax.persistence.PersistenceException ex
        12: .line 159
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean synch
        end local 0 // org.hibernate.Session session
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0  session  Lorg/hibernate/Session;
            0   13     1    synch  Z
            7    8     2       ex  Lorg/hibernate/HibernateException;
            9   12     2       ex  Ljavax/persistence/PersistenceException;
      Exception table:
        from    to  target  type
           4     5       6  Class org.hibernate.HibernateException
           4     5       8  Class javax.persistence.PersistenceException
    Exceptions:
      throws org.springframework.dao.DataAccessException
    MethodParameters:
         Name  Flags
      session  
      synch    

  public static void closeSession(org.hibernate.Session);
    descriptor: (Lorg/hibernate/Session;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.hibernate.Session session
         0: .line 168
            aload 0 /* session */
            ifnull 8
         1: .line 170
            aload 0 /* session */
            invokeinterface org.hibernate.Session.close:()V
         2: .line 171
            goto 8
         3: .line 172
      StackMap locals:
      StackMap stack: org.hibernate.HibernateException
            astore 1 /* ex */
        start local 1 // org.hibernate.HibernateException ex
         4: .line 173
            getstatic org.springframework.orm.hibernate5.SessionFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            ldc "Could not close Hibernate Session"
            aload 1 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 1 // org.hibernate.HibernateException ex
         5: goto 8
         6: .line 175
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 1 /* ex */
        start local 1 // java.lang.Throwable ex
         7: .line 176
            getstatic org.springframework.orm.hibernate5.SessionFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            ldc "Unexpected exception on closing Hibernate Session"
            aload 1 /* ex */
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 1 // java.lang.Throwable ex
         8: .line 179
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.hibernate.Session session
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0  session  Lorg/hibernate/Session;
            4    5     1       ex  Lorg/hibernate/HibernateException;
            7    8     1       ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     2       3  Class org.hibernate.HibernateException
           1     2       6  Class java.lang.Throwable
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
         Name  Flags
      session  

  public static javax.sql.DataSource getDataSource(org.hibernate.SessionFactory);
    descriptor: (Lorg/hibernate/SessionFactory;)Ljavax/sql/DataSource;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // org.hibernate.SessionFactory sessionFactory
         0: .line 189
            aload 0 /* sessionFactory */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc "getProperties"
            iconst_0
            anewarray java.lang.Class
            invokestatic org.springframework.util.ClassUtils.getMethodIfAvailable:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 1 /* getProperties */
        start local 1 // java.lang.reflect.Method getProperties
         1: .line 190
            aload 1 /* getProperties */
            ifnull 7
         2: .line 191
            aload 1 /* getProperties */
            aload 0 /* sessionFactory */
            invokestatic org.springframework.util.ReflectionUtils.invokeMethod:(Ljava/lang/reflect/Method;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 2 /* props */
        start local 2 // java.util.Map props
         3: .line 192
            aload 2 /* props */
            ifnull 7
         4: .line 193
            aload 2 /* props */
            ldc "hibernate.connection.datasource"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* dataSourceValue */
        start local 3 // java.lang.Object dataSourceValue
         5: .line 194
            aload 3 /* dataSourceValue */
            instanceof javax.sql.DataSource
            ifeq 7
         6: .line 195
            aload 3 /* dataSourceValue */
            checkcast javax.sql.DataSource
            areturn
        end local 3 // java.lang.Object dataSourceValue
        end local 2 // java.util.Map props
         7: .line 199
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 0 /* sessionFactory */
            instanceof org.hibernate.engine.spi.SessionFactoryImplementor
            ifeq 16
         8: .line 200
            aload 0 /* sessionFactory */
            checkcast org.hibernate.engine.spi.SessionFactoryImplementor
            astore 2 /* sfi */
        start local 2 // org.hibernate.engine.spi.SessionFactoryImplementor sfi
         9: .line 202
            aload 2 /* sfi */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getServiceRegistry:()Lorg/hibernate/service/spi/ServiceRegistryImplementor;
            ldc Lorg/hibernate/engine/jdbc/connections/spi/ConnectionProvider;
            invokeinterface org.hibernate.service.spi.ServiceRegistryImplementor.getService:(Ljava/lang/Class;)Lorg/hibernate/service/Service;
            checkcast org.hibernate.engine.jdbc.connections.spi.ConnectionProvider
            astore 3 /* cp */
        start local 3 // org.hibernate.engine.jdbc.connections.spi.ConnectionProvider cp
        10: .line 203
            aload 3 /* cp */
            ifnull 16
        11: .line 204
            aload 3 /* cp */
            ldc Ljavax/sql/DataSource;
            invokeinterface org.hibernate.engine.jdbc.connections.spi.ConnectionProvider.unwrap:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast javax.sql.DataSource
        12: areturn
        end local 3 // org.hibernate.engine.jdbc.connections.spi.ConnectionProvider cp
        13: .line 207
      StackMap locals: org.hibernate.SessionFactory java.lang.reflect.Method org.hibernate.engine.spi.SessionFactoryImplementor
      StackMap stack: org.hibernate.service.UnknownServiceException
            astore 3 /* ex */
        start local 3 // org.hibernate.service.UnknownServiceException ex
        14: .line 208
            getstatic org.springframework.orm.hibernate5.SessionFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 16
        15: .line 209
            getstatic org.springframework.orm.hibernate5.SessionFactoryUtils.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "No ConnectionProvider found - cannot determine DataSource for SessionFactory: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* ex */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        end local 3 // org.hibernate.service.UnknownServiceException ex
        end local 2 // org.hibernate.engine.spi.SessionFactoryImplementor sfi
        16: .line 213
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.reflect.Method getProperties
        end local 0 // org.hibernate.SessionFactory sessionFactory
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   17     0   sessionFactory  Lorg/hibernate/SessionFactory;
            1   17     1    getProperties  Ljava/lang/reflect/Method;
            3    7     2            props  Ljava/util/Map<**>;
            5    7     3  dataSourceValue  Ljava/lang/Object;
            9   16     2              sfi  Lorg/hibernate/engine/spi/SessionFactoryImplementor;
           10   13     3               cp  Lorg/hibernate/engine/jdbc/connections/spi/ConnectionProvider;
           14   16     3               ex  Lorg/hibernate/service/UnknownServiceException;
      Exception table:
        from    to  target  type
           9    12      13  Class org.hibernate.service.UnknownServiceException
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
                Name  Flags
      sessionFactory  

  public static org.springframework.dao.DataAccessException convertHibernateAccessException(org.hibernate.HibernateException);
    descriptor: (Lorg/hibernate/HibernateException;)Lorg/springframework/dao/DataAccessException;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.hibernate.HibernateException ex
         0: .line 225
            aload 0 /* ex */
            instanceof org.hibernate.exception.JDBCConnectionException
            ifeq 2
         1: .line 226
            new org.springframework.dao.DataAccessResourceFailureException
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.DataAccessResourceFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
         2: .line 228
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.exception.SQLGrammarException
            ifeq 5
         3: .line 229
            aload 0 /* ex */
            checkcast org.hibernate.exception.SQLGrammarException
            astore 1 /* jdbcEx */
        start local 1 // org.hibernate.exception.SQLGrammarException jdbcEx
         4: .line 230
            new org.springframework.dao.InvalidDataAccessResourceUsageException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "; SQL ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* jdbcEx */
            invokevirtual org.hibernate.exception.SQLGrammarException.getSQL:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.InvalidDataAccessResourceUsageException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        end local 1 // org.hibernate.exception.SQLGrammarException jdbcEx
         5: .line 232
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.QueryTimeoutException
            ifeq 8
         6: .line 233
            aload 0 /* ex */
            checkcast org.hibernate.QueryTimeoutException
            astore 1 /* jdbcEx */
        start local 1 // org.hibernate.QueryTimeoutException jdbcEx
         7: .line 234
            new org.springframework.dao.QueryTimeoutException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "; SQL ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* jdbcEx */
            invokevirtual org.hibernate.QueryTimeoutException.getSQL:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.QueryTimeoutException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        end local 1 // org.hibernate.QueryTimeoutException jdbcEx
         8: .line 236
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.exception.LockAcquisitionException
            ifeq 11
         9: .line 237
            aload 0 /* ex */
            checkcast org.hibernate.exception.LockAcquisitionException
            astore 1 /* jdbcEx */
        start local 1 // org.hibernate.exception.LockAcquisitionException jdbcEx
        10: .line 238
            new org.springframework.dao.CannotAcquireLockException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "; SQL ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* jdbcEx */
            invokevirtual org.hibernate.exception.LockAcquisitionException.getSQL:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.CannotAcquireLockException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        end local 1 // org.hibernate.exception.LockAcquisitionException jdbcEx
        11: .line 240
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.PessimisticLockException
            ifeq 14
        12: .line 241
            aload 0 /* ex */
            checkcast org.hibernate.PessimisticLockException
            astore 1 /* jdbcEx */
        start local 1 // org.hibernate.PessimisticLockException jdbcEx
        13: .line 242
            new org.springframework.dao.PessimisticLockingFailureException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "; SQL ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* jdbcEx */
            invokevirtual org.hibernate.PessimisticLockException.getSQL:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.PessimisticLockingFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        end local 1 // org.hibernate.PessimisticLockException jdbcEx
        14: .line 244
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.exception.ConstraintViolationException
            ifeq 19
        15: .line 245
            aload 0 /* ex */
            checkcast org.hibernate.exception.ConstraintViolationException
            astore 1 /* jdbcEx */
        start local 1 // org.hibernate.exception.ConstraintViolationException jdbcEx
        16: .line 246
            new org.springframework.dao.DataIntegrityViolationException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "; SQL ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* jdbcEx */
            invokevirtual org.hibernate.exception.ConstraintViolationException.getSQL:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        17: .line 247
            ldc "]; constraint ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* jdbcEx */
            invokevirtual org.hibernate.exception.ConstraintViolationException.getConstraintName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* ex */
        18: .line 246
            invokespecial org.springframework.dao.DataIntegrityViolationException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        end local 1 // org.hibernate.exception.ConstraintViolationException jdbcEx
        19: .line 249
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.exception.DataException
            ifeq 22
        20: .line 250
            aload 0 /* ex */
            checkcast org.hibernate.exception.DataException
            astore 1 /* jdbcEx */
        start local 1 // org.hibernate.exception.DataException jdbcEx
        21: .line 251
            new org.springframework.dao.DataIntegrityViolationException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "; SQL ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* jdbcEx */
            invokevirtual org.hibernate.exception.DataException.getSQL:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.DataIntegrityViolationException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        end local 1 // org.hibernate.exception.DataException jdbcEx
        22: .line 253
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.JDBCException
            ifeq 24
        23: .line 254
            new org.springframework.orm.hibernate5.HibernateJdbcException
            dup
            aload 0 /* ex */
            checkcast org.hibernate.JDBCException
            invokespecial org.springframework.orm.hibernate5.HibernateJdbcException.<init>:(Lorg/hibernate/JDBCException;)V
            areturn
        24: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.QueryException
            ifeq 26
        25: .line 259
            new org.springframework.orm.hibernate5.HibernateQueryException
            dup
            aload 0 /* ex */
            checkcast org.hibernate.QueryException
            invokespecial org.springframework.orm.hibernate5.HibernateQueryException.<init>:(Lorg/hibernate/QueryException;)V
            areturn
        26: .line 261
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.NonUniqueResultException
            ifeq 28
        27: .line 262
            new org.springframework.dao.IncorrectResultSizeDataAccessException
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            iconst_1
            aload 0 /* ex */
            invokespecial org.springframework.dao.IncorrectResultSizeDataAccessException.<init>:(Ljava/lang/String;ILjava/lang/Throwable;)V
            areturn
        28: .line 264
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.NonUniqueObjectException
            ifeq 30
        29: .line 265
            new org.springframework.dao.DuplicateKeyException
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.DuplicateKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        30: .line 267
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.PropertyValueException
            ifeq 32
        31: .line 268
            new org.springframework.dao.DataIntegrityViolationException
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.DataIntegrityViolationException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        32: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.PersistentObjectException
            ifeq 34
        33: .line 271
            new org.springframework.dao.InvalidDataAccessApiUsageException
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.InvalidDataAccessApiUsageException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        34: .line 273
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.TransientObjectException
            ifeq 36
        35: .line 274
            new org.springframework.dao.InvalidDataAccessApiUsageException
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.InvalidDataAccessApiUsageException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        36: .line 276
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.ObjectDeletedException
            ifeq 38
        37: .line 277
            new org.springframework.dao.InvalidDataAccessApiUsageException
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.InvalidDataAccessApiUsageException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        38: .line 279
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.UnresolvableObjectException
            ifeq 40
        39: .line 280
            new org.springframework.orm.hibernate5.HibernateObjectRetrievalFailureException
            dup
            aload 0 /* ex */
            checkcast org.hibernate.UnresolvableObjectException
            invokespecial org.springframework.orm.hibernate5.HibernateObjectRetrievalFailureException.<init>:(Lorg/hibernate/UnresolvableObjectException;)V
            areturn
        40: .line 282
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.WrongClassException
            ifeq 42
        41: .line 283
            new org.springframework.orm.hibernate5.HibernateObjectRetrievalFailureException
            dup
            aload 0 /* ex */
            checkcast org.hibernate.WrongClassException
            invokespecial org.springframework.orm.hibernate5.HibernateObjectRetrievalFailureException.<init>:(Lorg/hibernate/WrongClassException;)V
            areturn
        42: .line 285
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.StaleObjectStateException
            ifeq 44
        43: .line 286
            new org.springframework.orm.hibernate5.HibernateOptimisticLockingFailureException
            dup
            aload 0 /* ex */
            checkcast org.hibernate.StaleObjectStateException
            invokespecial org.springframework.orm.hibernate5.HibernateOptimisticLockingFailureException.<init>:(Lorg/hibernate/StaleObjectStateException;)V
            areturn
        44: .line 288
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.StaleStateException
            ifeq 46
        45: .line 289
            new org.springframework.orm.hibernate5.HibernateOptimisticLockingFailureException
            dup
            aload 0 /* ex */
            checkcast org.hibernate.StaleStateException
            invokespecial org.springframework.orm.hibernate5.HibernateOptimisticLockingFailureException.<init>:(Lorg/hibernate/StaleStateException;)V
            areturn
        46: .line 291
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.dialect.lock.OptimisticEntityLockException
            ifeq 48
        47: .line 292
            new org.springframework.orm.hibernate5.HibernateOptimisticLockingFailureException
            dup
            aload 0 /* ex */
            checkcast org.hibernate.dialect.lock.OptimisticEntityLockException
            invokespecial org.springframework.orm.hibernate5.HibernateOptimisticLockingFailureException.<init>:(Lorg/hibernate/dialect/lock/OptimisticEntityLockException;)V
            areturn
        48: .line 294
      StackMap locals:
      StackMap stack:
            aload 0 /* ex */
            instanceof org.hibernate.dialect.lock.PessimisticEntityLockException
            ifeq 52
        49: .line 295
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getCause:()Ljava/lang/Throwable;
            instanceof org.hibernate.exception.LockAcquisitionException
            ifeq 51
        50: .line 296
            new org.springframework.dao.CannotAcquireLockException
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getCause:()Ljava/lang/Throwable;
            invokespecial org.springframework.dao.CannotAcquireLockException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        51: .line 298
      StackMap locals:
      StackMap stack:
            new org.springframework.dao.PessimisticLockingFailureException
            dup
            aload 0 /* ex */
            invokevirtual org.hibernate.HibernateException.getMessage:()Ljava/lang/String;
            aload 0 /* ex */
            invokespecial org.springframework.dao.PessimisticLockingFailureException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            areturn
        52: .line 302
      StackMap locals:
      StackMap stack:
            new org.springframework.orm.hibernate5.HibernateSystemException
            dup
            aload 0 /* ex */
            invokespecial org.springframework.orm.hibernate5.HibernateSystemException.<init>:(Lorg/hibernate/HibernateException;)V
            areturn
        end local 0 // org.hibernate.HibernateException ex
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   53     0      ex  Lorg/hibernate/HibernateException;
            4    5     1  jdbcEx  Lorg/hibernate/exception/SQLGrammarException;
            7    8     1  jdbcEx  Lorg/hibernate/QueryTimeoutException;
           10   11     1  jdbcEx  Lorg/hibernate/exception/LockAcquisitionException;
           13   14     1  jdbcEx  Lorg/hibernate/PessimisticLockException;
           16   19     1  jdbcEx  Lorg/hibernate/exception/ConstraintViolationException;
           21   22     1  jdbcEx  Lorg/hibernate/exception/DataException;
    MethodParameters:
      Name  Flags
      ex    
}
SourceFile: "SessionFactoryUtils.java"