abstract class org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl<T>
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl
  super_class: java.lang.Object
{
  private final org.hibernate.persister.entity.EntityPersister entityPersister;
    descriptor: Lorg/hibernate/persister/entity/EntityPersister;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.hibernate.LockOptions lockOptions;
    descriptor: Lorg/hibernate/LockOptions;
    flags: (0x0002) ACC_PRIVATE

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

  final org.hibernate.internal.SessionImpl this$0;
    descriptor: Lorg/hibernate/internal/SessionImpl;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private void <init>(org.hibernate.internal.SessionImpl, org.hibernate.persister.entity.EntityPersister);
    descriptor: (Lorg/hibernate/internal/SessionImpl;Lorg/hibernate/persister/entity/EntityPersister;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
        start local 2 // org.hibernate.persister.entity.EntityPersister entityPersister
         0: .line 3025
            aload 0 /* this */
            aload 1
            putfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.this$0:Lorg/hibernate/internal/SessionImpl;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 3023
            aload 0 /* this */
            iconst_1
            putfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.synchronizationEnabled:Z
         2: .line 3026
            aload 0 /* this */
            aload 2 /* entityPersister */
            putfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.entityPersister:Lorg/hibernate/persister/entity/EntityPersister;
         3: .line 3028
            aload 2 /* entityPersister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.hasNaturalIdentifier:()Z
            ifne 7
         4: .line 3029
            new org.hibernate.HibernateException
            dup
         5: .line 3030
            ldc "Entity [%s] did not define a natural id"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* entityPersister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getEntityName:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         6: .line 3029
            invokespecial org.hibernate.HibernateException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 3033
      StackMap locals: org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl org.hibernate.internal.SessionImpl org.hibernate.persister.entity.EntityPersister
      StackMap stack:
            return
        end local 2 // org.hibernate.persister.entity.EntityPersister entityPersister
        end local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Lorg/hibernate/internal/SessionImpl$BaseNaturalIdLoadAccessImpl<TT;>;
            0    8     2  entityPersister  Lorg/hibernate/persister/entity/EntityPersister;
    MethodParameters:
                 Name  Flags
      this$0           final
      entityPersister  

  public org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl<T> with(org.hibernate.LockOptions);
    descriptor: (Lorg/hibernate/LockOptions;)Lorg/hibernate/internal/SessionImpl$BaseNaturalIdLoadAccessImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
        start local 1 // org.hibernate.LockOptions lockOptions
         0: .line 3036
            aload 0 /* this */
            aload 1 /* lockOptions */
            putfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.lockOptions:Lorg/hibernate/LockOptions;
         1: .line 3037
            aload 0 /* this */
            areturn
        end local 1 // org.hibernate.LockOptions lockOptions
        end local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/hibernate/internal/SessionImpl$BaseNaturalIdLoadAccessImpl<TT;>;
            0    2     1  lockOptions  Lorg/hibernate/LockOptions;
    Signature: (Lorg/hibernate/LockOptions;)Lorg/hibernate/internal/SessionImpl$BaseNaturalIdLoadAccessImpl<TT;>;
    MethodParameters:
             Name  Flags
      lockOptions  

  protected void synchronizationEnabled(boolean);
    descriptor: (Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
        start local 1 // boolean synchronizationEnabled
         0: .line 3041
            aload 0 /* this */
            iload 1 /* synchronizationEnabled */
            putfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.synchronizationEnabled:Z
         1: .line 3042
            return
        end local 1 // boolean synchronizationEnabled
        end local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    2     0                    this  Lorg/hibernate/internal/SessionImpl$BaseNaturalIdLoadAccessImpl<TT;>;
            0    2     1  synchronizationEnabled  Z
    MethodParameters:
                        Name  Flags
      synchronizationEnabled  

  protected final java.io.Serializable resolveNaturalId(java.util.Map<java.lang.String, java.lang.Object>);
    descriptor: (Ljava/util/Map;)Ljava/io/Serializable;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
        start local 1 // java.util.Map naturalIdParameters
         0: .line 3045
            aload 0 /* this */
            invokevirtual org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.performAnyNeededCrossReferenceSynchronizations:()V
         1: .line 3048
            new org.hibernate.event.spi.ResolveNaturalIdEvent
            dup
            aload 1 /* naturalIdParameters */
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.entityPersister:Lorg/hibernate/persister/entity/EntityPersister;
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.this$0:Lorg/hibernate/internal/SessionImpl;
            invokespecial org.hibernate.event.spi.ResolveNaturalIdEvent.<init>:(Ljava/util/Map;Lorg/hibernate/persister/entity/EntityPersister;Lorg/hibernate/event/spi/EventSource;)V
         2: .line 3047
            astore 2 /* event */
        start local 2 // org.hibernate.event.spi.ResolveNaturalIdEvent event
         3: .line 3049
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.this$0:Lorg/hibernate/internal/SessionImpl;
            aload 2 /* event */
            invokevirtual org.hibernate.internal.SessionImpl.fireResolveNaturalId:(Lorg/hibernate/event/spi/ResolveNaturalIdEvent;)V
         4: .line 3051
            aload 2 /* event */
            invokevirtual org.hibernate.event.spi.ResolveNaturalIdEvent.getEntityId:()Ljava/io/Serializable;
            getstatic org.hibernate.engine.spi.PersistenceContext$NaturalIdHelper.INVALID_NATURAL_ID_REFERENCE:Ljava/io/Serializable;
            if_acmpne 6
         5: .line 3052
            aconst_null
            areturn
         6: .line 3055
      StackMap locals: org.hibernate.event.spi.ResolveNaturalIdEvent
      StackMap stack:
            aload 2 /* event */
            invokevirtual org.hibernate.event.spi.ResolveNaturalIdEvent.getEntityId:()Ljava/io/Serializable;
            areturn
        end local 2 // org.hibernate.event.spi.ResolveNaturalIdEvent event
        end local 1 // java.util.Map naturalIdParameters
        end local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    7     0                 this  Lorg/hibernate/internal/SessionImpl$BaseNaturalIdLoadAccessImpl<TT;>;
            0    7     1  naturalIdParameters  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            3    7     2                event  Lorg/hibernate/event/spi/ResolveNaturalIdEvent;
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;)Ljava/io/Serializable;
    MethodParameters:
                     Name  Flags
      naturalIdParameters  

  protected void performAnyNeededCrossReferenceSynchronizations();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
         0: .line 3060
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.synchronizationEnabled:Z
            ifne 2
         1: .line 3062
            return
         2: .line 3064
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.entityPersister:Lorg/hibernate/persister/entity/EntityPersister;
            invokeinterface org.hibernate.persister.entity.EntityPersister.getEntityMetamodel:()Lorg/hibernate/tuple/entity/EntityMetamodel;
            invokevirtual org.hibernate.tuple.entity.EntityMetamodel.hasImmutableNaturalId:()Z
            ifeq 4
         3: .line 3066
            return
         4: .line 3068
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.this$0:Lorg/hibernate/internal/SessionImpl;
            invokevirtual org.hibernate.internal.SessionImpl.isTransactionInProgress:()Z
            ifne 6
         5: .line 3070
            return
         6: .line 3073
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.internal.SessionImpl.log:Lorg/hibernate/internal/EntityManagerMessageLogger;
            invokeinterface org.hibernate.internal.EntityManagerMessageLogger.isDebugEnabled:()Z
            istore 1 /* debugEnabled */
        start local 1 // boolean debugEnabled
         7: .line 3074
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.this$0:Lorg/hibernate/internal/SessionImpl;
            invokevirtual org.hibernate.internal.SessionImpl.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getNaturalIdHelper:()Lorg/hibernate/engine/spi/PersistenceContext$NaturalIdHelper;
         8: .line 3075
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.entityPersister:Lorg/hibernate/persister/entity/EntityPersister;
            invokeinterface org.hibernate.engine.spi.PersistenceContext$NaturalIdHelper.getCachedPkResolutions:(Lorg/hibernate/persister/entity/EntityPersister;)Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 30
      StackMap locals: org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl int top java.util.Iterator
      StackMap stack:
         9: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.io.Serializable
            astore 2 /* pk */
        start local 2 // java.io.Serializable pk
        10: .line 3076
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.this$0:Lorg/hibernate/internal/SessionImpl;
            aload 2 /* pk */
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.entityPersister:Lorg/hibernate/persister/entity/EntityPersister;
            invokevirtual org.hibernate.internal.SessionImpl.generateEntityKey:(Ljava/io/Serializable;Lorg/hibernate/persister/entity/EntityPersister;)Lorg/hibernate/engine/spi/EntityKey;
            astore 4 /* entityKey */
        start local 4 // org.hibernate.engine.spi.EntityKey entityKey
        11: .line 3077
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.this$0:Lorg/hibernate/internal/SessionImpl;
            invokevirtual org.hibernate.internal.SessionImpl.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            aload 4 /* entityKey */
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getEntity:(Lorg/hibernate/engine/spi/EntityKey;)Ljava/lang/Object;
            astore 5 /* entity */
        start local 5 // java.lang.Object entity
        12: .line 3078
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.this$0:Lorg/hibernate/internal/SessionImpl;
            invokevirtual org.hibernate.internal.SessionImpl.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            aload 5 /* entity */
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getEntry:(Ljava/lang/Object;)Lorg/hibernate/engine/spi/EntityEntry;
            astore 6 /* entry */
        start local 6 // org.hibernate.engine.spi.EntityEntry entry
        13: .line 3080
            aload 6 /* entry */
            ifnonnull 21
        14: .line 3081
            iload 1 /* debugEnabled */
            ifeq 30
        15: .line 3082
            getstatic org.hibernate.internal.SessionImpl.log:Lorg/hibernate/internal/EntityManagerMessageLogger;
        16: .line 3083
            new java.lang.StringBuilder
            dup
            ldc "Cached natural-id/pk resolution linked to null EntityEntry in persistence context : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        17: .line 3084
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.entityPersister:Lorg/hibernate/persister/entity/EntityPersister;
            aload 2 /* pk */
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.this$0:Lorg/hibernate/internal/SessionImpl;
            invokevirtual org.hibernate.internal.SessionImpl.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokestatic org.hibernate.pretty.MessageHelper.infoString:(Lorg/hibernate/persister/entity/EntityPersister;Ljava/lang/Object;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        18: .line 3083
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 3082
            invokeinterface org.hibernate.internal.EntityManagerMessageLogger.debug:(Ljava/lang/Object;)V
        20: .line 3087
            goto 30
        21: .line 3090
      StackMap locals: org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl int java.io.Serializable java.util.Iterator org.hibernate.engine.spi.EntityKey java.lang.Object org.hibernate.engine.spi.EntityEntry
      StackMap stack:
            aload 6 /* entry */
            aload 5 /* entity */
            invokeinterface org.hibernate.engine.spi.EntityEntry.requiresDirtyCheck:(Ljava/lang/Object;)Z
            ifne 23
        22: .line 3091
            goto 30
        23: .line 3095
      StackMap locals:
      StackMap stack:
            aload 6 /* entry */
            invokeinterface org.hibernate.engine.spi.EntityEntry.getStatus:()Lorg/hibernate/engine/spi/Status;
            getstatic org.hibernate.engine.spi.Status.MANAGED:Lorg/hibernate/engine/spi/Status;
            if_acmpeq 25
        24: .line 3096
            goto 30
        25: .line 3099
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.this$0:Lorg/hibernate/internal/SessionImpl;
            invokevirtual org.hibernate.internal.SessionImpl.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getNaturalIdHelper:()Lorg/hibernate/engine/spi/PersistenceContext$NaturalIdHelper;
        26: .line 3100
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.entityPersister:Lorg/hibernate/persister/entity/EntityPersister;
        27: .line 3101
            aload 2 /* pk */
        28: .line 3102
            aload 5 /* entity */
        29: .line 3099
            invokeinterface org.hibernate.engine.spi.PersistenceContext$NaturalIdHelper.handleSynchronization:(Lorg/hibernate/persister/entity/EntityPersister;Ljava/io/Serializable;Ljava/lang/Object;)V
        end local 6 // org.hibernate.engine.spi.EntityEntry entry
        end local 5 // java.lang.Object entity
        end local 4 // org.hibernate.engine.spi.EntityKey entityKey
        end local 2 // java.io.Serializable pk
        30: .line 3074
      StackMap locals: org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl int top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        31: .line 3105
            return
        end local 1 // boolean debugEnabled
        end local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   32     0          this  Lorg/hibernate/internal/SessionImpl$BaseNaturalIdLoadAccessImpl<TT;>;
            7   32     1  debugEnabled  Z
           10   30     2            pk  Ljava/io/Serializable;
           11   30     4     entityKey  Lorg/hibernate/engine/spi/EntityKey;
           12   30     5        entity  Ljava/lang/Object;
           13   30     6         entry  Lorg/hibernate/engine/spi/EntityEntry;

  protected final org.hibernate.IdentifierLoadAccess getIdentifierLoadAccess();
    descriptor: ()Lorg/hibernate/IdentifierLoadAccess;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
         0: .line 3108
            new org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl
            dup
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.this$0:Lorg/hibernate/internal/SessionImpl;
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.entityPersister:Lorg/hibernate/persister/entity/EntityPersister;
            invokespecial org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.<init>:(Lorg/hibernate/internal/SessionImpl;Lorg/hibernate/persister/entity/EntityPersister;)V
            astore 1 /* identifierLoadAccess */
        start local 1 // org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl identifierLoadAccess
         1: .line 3109
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.lockOptions:Lorg/hibernate/LockOptions;
            ifnull 3
         2: .line 3110
            aload 1 /* identifierLoadAccess */
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.lockOptions:Lorg/hibernate/LockOptions;
            invokevirtual org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.with:(Lorg/hibernate/LockOptions;)Lorg/hibernate/internal/SessionImpl$IdentifierLoadAccessImpl;
            pop
         3: .line 3112
      StackMap locals: org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl
      StackMap stack:
            aload 1 /* identifierLoadAccess */
            areturn
        end local 1 // org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl identifierLoadAccess
        end local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    4     0                  this  Lorg/hibernate/internal/SessionImpl$BaseNaturalIdLoadAccessImpl<TT;>;
            1    4     1  identifierLoadAccess  Lorg/hibernate/internal/SessionImpl$IdentifierLoadAccessImpl;

  protected org.hibernate.persister.entity.EntityPersister entityPersister();
    descriptor: ()Lorg/hibernate/persister/entity/EntityPersister;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
         0: .line 3116
            aload 0 /* this */
            getfield org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl.entityPersister:Lorg/hibernate/persister/entity/EntityPersister;
            areturn
        end local 0 // org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/internal/SessionImpl$BaseNaturalIdLoadAccessImpl<TT;>;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "SessionImpl.java"
NestHost: org.hibernate.internal.SessionImpl
InnerClasses:
  public abstract NaturalIdHelper = org.hibernate.engine.spi.PersistenceContext$NaturalIdHelper of org.hibernate.engine.spi.PersistenceContext
  private abstract BaseNaturalIdLoadAccessImpl = org.hibernate.internal.SessionImpl$BaseNaturalIdLoadAccessImpl of org.hibernate.internal.SessionImpl
  private IdentifierLoadAccessImpl = org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl of org.hibernate.internal.SessionImpl