public final class org.hibernate.action.internal.EntityUpdateAction extends org.hibernate.action.internal.EntityAction
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.hibernate.action.internal.EntityUpdateAction
  super_class: org.hibernate.action.internal.EntityAction
{
  private final java.lang.Object[] state;
    descriptor: [Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object[] previousState;
    descriptor: [Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object previousVersion;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int[] dirtyFields;
    descriptor: [I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean hasDirtyCollection;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object rowId;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object[] previousNaturalIdValues;
    descriptor: [Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.lang.Object nextVersion;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Object cacheEntry;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

  private org.hibernate.cache.spi.access.SoftLock lock;
    descriptor: Lorg/hibernate/cache/spi/access/SoftLock;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(java.io.Serializable, java.lang.Object[], int[], boolean, java.lang.Object[], java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, org.hibernate.persister.entity.EntityPersister, org.hibernate.engine.spi.SharedSessionContractImplementor);
    descriptor: (Ljava/io/Serializable;[Ljava/lang/Object;[IZ[Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/persister/entity/EntityPersister;Lorg/hibernate/engine/spi/SharedSessionContractImplementor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=12, args_size=12
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
        start local 1 // java.io.Serializable id
        start local 2 // java.lang.Object[] state
        start local 3 // int[] dirtyProperties
        start local 4 // boolean hasDirtyCollection
        start local 5 // java.lang.Object[] previousState
        start local 6 // java.lang.Object previousVersion
        start local 7 // java.lang.Object nextVersion
        start local 8 // java.lang.Object instance
        start local 9 // java.lang.Object rowId
        start local 10 // org.hibernate.persister.entity.EntityPersister persister
        start local 11 // org.hibernate.engine.spi.SharedSessionContractImplementor session
         0: .line 77
            aload 0 /* this */
            aload 11 /* session */
            aload 1 /* id */
            aload 8 /* instance */
            aload 10 /* persister */
            invokespecial org.hibernate.action.internal.EntityAction.<init>:(Lorg/hibernate/engine/spi/SharedSessionContractImplementor;Ljava/io/Serializable;Ljava/lang/Object;Lorg/hibernate/persister/entity/EntityPersister;)V
         1: .line 78
            aload 0 /* this */
            aload 2 /* state */
            putfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
         2: .line 79
            aload 0 /* this */
            aload 5 /* previousState */
            putfield org.hibernate.action.internal.EntityUpdateAction.previousState:[Ljava/lang/Object;
         3: .line 80
            aload 0 /* this */
            aload 6 /* previousVersion */
            putfield org.hibernate.action.internal.EntityUpdateAction.previousVersion:Ljava/lang/Object;
         4: .line 81
            aload 0 /* this */
            aload 7 /* nextVersion */
            putfield org.hibernate.action.internal.EntityUpdateAction.nextVersion:Ljava/lang/Object;
         5: .line 82
            aload 0 /* this */
            aload 3 /* dirtyProperties */
            putfield org.hibernate.action.internal.EntityUpdateAction.dirtyFields:[I
         6: .line 83
            aload 0 /* this */
            iload 4 /* hasDirtyCollection */
            putfield org.hibernate.action.internal.EntityUpdateAction.hasDirtyCollection:Z
         7: .line 84
            aload 0 /* this */
            aload 9 /* rowId */
            putfield org.hibernate.action.internal.EntityUpdateAction.rowId:Ljava/lang/Object;
         8: .line 86
            aload 0 /* this */
            aload 0 /* this */
            aload 10 /* persister */
            aload 5 /* previousState */
            aload 11 /* session */
            aload 1 /* id */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.determinePreviousNaturalIdValues:(Lorg/hibernate/persister/entity/EntityPersister;[Ljava/lang/Object;Lorg/hibernate/engine/spi/SharedSessionContractImplementor;Ljava/io/Serializable;)[Ljava/lang/Object;
            putfield org.hibernate.action.internal.EntityUpdateAction.previousNaturalIdValues:[Ljava/lang/Object;
         9: .line 87
            aload 11 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getNaturalIdHelper:()Lorg/hibernate/engine/spi/PersistenceContext$NaturalIdHelper;
        10: .line 88
            aload 10 /* persister */
        11: .line 89
            aload 1 /* id */
        12: .line 90
            aload 2 /* state */
        13: .line 91
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousNaturalIdValues:[Ljava/lang/Object;
        14: .line 92
            getstatic org.hibernate.engine.spi.CachedNaturalIdValueSource.UPDATE:Lorg/hibernate/engine/spi/CachedNaturalIdValueSource;
        15: .line 87
            invokeinterface org.hibernate.engine.spi.PersistenceContext$NaturalIdHelper.manageLocalNaturalIdCrossReference:(Lorg/hibernate/persister/entity/EntityPersister;Ljava/io/Serializable;[Ljava/lang/Object;[Ljava/lang/Object;Lorg/hibernate/engine/spi/CachedNaturalIdValueSource;)V
        16: .line 94
            return
        end local 11 // org.hibernate.engine.spi.SharedSessionContractImplementor session
        end local 10 // org.hibernate.persister.entity.EntityPersister persister
        end local 9 // java.lang.Object rowId
        end local 8 // java.lang.Object instance
        end local 7 // java.lang.Object nextVersion
        end local 6 // java.lang.Object previousVersion
        end local 5 // java.lang.Object[] previousState
        end local 4 // boolean hasDirtyCollection
        end local 3 // int[] dirtyProperties
        end local 2 // java.lang.Object[] state
        end local 1 // java.io.Serializable id
        end local 0 // org.hibernate.action.internal.EntityUpdateAction this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   17     0                this  Lorg/hibernate/action/internal/EntityUpdateAction;
            0   17     1                  id  Ljava/io/Serializable;
            0   17     2               state  [Ljava/lang/Object;
            0   17     3     dirtyProperties  [I
            0   17     4  hasDirtyCollection  Z
            0   17     5       previousState  [Ljava/lang/Object;
            0   17     6     previousVersion  Ljava/lang/Object;
            0   17     7         nextVersion  Ljava/lang/Object;
            0   17     8            instance  Ljava/lang/Object;
            0   17     9               rowId  Ljava/lang/Object;
            0   17    10           persister  Lorg/hibernate/persister/entity/EntityPersister;
            0   17    11             session  Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
    MethodParameters:
                    Name  Flags
      id                  final
      state               final
      dirtyProperties     final
      hasDirtyCollection  final
      previousState       final
      previousVersion     final
      nextVersion         final
      instance            final
      rowId               final
      persister           final
      session             final

  private java.lang.Object[] determinePreviousNaturalIdValues(org.hibernate.persister.entity.EntityPersister, java.lang.Object[], org.hibernate.engine.spi.SharedSessionContractImplementor, java.io.Serializable);
    descriptor: (Lorg/hibernate/persister/entity/EntityPersister;[Ljava/lang/Object;Lorg/hibernate/engine/spi/SharedSessionContractImplementor;Ljava/io/Serializable;)[Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
        start local 1 // org.hibernate.persister.entity.EntityPersister persister
        start local 2 // java.lang.Object[] previousState
        start local 3 // org.hibernate.engine.spi.SharedSessionContractImplementor session
        start local 4 // java.io.Serializable id
         0: .line 101
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.hasNaturalIdentifier:()Z
            ifne 2
         1: .line 102
            aconst_null
            areturn
         2: .line 105
      StackMap locals:
      StackMap stack:
            aload 2 /* previousState */
            ifnull 4
         3: .line 106
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getNaturalIdHelper:()Lorg/hibernate/engine/spi/PersistenceContext$NaturalIdHelper;
            aload 2 /* previousState */
            aload 1 /* persister */
            invokeinterface org.hibernate.engine.spi.PersistenceContext$NaturalIdHelper.extractNaturalIdValues:([Ljava/lang/Object;Lorg/hibernate/persister/entity/EntityPersister;)[Ljava/lang/Object;
            areturn
         4: .line 109
      StackMap locals:
      StackMap stack:
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            aload 4 /* id */
            aload 1 /* persister */
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getNaturalIdSnapshot:(Ljava/io/Serializable;Lorg/hibernate/persister/entity/EntityPersister;)[Ljava/lang/Object;
            areturn
        end local 4 // java.io.Serializable id
        end local 3 // org.hibernate.engine.spi.SharedSessionContractImplementor session
        end local 2 // java.lang.Object[] previousState
        end local 1 // org.hibernate.persister.entity.EntityPersister persister
        end local 0 // org.hibernate.action.internal.EntityUpdateAction this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lorg/hibernate/action/internal/EntityUpdateAction;
            0    5     1      persister  Lorg/hibernate/persister/entity/EntityPersister;
            0    5     2  previousState  [Ljava/lang/Object;
            0    5     3        session  Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            0    5     4             id  Ljava/io/Serializable;
    MethodParameters:
               Name  Flags
      persister      
      previousState  
      session        
      id             

  public void execute();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=12, args_size=1
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
         0: .line 114
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getId:()Ljava/io/Serializable;
            astore 1 /* id */
        start local 1 // java.io.Serializable id
         1: .line 115
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
            astore 2 /* persister */
        start local 2 // org.hibernate.persister.entity.EntityPersister persister
         2: .line 116
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            astore 3 /* session */
        start local 3 // org.hibernate.engine.spi.SharedSessionContractImplementor session
         3: .line 117
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getInstance:()Ljava/lang/Object;
            astore 4 /* instance */
        start local 4 // java.lang.Object instance
         4: .line 119
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.preUpdate:()Z
            istore 5 /* veto */
        start local 5 // boolean veto
         5: .line 121
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            astore 6 /* factory */
        start local 6 // org.hibernate.engine.spi.SessionFactoryImplementor factory
         6: .line 122
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousVersion:Ljava/lang/Object;
            astore 7 /* previousVersion */
        start local 7 // java.lang.Object previousVersion
         7: .line 123
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.isVersionPropertyGenerated:()Z
            ifeq 9
         8: .line 127
            aload 2 /* persister */
            aload 4 /* instance */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getVersion:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* previousVersion */
         9: .line 131
      StackMap locals: org.hibernate.action.internal.EntityUpdateAction java.io.Serializable org.hibernate.persister.entity.EntityPersister org.hibernate.engine.spi.SharedSessionContractImplementor java.lang.Object int org.hibernate.engine.spi.SessionFactoryImplementor java.lang.Object
      StackMap stack:
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.canWriteToCache:()Z
            ifeq 19
        10: .line 132
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityDataAccess;
            astore 9 /* cache */
        start local 9 // org.hibernate.cache.spi.access.EntityDataAccess cache
        11: .line 133
            aload 9 /* cache */
        12: .line 134
            aload 1 /* id */
        13: .line 135
            aload 2 /* persister */
        14: .line 136
            aload 6 /* factory */
        15: .line 137
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getTenantIdentifier:()Ljava/lang/String;
        16: .line 133
            invokeinterface org.hibernate.cache.spi.access.EntityDataAccess.generateCacheKey:(Ljava/lang/Object;Lorg/hibernate/persister/entity/EntityPersister;Lorg/hibernate/engine/spi/SessionFactoryImplementor;Ljava/lang/String;)Ljava/lang/Object;
            astore 8 /* ck */
        start local 8 // java.lang.Object ck
        17: .line 139
            aload 0 /* this */
            aload 9 /* cache */
            aload 3 /* session */
            aload 8 /* ck */
            aload 7 /* previousVersion */
            invokeinterface org.hibernate.cache.spi.access.EntityDataAccess.lockItem:(Lorg/hibernate/engine/spi/SharedSessionContractImplementor;Ljava/lang/Object;Ljava/lang/Object;)Lorg/hibernate/cache/spi/access/SoftLock;
            putfield org.hibernate.action.internal.EntityUpdateAction.lock:Lorg/hibernate/cache/spi/access/SoftLock;
        end local 9 // org.hibernate.cache.spi.access.EntityDataAccess cache
        18: .line 140
            goto 20
        end local 8 // java.lang.Object ck
        19: .line 142
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 8 /* ck */
        start local 8 // java.lang.Object ck
        20: .line 145
      StackMap locals: java.lang.Object
      StackMap stack:
            iload 5 /* veto */
            ifne 32
        21: .line 146
            aload 2 /* persister */
        22: .line 147
            aload 1 /* id */
        23: .line 148
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
        24: .line 149
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.dirtyFields:[I
        25: .line 150
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.hasDirtyCollection:Z
        26: .line 151
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousState:[Ljava/lang/Object;
        27: .line 152
            aload 7 /* previousVersion */
        28: .line 153
            aload 4 /* instance */
        29: .line 154
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.rowId:Ljava/lang/Object;
        30: .line 155
            aload 3 /* session */
        31: .line 146
            invokeinterface org.hibernate.persister.entity.EntityPersister.update:(Ljava/io/Serializable;[Ljava/lang/Object;[IZ[Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/engine/spi/SharedSessionContractImplementor;)V
        32: .line 159
      StackMap locals:
      StackMap stack:
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            aload 4 /* instance */
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getEntry:(Ljava/lang/Object;)Lorg/hibernate/engine/spi/EntityEntry;
            astore 9 /* entry */
        start local 9 // org.hibernate.engine.spi.EntityEntry entry
        33: .line 160
            aload 9 /* entry */
            ifnonnull 35
        34: .line 161
            new org.hibernate.AssertionFailure
            dup
            ldc "possible nonthreadsafe access to session"
            invokespecial org.hibernate.AssertionFailure.<init>:(Ljava/lang/String;)V
            athrow
        35: .line 164
      StackMap locals: org.hibernate.engine.spi.EntityEntry
      StackMap stack:
            aload 9 /* 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 36
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.isVersionPropertyGenerated:()Z
            ifeq 47
        36: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
        37: .line 170
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getPropertyTypes:()[Lorg/hibernate/type/Type;
        38: .line 171
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getPropertyCheckability:()[Z
        39: .line 172
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
        40: .line 173
            aload 3 /* session */
        41: .line 168
            invokestatic org.hibernate.type.TypeHelper.deepCopy:([Ljava/lang/Object;[Lorg/hibernate/type/Type;[Z[Ljava/lang/Object;Lorg/hibernate/engine/spi/SharedSessionContractImplementor;)V
        42: .line 175
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.hasUpdateGeneratedProperties:()Z
            ifeq 46
        43: .line 178
            aload 2 /* persister */
            aload 1 /* id */
            aload 4 /* instance */
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
            aload 3 /* session */
            invokeinterface org.hibernate.persister.entity.EntityPersister.processUpdateGeneratedProperties:(Ljava/io/Serializable;Ljava/lang/Object;[Ljava/lang/Object;Lorg/hibernate/engine/spi/SharedSessionContractImplementor;)V
        44: .line 179
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.isVersionPropertyGenerated:()Z
            ifeq 46
        45: .line 180
            aload 0 /* this */
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
            aload 2 /* persister */
            invokestatic org.hibernate.engine.internal.Versioning.getVersion:([Ljava/lang/Object;Lorg/hibernate/persister/entity/EntityPersister;)Ljava/lang/Object;
            putfield org.hibernate.action.internal.EntityUpdateAction.nextVersion:Ljava/lang/Object;
        46: .line 185
      StackMap locals:
      StackMap stack:
            aload 9 /* entry */
            aload 4 /* instance */
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.nextVersion:Ljava/lang/Object;
            invokeinterface org.hibernate.engine.spi.EntityEntry.postUpdate:(Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Object;)V
        47: .line 188
      StackMap locals:
      StackMap stack:
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.canWriteToCache:()Z
            ifeq 60
        48: .line 189
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.isCacheInvalidationRequired:()Z
            ifne 49
            aload 9 /* 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 51
        49: .line 190
      StackMap locals:
      StackMap stack:
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityDataAccess;
            aload 3 /* session */
            aload 8 /* ck */
            invokeinterface org.hibernate.cache.spi.access.EntityDataAccess.remove:(Lorg/hibernate/engine/spi/SharedSessionContractImplementor;Ljava/lang/Object;)V
        50: .line 191
            goto 60
        51: .line 192
      StackMap locals:
      StackMap stack:
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getCacheMode:()Lorg/hibernate/CacheMode;
            invokevirtual org.hibernate.CacheMode.isPutEnabled:()Z
            ifeq 60
        52: .line 194
            aload 2 /* persister */
            aload 4 /* instance */
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.nextVersion:Ljava/lang/Object;
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.persister.entity.EntityPersister.buildCacheEntry:(Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/engine/spi/SharedSessionContractImplementor;)Lorg/hibernate/cache/spi/entry/CacheEntry;
            astore 10 /* ce */
        start local 10 // org.hibernate.cache.spi.entry.CacheEntry ce
        53: .line 195
            aload 0 /* this */
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheEntryStructure:()Lorg/hibernate/cache/spi/entry/CacheEntryStructure;
            aload 10 /* ce */
            invokeinterface org.hibernate.cache.spi.entry.CacheEntryStructure.structure:(Ljava/lang/Object;)Ljava/lang/Object;
            putfield org.hibernate.action.internal.EntityUpdateAction.cacheEntry:Ljava/lang/Object;
        54: .line 197
            aload 0 /* this */
            aload 2 /* persister */
            aload 7 /* previousVersion */
            aload 8 /* ck */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.cacheUpdate:(Lorg/hibernate/persister/entity/EntityPersister;Ljava/lang/Object;Ljava/lang/Object;)Z
            istore 11 /* put */
        start local 11 // boolean put
        55: .line 198
            iload 11 /* put */
            ifeq 60
            aload 6 /* factory */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatistics:()Lorg/hibernate/stat/spi/StatisticsImplementor;
            invokeinterface org.hibernate.stat.spi.StatisticsImplementor.isStatisticsEnabled:()Z
            ifeq 60
        56: .line 199
            aload 6 /* factory */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatistics:()Lorg/hibernate/stat/spi/StatisticsImplementor;
        57: .line 200
            getstatic org.hibernate.stat.internal.StatsHelper.INSTANCE:Lorg/hibernate/stat/internal/StatsHelper;
            aload 2 /* persister */
            invokevirtual org.hibernate.stat.internal.StatsHelper.getRootEntityRole:(Lorg/hibernate/persister/entity/EntityPersister;)Lorg/hibernate/metamodel/model/domain/NavigableRole;
        58: .line 201
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityDataAccess;
            invokeinterface org.hibernate.cache.spi.access.EntityDataAccess.getRegion:()Lorg/hibernate/cache/spi/DomainDataRegion;
            invokeinterface org.hibernate.cache.spi.DomainDataRegion.getName:()Ljava/lang/String;
        59: .line 199
            invokeinterface org.hibernate.stat.spi.StatisticsImplementor.entityCachePut:(Lorg/hibernate/metamodel/model/domain/NavigableRole;Ljava/lang/String;)V
        end local 11 // boolean put
        end local 10 // org.hibernate.cache.spi.entry.CacheEntry ce
        60: .line 207
      StackMap locals:
      StackMap stack:
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getNaturalIdHelper:()Lorg/hibernate/engine/spi/PersistenceContext$NaturalIdHelper;
        61: .line 208
            aload 2 /* persister */
        62: .line 209
            aload 1 /* id */
        63: .line 210
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
        64: .line 211
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousNaturalIdValues:[Ljava/lang/Object;
        65: .line 212
            getstatic org.hibernate.engine.spi.CachedNaturalIdValueSource.UPDATE:Lorg/hibernate/engine/spi/CachedNaturalIdValueSource;
        66: .line 207
            invokeinterface org.hibernate.engine.spi.PersistenceContext$NaturalIdHelper.manageSharedNaturalIdCrossReference:(Lorg/hibernate/persister/entity/EntityPersister;Ljava/io/Serializable;[Ljava/lang/Object;[Ljava/lang/Object;Lorg/hibernate/engine/spi/CachedNaturalIdValueSource;)V
        67: .line 215
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.postUpdate:()V
        68: .line 217
            aload 6 /* factory */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatistics:()Lorg/hibernate/stat/spi/StatisticsImplementor;
            invokeinterface org.hibernate.stat.spi.StatisticsImplementor.isStatisticsEnabled:()Z
            ifeq 70
            iload 5 /* veto */
            ifne 70
        69: .line 218
            aload 6 /* factory */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatistics:()Lorg/hibernate/stat/spi/StatisticsImplementor;
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
            invokeinterface org.hibernate.persister.entity.EntityPersister.getEntityName:()Ljava/lang/String;
            invokeinterface org.hibernate.stat.spi.StatisticsImplementor.updateEntity:(Ljava/lang/String;)V
        70: .line 220
      StackMap locals:
      StackMap stack:
            return
        end local 9 // org.hibernate.engine.spi.EntityEntry entry
        end local 8 // java.lang.Object ck
        end local 7 // java.lang.Object previousVersion
        end local 6 // org.hibernate.engine.spi.SessionFactoryImplementor factory
        end local 5 // boolean veto
        end local 4 // java.lang.Object instance
        end local 3 // org.hibernate.engine.spi.SharedSessionContractImplementor session
        end local 2 // org.hibernate.persister.entity.EntityPersister persister
        end local 1 // java.io.Serializable id
        end local 0 // org.hibernate.action.internal.EntityUpdateAction this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   71     0             this  Lorg/hibernate/action/internal/EntityUpdateAction;
            1   71     1               id  Ljava/io/Serializable;
            2   71     2        persister  Lorg/hibernate/persister/entity/EntityPersister;
            3   71     3          session  Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            4   71     4         instance  Ljava/lang/Object;
            5   71     5             veto  Z
            6   71     6          factory  Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            7   71     7  previousVersion  Ljava/lang/Object;
           17   19     8               ck  Ljava/lang/Object;
           20   71     8               ck  Ljava/lang/Object;
           11   18     9            cache  Lorg/hibernate/cache/spi/access/EntityDataAccess;
           33   71     9            entry  Lorg/hibernate/engine/spi/EntityEntry;
           53   60    10               ce  Lorg/hibernate/cache/spi/entry/CacheEntry;
           55   60    11              put  Z
    Exceptions:
      throws org.hibernate.HibernateException

  private boolean cacheUpdate(org.hibernate.persister.entity.EntityPersister, java.lang.Object, java.lang.Object);
    descriptor: (Lorg/hibernate/persister/entity/EntityPersister;Ljava/lang/Object;Ljava/lang/Object;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
        start local 1 // org.hibernate.persister.entity.EntityPersister persister
        start local 2 // java.lang.Object previousVersion
        start local 3 // java.lang.Object ck
         0: .line 223
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            astore 4 /* session */
        start local 4 // org.hibernate.engine.spi.SharedSessionContractImplementor session
         1: .line 225
            aload 4 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getEventListenerManager:()Lorg/hibernate/engine/spi/SessionEventListenerManager;
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutStart:()V
         2: .line 226
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityDataAccess;
            aload 4 /* session */
            aload 3 /* ck */
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.cacheEntry:Ljava/lang/Object;
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.nextVersion:Ljava/lang/Object;
            aload 2 /* previousVersion */
            invokeinterface org.hibernate.cache.spi.access.EntityDataAccess.update:(Lorg/hibernate/engine/spi/SharedSessionContractImplementor;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
            istore 6
         3: .line 229
            aload 4 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getEventListenerManager:()Lorg/hibernate/engine/spi/SessionEventListenerManager;
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutEnd:()V
         4: .line 226
            iload 6
            ireturn
         5: .line 228
      StackMap locals: org.hibernate.action.internal.EntityUpdateAction org.hibernate.persister.entity.EntityPersister java.lang.Object java.lang.Object org.hibernate.engine.spi.SharedSessionContractImplementor
      StackMap stack: java.lang.Throwable
            astore 5
         6: .line 229
            aload 4 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getEventListenerManager:()Lorg/hibernate/engine/spi/SessionEventListenerManager;
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutEnd:()V
         7: .line 230
            aload 5
            athrow
        end local 4 // org.hibernate.engine.spi.SharedSessionContractImplementor session
        end local 3 // java.lang.Object ck
        end local 2 // java.lang.Object previousVersion
        end local 1 // org.hibernate.persister.entity.EntityPersister persister
        end local 0 // org.hibernate.action.internal.EntityUpdateAction this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    8     0             this  Lorg/hibernate/action/internal/EntityUpdateAction;
            0    8     1        persister  Lorg/hibernate/persister/entity/EntityPersister;
            0    8     2  previousVersion  Ljava/lang/Object;
            0    8     3               ck  Ljava/lang/Object;
            1    8     4          session  Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
      Exception table:
        from    to  target  type
           1     3       5  any
    MethodParameters:
                 Name  Flags
      persister        
      previousVersion  
      ck               

  private boolean preUpdate();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=6, args_size=1
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
         0: .line 234
            iconst_0
            istore 1 /* veto */
        start local 1 // boolean veto
         1: .line 235
            aload 0 /* this */
            getstatic org.hibernate.event.spi.EventType.PRE_UPDATE:Lorg/hibernate/event/spi/EventType;
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.listenerGroup:(Lorg/hibernate/event/spi/EventType;)Lorg/hibernate/event/service/spi/EventListenerGroup;
            astore 2 /* listenerGroup */
        start local 2 // org.hibernate.event.service.spi.EventListenerGroup listenerGroup
         2: .line 236
            aload 2 /* listenerGroup */
            invokeinterface org.hibernate.event.service.spi.EventListenerGroup.isEmpty:()Z
            ifeq 4
         3: .line 237
            iload 1 /* veto */
            ireturn
         4: .line 239
      StackMap locals: int org.hibernate.event.service.spi.EventListenerGroup
      StackMap stack:
            new org.hibernate.event.spi.PreUpdateEvent
            dup
         5: .line 240
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getInstance:()Ljava/lang/Object;
         6: .line 241
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getId:()Ljava/io/Serializable;
         7: .line 242
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
         8: .line 243
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousState:[Ljava/lang/Object;
         9: .line 244
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
        10: .line 245
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.eventSource:()Lorg/hibernate/event/spi/EventSource;
        11: .line 239
            invokespecial org.hibernate.event.spi.PreUpdateEvent.<init>:(Ljava/lang/Object;Ljava/io/Serializable;[Ljava/lang/Object;[Ljava/lang/Object;Lorg/hibernate/persister/entity/EntityPersister;Lorg/hibernate/event/spi/EventSource;)V
            astore 3 /* event */
        start local 3 // org.hibernate.event.spi.PreUpdateEvent event
        12: .line 247
            aload 2 /* listenerGroup */
            invokeinterface org.hibernate.event.service.spi.EventListenerGroup.listeners:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 15
      StackMap locals: org.hibernate.action.internal.EntityUpdateAction int org.hibernate.event.service.spi.EventListenerGroup org.hibernate.event.spi.PreUpdateEvent top java.util.Iterator
      StackMap stack:
        13: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.hibernate.event.spi.PreUpdateEventListener
            astore 4 /* listener */
        start local 4 // org.hibernate.event.spi.PreUpdateEventListener listener
        14: .line 248
            iload 1 /* veto */
            aload 4 /* listener */
            aload 3 /* event */
            invokeinterface org.hibernate.event.spi.PreUpdateEventListener.onPreUpdate:(Lorg/hibernate/event/spi/PreUpdateEvent;)Z
            ior
            istore 1 /* veto */
        end local 4 // org.hibernate.event.spi.PreUpdateEventListener listener
        15: .line 247
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        16: .line 250
            iload 1 /* veto */
            ireturn
        end local 3 // org.hibernate.event.spi.PreUpdateEvent event
        end local 2 // org.hibernate.event.service.spi.EventListenerGroup listenerGroup
        end local 1 // boolean veto
        end local 0 // org.hibernate.action.internal.EntityUpdateAction this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0           this  Lorg/hibernate/action/internal/EntityUpdateAction;
            1   17     1           veto  Z
            2   17     2  listenerGroup  Lorg/hibernate/event/service/spi/EventListenerGroup<Lorg/hibernate/event/spi/PreUpdateEventListener;>;
           12   17     3          event  Lorg/hibernate/event/spi/PreUpdateEvent;
           14   15     4       listener  Lorg/hibernate/event/spi/PreUpdateEventListener;

  private void postUpdate();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=5, args_size=1
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
         0: .line 254
            aload 0 /* this */
            getstatic org.hibernate.event.spi.EventType.POST_UPDATE:Lorg/hibernate/event/spi/EventType;
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.listenerGroup:(Lorg/hibernate/event/spi/EventType;)Lorg/hibernate/event/service/spi/EventListenerGroup;
            astore 1 /* listenerGroup */
        start local 1 // org.hibernate.event.service.spi.EventListenerGroup listenerGroup
         1: .line 255
            aload 1 /* listenerGroup */
            invokeinterface org.hibernate.event.service.spi.EventListenerGroup.isEmpty:()Z
            ifeq 3
         2: .line 256
            return
         3: .line 258
      StackMap locals: org.hibernate.event.service.spi.EventListenerGroup
      StackMap stack:
            new org.hibernate.event.spi.PostUpdateEvent
            dup
         4: .line 259
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getInstance:()Ljava/lang/Object;
         5: .line 260
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getId:()Ljava/io/Serializable;
         6: .line 261
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
         7: .line 262
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousState:[Ljava/lang/Object;
         8: .line 263
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.dirtyFields:[I
         9: .line 264
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
        10: .line 265
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.eventSource:()Lorg/hibernate/event/spi/EventSource;
        11: .line 258
            invokespecial org.hibernate.event.spi.PostUpdateEvent.<init>:(Ljava/lang/Object;Ljava/io/Serializable;[Ljava/lang/Object;[Ljava/lang/Object;[ILorg/hibernate/persister/entity/EntityPersister;Lorg/hibernate/event/spi/EventSource;)V
            astore 2 /* event */
        start local 2 // org.hibernate.event.spi.PostUpdateEvent event
        12: .line 267
            aload 1 /* listenerGroup */
            invokeinterface org.hibernate.event.service.spi.EventListenerGroup.listeners:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 4
            goto 15
      StackMap locals: org.hibernate.action.internal.EntityUpdateAction org.hibernate.event.service.spi.EventListenerGroup org.hibernate.event.spi.PostUpdateEvent top java.util.Iterator
      StackMap stack:
        13: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.hibernate.event.spi.PostUpdateEventListener
            astore 3 /* listener */
        start local 3 // org.hibernate.event.spi.PostUpdateEventListener listener
        14: .line 268
            aload 3 /* listener */
            aload 2 /* event */
            invokeinterface org.hibernate.event.spi.PostUpdateEventListener.onPostUpdate:(Lorg/hibernate/event/spi/PostUpdateEvent;)V
        end local 3 // org.hibernate.event.spi.PostUpdateEventListener listener
        15: .line 267
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        16: .line 270
            return
        end local 2 // org.hibernate.event.spi.PostUpdateEvent event
        end local 1 // org.hibernate.event.service.spi.EventListenerGroup listenerGroup
        end local 0 // org.hibernate.action.internal.EntityUpdateAction this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0           this  Lorg/hibernate/action/internal/EntityUpdateAction;
            1   17     1  listenerGroup  Lorg/hibernate/event/service/spi/EventListenerGroup<Lorg/hibernate/event/spi/PostUpdateEventListener;>;
           12   17     2          event  Lorg/hibernate/event/spi/PostUpdateEvent;
           14   15     3       listener  Lorg/hibernate/event/spi/PostUpdateEventListener;

  private void postCommitUpdate(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=6, args_size=2
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
        start local 1 // boolean success
         0: .line 273
            aload 0 /* this */
            getstatic org.hibernate.event.spi.EventType.POST_COMMIT_UPDATE:Lorg/hibernate/event/spi/EventType;
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.listenerGroup:(Lorg/hibernate/event/spi/EventType;)Lorg/hibernate/event/service/spi/EventListenerGroup;
            astore 2 /* listenerGroup */
        start local 2 // org.hibernate.event.service.spi.EventListenerGroup listenerGroup
         1: .line 274
            aload 2 /* listenerGroup */
            invokeinterface org.hibernate.event.service.spi.EventListenerGroup.isEmpty:()Z
            ifeq 3
         2: .line 275
            return
         3: .line 277
      StackMap locals: org.hibernate.event.service.spi.EventListenerGroup
      StackMap stack:
            new org.hibernate.event.spi.PostUpdateEvent
            dup
         4: .line 278
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getInstance:()Ljava/lang/Object;
         5: .line 279
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getId:()Ljava/io/Serializable;
         6: .line 280
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
         7: .line 281
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousState:[Ljava/lang/Object;
         8: .line 282
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.dirtyFields:[I
         9: .line 283
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
        10: .line 284
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.eventSource:()Lorg/hibernate/event/spi/EventSource;
        11: .line 277
            invokespecial org.hibernate.event.spi.PostUpdateEvent.<init>:(Ljava/lang/Object;Ljava/io/Serializable;[Ljava/lang/Object;[Ljava/lang/Object;[ILorg/hibernate/persister/entity/EntityPersister;Lorg/hibernate/event/spi/EventSource;)V
            astore 3 /* event */
        start local 3 // org.hibernate.event.spi.PostUpdateEvent event
        12: .line 286
            aload 2 /* listenerGroup */
            invokeinterface org.hibernate.event.service.spi.EventListenerGroup.listeners:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 21
      StackMap locals: org.hibernate.action.internal.EntityUpdateAction int org.hibernate.event.service.spi.EventListenerGroup org.hibernate.event.spi.PostUpdateEvent top java.util.Iterator
      StackMap stack:
        13: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.hibernate.event.spi.PostUpdateEventListener
            astore 4 /* listener */
        start local 4 // org.hibernate.event.spi.PostUpdateEventListener listener
        14: .line 287
            ldc Lorg/hibernate/event/spi/PostCommitUpdateEventListener;
            aload 4 /* listener */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 20
        15: .line 288
            iload 1 /* success */
            ifeq 18
        16: .line 289
            aload 4 /* listener */
            aload 3 /* event */
            invokeinterface org.hibernate.event.spi.PostUpdateEventListener.onPostUpdate:(Lorg/hibernate/event/spi/PostUpdateEvent;)V
        17: .line 290
            goto 21
        18: .line 292
      StackMap locals: org.hibernate.action.internal.EntityUpdateAction int org.hibernate.event.service.spi.EventListenerGroup org.hibernate.event.spi.PostUpdateEvent org.hibernate.event.spi.PostUpdateEventListener java.util.Iterator
      StackMap stack:
            aload 4 /* listener */
            checkcast org.hibernate.event.spi.PostCommitUpdateEventListener
            aload 3 /* event */
            invokeinterface org.hibernate.event.spi.PostCommitUpdateEventListener.onPostUpdateCommitFailed:(Lorg/hibernate/event/spi/PostUpdateEvent;)V
        19: .line 294
            goto 21
        20: .line 297
      StackMap locals:
      StackMap stack:
            aload 4 /* listener */
            aload 3 /* event */
            invokeinterface org.hibernate.event.spi.PostUpdateEventListener.onPostUpdate:(Lorg/hibernate/event/spi/PostUpdateEvent;)V
        end local 4 // org.hibernate.event.spi.PostUpdateEventListener listener
        21: .line 286
      StackMap locals: org.hibernate.action.internal.EntityUpdateAction int org.hibernate.event.service.spi.EventListenerGroup org.hibernate.event.spi.PostUpdateEvent top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        22: .line 300
            return
        end local 3 // org.hibernate.event.spi.PostUpdateEvent event
        end local 2 // org.hibernate.event.service.spi.EventListenerGroup listenerGroup
        end local 1 // boolean success
        end local 0 // org.hibernate.action.internal.EntityUpdateAction this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   23     0           this  Lorg/hibernate/action/internal/EntityUpdateAction;
            0   23     1        success  Z
            1   23     2  listenerGroup  Lorg/hibernate/event/service/spi/EventListenerGroup<Lorg/hibernate/event/spi/PostUpdateEventListener;>;
           12   23     3          event  Lorg/hibernate/event/spi/PostUpdateEvent;
           14   21     4       listener  Lorg/hibernate/event/spi/PostUpdateEventListener;
    MethodParameters:
         Name  Flags
      success  

  protected boolean hasPostCommitEventListeners();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
         0: .line 304
            aload 0 /* this */
            getstatic org.hibernate.event.spi.EventType.POST_COMMIT_UPDATE:Lorg/hibernate/event/spi/EventType;
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.listenerGroup:(Lorg/hibernate/event/spi/EventType;)Lorg/hibernate/event/service/spi/EventListenerGroup;
            astore 1 /* group */
        start local 1 // org.hibernate.event.service.spi.EventListenerGroup group
         1: .line 305
            aload 1 /* group */
            invokeinterface org.hibernate.event.service.spi.EventListenerGroup.listeners:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: org.hibernate.action.internal.EntityUpdateAction org.hibernate.event.service.spi.EventListenerGroup top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.hibernate.event.spi.PostUpdateEventListener
            astore 2 /* listener */
        start local 2 // org.hibernate.event.spi.PostUpdateEventListener listener
         3: .line 306
            aload 2 /* listener */
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
            invokeinterface org.hibernate.event.spi.PostUpdateEventListener.requiresPostCommitHandling:(Lorg/hibernate/persister/entity/EntityPersister;)Z
            ifeq 5
         4: .line 307
            iconst_1
            ireturn
        end local 2 // org.hibernate.event.spi.PostUpdateEventListener listener
         5: .line 305
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 311
            iconst_0
            ireturn
        end local 1 // org.hibernate.event.service.spi.EventListenerGroup group
        end local 0 // org.hibernate.action.internal.EntityUpdateAction this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/hibernate/action/internal/EntityUpdateAction;
            1    7     1     group  Lorg/hibernate/event/service/spi/EventListenerGroup<Lorg/hibernate/event/spi/PostUpdateEventListener;>;
            3    5     2  listener  Lorg/hibernate/event/spi/PostUpdateEventListener;

  public void doAfterTransactionCompletion(boolean, org.hibernate.engine.spi.SharedSessionContractImplementor);
    descriptor: (ZLorg/hibernate/engine/spi/SharedSessionContractImplementor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
        start local 1 // boolean success
        start local 2 // org.hibernate.engine.spi.SharedSessionContractImplementor session
         0: .line 316
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
            astore 3 /* persister */
        start local 3 // org.hibernate.persister.entity.EntityPersister persister
         1: .line 317
            aload 3 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.canWriteToCache:()Z
            ifeq 21
         2: .line 318
            aload 3 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityDataAccess;
            astore 4 /* cache */
        start local 4 // org.hibernate.cache.spi.access.EntityDataAccess cache
         3: .line 319
            aload 4 /* cache */
         4: .line 320
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getId:()Ljava/io/Serializable;
         5: .line 321
            aload 3 /* persister */
         6: .line 322
            aload 2 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
         7: .line 323
            aload 2 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getTenantIdentifier:()Ljava/lang/String;
         8: .line 319
            invokeinterface org.hibernate.cache.spi.access.EntityDataAccess.generateCacheKey:(Ljava/lang/Object;Lorg/hibernate/persister/entity/EntityPersister;Lorg/hibernate/engine/spi/SessionFactoryImplementor;Ljava/lang/String;)Ljava/lang/Object;
            astore 5 /* ck */
        start local 5 // java.lang.Object ck
         9: .line 327
            iload 1 /* success */
            ifeq 20
        10: .line 328
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.cacheEntry:Ljava/lang/Object;
            ifnull 20
        11: .line 329
            aload 3 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.isCacheInvalidationRequired:()Z
            ifne 20
        12: .line 330
            aload 2 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getCacheMode:()Lorg/hibernate/CacheMode;
            invokevirtual org.hibernate.CacheMode.isPutEnabled:()Z
            ifeq 20
        13: .line 331
            aload 0 /* this */
            aload 4 /* cache */
            aload 5 /* ck */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.cacheAfterUpdate:(Lorg/hibernate/cache/spi/access/EntityDataAccess;Ljava/lang/Object;)Z
            istore 6 /* put */
        start local 6 // boolean put
        14: .line 333
            iload 6 /* put */
            ifeq 21
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatistics:()Lorg/hibernate/stat/spi/StatisticsImplementor;
            invokeinterface org.hibernate.stat.spi.StatisticsImplementor.isStatisticsEnabled:()Z
            ifeq 21
        15: .line 334
            aload 2 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatistics:()Lorg/hibernate/stat/spi/StatisticsImplementor;
        16: .line 335
            getstatic org.hibernate.stat.internal.StatsHelper.INSTANCE:Lorg/hibernate/stat/internal/StatsHelper;
            aload 3 /* persister */
            invokevirtual org.hibernate.stat.internal.StatsHelper.getRootEntityRole:(Lorg/hibernate/persister/entity/EntityPersister;)Lorg/hibernate/metamodel/model/domain/NavigableRole;
        17: .line 336
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityDataAccess;
            invokeinterface org.hibernate.cache.spi.access.EntityDataAccess.getRegion:()Lorg/hibernate/cache/spi/DomainDataRegion;
            invokeinterface org.hibernate.cache.spi.DomainDataRegion.getName:()Ljava/lang/String;
        18: .line 334
            invokeinterface org.hibernate.stat.spi.StatisticsImplementor.entityCachePut:(Lorg/hibernate/metamodel/model/domain/NavigableRole;Ljava/lang/String;)V
        end local 6 // boolean put
        19: .line 339
            goto 21
        20: .line 341
      StackMap locals: org.hibernate.persister.entity.EntityPersister org.hibernate.cache.spi.access.EntityDataAccess java.lang.Object
      StackMap stack:
            aload 4 /* cache */
            aload 2 /* session */
            aload 5 /* ck */
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.lock:Lorg/hibernate/cache/spi/access/SoftLock;
            invokeinterface org.hibernate.cache.spi.access.EntityDataAccess.unlockItem:(Lorg/hibernate/engine/spi/SharedSessionContractImplementor;Ljava/lang/Object;Lorg/hibernate/cache/spi/access/SoftLock;)V
        end local 5 // java.lang.Object ck
        end local 4 // org.hibernate.cache.spi.access.EntityDataAccess cache
        21: .line 344
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* success */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.postCommitUpdate:(Z)V
        22: .line 345
            return
        end local 3 // org.hibernate.persister.entity.EntityPersister persister
        end local 2 // org.hibernate.engine.spi.SharedSessionContractImplementor session
        end local 1 // boolean success
        end local 0 // org.hibernate.action.internal.EntityUpdateAction this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   23     0       this  Lorg/hibernate/action/internal/EntityUpdateAction;
            0   23     1    success  Z
            0   23     2    session  Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            1   23     3  persister  Lorg/hibernate/persister/entity/EntityPersister;
            3   21     4      cache  Lorg/hibernate/cache/spi/access/EntityDataAccess;
            9   21     5         ck  Ljava/lang/Object;
           14   19     6        put  Z
    Exceptions:
      throws org.hibernate.cache.CacheException
    MethodParameters:
         Name  Flags
      success  
      session  

  private boolean cacheAfterUpdate(org.hibernate.cache.spi.access.EntityDataAccess, java.lang.Object);
    descriptor: (Lorg/hibernate/cache/spi/access/EntityDataAccess;Ljava/lang/Object;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=7, args_size=3
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
        start local 1 // org.hibernate.cache.spi.access.EntityDataAccess cache
        start local 2 // java.lang.Object ck
         0: .line 348
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            astore 3 /* session */
        start local 3 // org.hibernate.engine.spi.SharedSessionContractImplementor session
         1: .line 349
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SharedSessionContractImplementor.getEventListenerManager:()Lorg/hibernate/engine/spi/SessionEventListenerManager;
            astore 4 /* eventListenerManager */
        start local 4 // org.hibernate.engine.spi.SessionEventListenerManager eventListenerManager
         2: .line 351
            aload 4 /* eventListenerManager */
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutStart:()V
         3: .line 352
            aload 1 /* cache */
            aload 3 /* session */
            aload 2 /* ck */
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.cacheEntry:Ljava/lang/Object;
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.nextVersion:Ljava/lang/Object;
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousVersion:Ljava/lang/Object;
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.lock:Lorg/hibernate/cache/spi/access/SoftLock;
            invokeinterface org.hibernate.cache.spi.access.EntityDataAccess.afterUpdate:(Lorg/hibernate/engine/spi/SharedSessionContractImplementor;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/cache/spi/access/SoftLock;)Z
            istore 6
         4: .line 355
            aload 4 /* eventListenerManager */
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutEnd:()V
         5: .line 352
            iload 6
            ireturn
         6: .line 354
      StackMap locals: org.hibernate.action.internal.EntityUpdateAction org.hibernate.cache.spi.access.EntityDataAccess java.lang.Object org.hibernate.engine.spi.SharedSessionContractImplementor org.hibernate.engine.spi.SessionEventListenerManager
      StackMap stack: java.lang.Throwable
            astore 5
         7: .line 355
            aload 4 /* eventListenerManager */
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutEnd:()V
         8: .line 356
            aload 5
            athrow
        end local 4 // org.hibernate.engine.spi.SessionEventListenerManager eventListenerManager
        end local 3 // org.hibernate.engine.spi.SharedSessionContractImplementor session
        end local 2 // java.lang.Object ck
        end local 1 // org.hibernate.cache.spi.access.EntityDataAccess cache
        end local 0 // org.hibernate.action.internal.EntityUpdateAction this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    9     0                  this  Lorg/hibernate/action/internal/EntityUpdateAction;
            0    9     1                 cache  Lorg/hibernate/cache/spi/access/EntityDataAccess;
            0    9     2                    ck  Ljava/lang/Object;
            1    9     3               session  Lorg/hibernate/engine/spi/SharedSessionContractImplementor;
            2    9     4  eventListenerManager  Lorg/hibernate/engine/spi/SessionEventListenerManager;
      Exception table:
        from    to  target  type
           2     4       6  any
    MethodParameters:
       Name  Flags
      cache  
      ck     
}
SourceFile: "EntityUpdateAction.java"
InnerClasses:
  public abstract NaturalIdHelper = org.hibernate.engine.spi.PersistenceContext$NaturalIdHelper of org.hibernate.engine.spi.PersistenceContext