public abstract class org.hibernate.context.spi.AbstractCurrentSessionContext implements org.hibernate.context.spi.CurrentSessionContext
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.hibernate.context.spi.AbstractCurrentSessionContext
  super_class: java.lang.Object
{
  private final org.hibernate.engine.spi.SessionFactoryImplementor factory;
    descriptor: Lorg/hibernate/engine/spi/SessionFactoryImplementor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected void <init>(org.hibernate.engine.spi.SessionFactoryImplementor);
    descriptor: (Lorg/hibernate/engine/spi/SessionFactoryImplementor;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.hibernate.context.spi.AbstractCurrentSessionContext this
        start local 1 // org.hibernate.engine.spi.SessionFactoryImplementor factory
         0: .line 40
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 41
            aload 0 /* this */
            aload 1 /* factory */
            putfield org.hibernate.context.spi.AbstractCurrentSessionContext.factory:Lorg/hibernate/engine/spi/SessionFactoryImplementor;
         2: .line 42
            return
        end local 1 // org.hibernate.engine.spi.SessionFactoryImplementor factory
        end local 0 // org.hibernate.context.spi.AbstractCurrentSessionContext this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/hibernate/context/spi/AbstractCurrentSessionContext;
            0    3     1  factory  Lorg/hibernate/engine/spi/SessionFactoryImplementor;
    MethodParameters:
         Name  Flags
      factory  

  public org.hibernate.engine.spi.SessionFactoryImplementor factory();
    descriptor: ()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.context.spi.AbstractCurrentSessionContext this
         0: .line 50
            aload 0 /* this */
            getfield org.hibernate.context.spi.AbstractCurrentSessionContext.factory:Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            areturn
        end local 0 // org.hibernate.context.spi.AbstractCurrentSessionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/context/spi/AbstractCurrentSessionContext;

  protected org.hibernate.SessionBuilder baseSessionBuilder();
    descriptor: ()Lorg/hibernate/SessionBuilder;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.hibernate.context.spi.AbstractCurrentSessionContext this
         0: .line 54
            aload 0 /* this */
            getfield org.hibernate.context.spi.AbstractCurrentSessionContext.factory:Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.withOptions:()Lorg/hibernate/engine/spi/SessionBuilderImplementor;
            astore 1 /* builder */
        start local 1 // org.hibernate.SessionBuilder builder
         1: .line 55
            aload 0 /* this */
            getfield org.hibernate.context.spi.AbstractCurrentSessionContext.factory:Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getCurrentTenantIdentifierResolver:()Lorg/hibernate/context/spi/CurrentTenantIdentifierResolver;
            astore 2 /* resolver */
        start local 2 // org.hibernate.context.spi.CurrentTenantIdentifierResolver resolver
         2: .line 56
            aload 2 /* resolver */
            ifnull 4
         3: .line 57
            aload 1 /* builder */
            aload 2 /* resolver */
            invokeinterface org.hibernate.context.spi.CurrentTenantIdentifierResolver.resolveCurrentTenantIdentifier:()Ljava/lang/String;
            invokeinterface org.hibernate.SessionBuilder.tenantIdentifier:(Ljava/lang/String;)Lorg/hibernate/SessionBuilder;
            pop
         4: .line 59
      StackMap locals: org.hibernate.SessionBuilder org.hibernate.context.spi.CurrentTenantIdentifierResolver
      StackMap stack:
            aload 1 /* builder */
            areturn
        end local 2 // org.hibernate.context.spi.CurrentTenantIdentifierResolver resolver
        end local 1 // org.hibernate.SessionBuilder builder
        end local 0 // org.hibernate.context.spi.AbstractCurrentSessionContext this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/hibernate/context/spi/AbstractCurrentSessionContext;
            1    5     1   builder  Lorg/hibernate/SessionBuilder;
            2    5     2  resolver  Lorg/hibernate/context/spi/CurrentTenantIdentifierResolver;

  protected void validateExistingSession(org.hibernate.Session);
    descriptor: (Lorg/hibernate/Session;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=4, args_size=2
        start local 0 // org.hibernate.context.spi.AbstractCurrentSessionContext this
        start local 1 // org.hibernate.Session existingSession
         0: .line 63
            aload 0 /* this */
            getfield org.hibernate.context.spi.AbstractCurrentSessionContext.factory:Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getCurrentTenantIdentifierResolver:()Lorg/hibernate/context/spi/CurrentTenantIdentifierResolver;
            astore 2 /* resolver */
        start local 2 // org.hibernate.context.spi.CurrentTenantIdentifierResolver resolver
         1: .line 64
            aload 2 /* resolver */
            ifnull 10
            aload 2 /* resolver */
            invokeinterface org.hibernate.context.spi.CurrentTenantIdentifierResolver.validateExistingCurrentSessions:()Z
            ifeq 10
         2: .line 65
            aload 2 /* resolver */
            invokeinterface org.hibernate.context.spi.CurrentTenantIdentifierResolver.resolveCurrentTenantIdentifier:()Ljava/lang/String;
            astore 3 /* current */
        start local 3 // java.lang.String current
         3: .line 66
            aload 1 /* existingSession */
            invokeinterface org.hibernate.Session.getTenantIdentifier:()Ljava/lang/String;
            aload 3 /* current */
            invokestatic org.hibernate.internal.util.compare.EqualsHelper.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifne 10
         4: .line 67
            new org.hibernate.context.TenantIdentifierMismatchException
            dup
         5: .line 69
            ldc "Reported current tenant identifier [%s] did not match tenant identifier from existing session [%s]"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         6: .line 71
            aload 3 /* current */
            aastore
            dup
            iconst_1
         7: .line 72
            aload 1 /* existingSession */
            invokeinterface org.hibernate.Session.getTenantIdentifier:()Ljava/lang/String;
            aastore
         8: .line 68
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         9: .line 67
            invokespecial org.hibernate.context.TenantIdentifierMismatchException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.String current
        10: .line 77
      StackMap locals: org.hibernate.context.spi.CurrentTenantIdentifierResolver
      StackMap stack:
            return
        end local 2 // org.hibernate.context.spi.CurrentTenantIdentifierResolver resolver
        end local 1 // org.hibernate.Session existingSession
        end local 0 // org.hibernate.context.spi.AbstractCurrentSessionContext this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0             this  Lorg/hibernate/context/spi/AbstractCurrentSessionContext;
            0   11     1  existingSession  Lorg/hibernate/Session;
            1   11     2         resolver  Lorg/hibernate/context/spi/CurrentTenantIdentifierResolver;
            3   10     3          current  Ljava/lang/String;
    MethodParameters:
                 Name  Flags
      existingSession  
}
SourceFile: "AbstractCurrentSessionContext.java"