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.SessionImplementor);
    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/SessionImplementor;)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.SessionImplementor session
         0: .line 92
            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/SessionImplementor;Ljava/io/Serializable;Ljava/lang/Object;Lorg/hibernate/persister/entity/EntityPersister;)V
         1: .line 93
            aload 0 /* this */
            aload 2 /* state */
            putfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
         2: .line 94
            aload 0 /* this */
            aload 5 /* previousState */
            putfield org.hibernate.action.internal.EntityUpdateAction.previousState:[Ljava/lang/Object;
         3: .line 95
            aload 0 /* this */
            aload 6 /* previousVersion */
            putfield org.hibernate.action.internal.EntityUpdateAction.previousVersion:Ljava/lang/Object;
         4: .line 96
            aload 0 /* this */
            aload 7 /* nextVersion */
            putfield org.hibernate.action.internal.EntityUpdateAction.nextVersion:Ljava/lang/Object;
         5: .line 97
            aload 0 /* this */
            aload 3 /* dirtyProperties */
            putfield org.hibernate.action.internal.EntityUpdateAction.dirtyFields:[I
         6: .line 98
            aload 0 /* this */
            iload 4 /* hasDirtyCollection */
            putfield org.hibernate.action.internal.EntityUpdateAction.hasDirtyCollection:Z
         7: .line 99
            aload 0 /* this */
            aload 9 /* rowId */
            putfield org.hibernate.action.internal.EntityUpdateAction.rowId:Ljava/lang/Object;
         8: .line 101
            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/SessionImplementor;Ljava/io/Serializable;)[Ljava/lang/Object;
            putfield org.hibernate.action.internal.EntityUpdateAction.previousNaturalIdValues:[Ljava/lang/Object;
         9: .line 102
            aload 11 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getNaturalIdHelper:()Lorg/hibernate/engine/spi/PersistenceContext$NaturalIdHelper;
        10: .line 103
            aload 10 /* persister */
        11: .line 104
            aload 1 /* id */
        12: .line 105
            aload 2 /* state */
        13: .line 106
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousNaturalIdValues:[Ljava/lang/Object;
        14: .line 107
            getstatic org.hibernate.engine.spi.CachedNaturalIdValueSource.UPDATE:Lorg/hibernate/engine/spi/CachedNaturalIdValueSource;
        15: .line 102
            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 109
            return
        end local 11 // org.hibernate.engine.spi.SessionImplementor 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/SessionImplementor;
    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.SessionImplementor, java.io.Serializable);
    descriptor: (Lorg/hibernate/persister/entity/EntityPersister;[Ljava/lang/Object;Lorg/hibernate/engine/spi/SessionImplementor;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.SessionImplementor session
        start local 4 // java.io.Serializable id
         0: .line 116
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.hasNaturalIdentifier:()Z
            ifne 2
         1: .line 117
            aconst_null
            areturn
         2: .line 120
      StackMap locals:
      StackMap stack:
            aload 2 /* previousState */
            ifnull 4
         3: .line 121
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.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 124
      StackMap locals:
      StackMap stack:
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.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.SessionImplementor 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/SessionImplementor;
            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 129
            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 130
            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 131
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            astore 3 /* session */
        start local 3 // org.hibernate.engine.spi.SessionImplementor session
         3: .line 132
            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 134
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.preUpdate:()Z
            istore 5 /* veto */
        start local 5 // boolean veto
         5: .line 136
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            astore 6 /* factory */
        start local 6 // org.hibernate.engine.spi.SessionFactoryImplementor factory
         6: .line 137
            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 138
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.isVersionPropertyGenerated:()Z
            ifeq 9
         8: .line 142
            aload 2 /* persister */
            aload 4 /* instance */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getVersion:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* previousVersion */
         9: .line 146
      StackMap locals: org.hibernate.action.internal.EntityUpdateAction java.io.Serializable org.hibernate.persister.entity.EntityPersister org.hibernate.engine.spi.SessionImplementor java.lang.Object int org.hibernate.engine.spi.SessionFactoryImplementor java.lang.Object
      StackMap stack:
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.hasCache:()Z
            ifeq 17
        10: .line 147
            aload 3 /* session */
        11: .line 148
            aload 1 /* id */
        12: .line 149
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getIdentifierType:()Lorg/hibernate/type/Type;
        13: .line 150
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getRootEntityName:()Ljava/lang/String;
        14: .line 147
            invokeinterface org.hibernate.engine.spi.SessionImplementor.generateCacheKey:(Ljava/io/Serializable;Lorg/hibernate/type/Type;Ljava/lang/String;)Lorg/hibernate/cache/spi/CacheKey;
            astore 8 /* ck */
        start local 8 // org.hibernate.cache.spi.CacheKey ck
        15: .line 152
            aload 0 /* this */
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityRegionAccessStrategy;
            aload 8 /* ck */
            aload 7 /* previousVersion */
            invokeinterface org.hibernate.cache.spi.access.EntityRegionAccessStrategy.lockItem:(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;
        16: .line 153
            goto 18
        end local 8 // org.hibernate.cache.spi.CacheKey ck
        17: .line 155
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 8 /* ck */
        start local 8 // org.hibernate.cache.spi.CacheKey ck
        18: .line 158
      StackMap locals: org.hibernate.cache.spi.CacheKey
      StackMap stack:
            iload 5 /* veto */
            ifne 30
        19: .line 159
            aload 2 /* persister */
        20: .line 160
            aload 1 /* id */
        21: .line 161
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
        22: .line 162
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.dirtyFields:[I
        23: .line 163
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.hasDirtyCollection:Z
        24: .line 164
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousState:[Ljava/lang/Object;
        25: .line 165
            aload 7 /* previousVersion */
        26: .line 166
            aload 4 /* instance */
        27: .line 167
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.rowId:Ljava/lang/Object;
        28: .line 168
            aload 3 /* session */
        29: .line 159
            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/SessionImplementor;)V
        30: .line 172
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.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
        31: .line 173
            aload 9 /* entry */
            ifnonnull 33
        32: .line 174
            new org.hibernate.AssertionFailure
            dup
            ldc "possible nonthreadsafe access to session"
            invokespecial org.hibernate.AssertionFailure.<init>:(Ljava/lang/String;)V
            athrow
        33: .line 177
      StackMap locals: org.hibernate.engine.spi.EntityEntry
      StackMap stack:
            aload 9 /* entry */
            invokevirtual 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 34
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.isVersionPropertyGenerated:()Z
            ifeq 45
        34: .line 182
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
        35: .line 183
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getPropertyTypes:()[Lorg/hibernate/type/Type;
        36: .line 184
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getPropertyCheckability:()[Z
        37: .line 185
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
        38: .line 186
            aload 3 /* session */
        39: .line 181
            invokestatic org.hibernate.type.TypeHelper.deepCopy:([Ljava/lang/Object;[Lorg/hibernate/type/Type;[Z[Ljava/lang/Object;Lorg/hibernate/engine/spi/SessionImplementor;)V
        40: .line 188
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.hasUpdateGeneratedProperties:()Z
            ifeq 44
        41: .line 191
            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/SessionImplementor;)V
        42: .line 192
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.isVersionPropertyGenerated:()Z
            ifeq 44
        43: .line 193
            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;
        44: .line 198
      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;
            invokevirtual org.hibernate.engine.spi.EntityEntry.postUpdate:(Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Object;)V
        45: .line 201
      StackMap locals:
      StackMap stack:
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.hasCache:()Z
            ifeq 54
        46: .line 202
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.isCacheInvalidationRequired:()Z
            ifne 47
            aload 9 /* entry */
            invokevirtual 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 49
        47: .line 203
      StackMap locals:
      StackMap stack:
            aload 2 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityRegionAccessStrategy;
            aload 8 /* ck */
            invokeinterface org.hibernate.cache.spi.access.EntityRegionAccessStrategy.remove:(Ljava/lang/Object;)V
        48: .line 204
            goto 54
        49: .line 207
      StackMap locals:
      StackMap stack:
            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/SessionImplementor;
            invokeinterface org.hibernate.persister.entity.EntityPersister.buildCacheEntry:(Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/engine/spi/SessionImplementor;)Lorg/hibernate/cache/spi/entry/CacheEntry;
            astore 10 /* ce */
        start local 10 // org.hibernate.cache.spi.entry.CacheEntry ce
        50: .line 208
            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;
        51: .line 210
            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;Lorg/hibernate/cache/spi/CacheKey;)Z
            istore 11 /* put */
        start local 11 // boolean put
        52: .line 211
            iload 11 /* put */
            ifeq 54
            aload 6 /* factory */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatistics:()Lorg/hibernate/stat/Statistics;
            invokeinterface org.hibernate.stat.Statistics.isStatisticsEnabled:()Z
            ifeq 54
        53: .line 212
            aload 6 /* factory */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatisticsImplementor:()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.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityRegionAccessStrategy;
            invokeinterface org.hibernate.cache.spi.access.EntityRegionAccessStrategy.getRegion:()Lorg/hibernate/cache/spi/EntityRegion;
            invokeinterface org.hibernate.cache.spi.EntityRegion.getName:()Ljava/lang/String;
            invokeinterface org.hibernate.stat.spi.StatisticsImplementor.secondLevelCachePut:(Ljava/lang/String;)V
        end local 11 // boolean put
        end local 10 // org.hibernate.cache.spi.entry.CacheEntry ce
        54: .line 217
      StackMap locals:
      StackMap stack:
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getNaturalIdHelper:()Lorg/hibernate/engine/spi/PersistenceContext$NaturalIdHelper;
        55: .line 218
            aload 2 /* persister */
        56: .line 219
            aload 1 /* id */
        57: .line 220
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
        58: .line 221
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousNaturalIdValues:[Ljava/lang/Object;
        59: .line 222
            getstatic org.hibernate.engine.spi.CachedNaturalIdValueSource.UPDATE:Lorg/hibernate/engine/spi/CachedNaturalIdValueSource;
        60: .line 217
            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
        61: .line 225
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.postUpdate:()V
        62: .line 227
            aload 6 /* factory */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatistics:()Lorg/hibernate/stat/Statistics;
            invokeinterface org.hibernate.stat.Statistics.isStatisticsEnabled:()Z
            ifeq 64
            iload 5 /* veto */
            ifne 64
        63: .line 228
            aload 6 /* factory */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatisticsImplementor:()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
        64: .line 230
      StackMap locals:
      StackMap stack:
            return
        end local 9 // org.hibernate.engine.spi.EntityEntry entry
        end local 8 // org.hibernate.cache.spi.CacheKey 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.SessionImplementor 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   65     0             this  Lorg/hibernate/action/internal/EntityUpdateAction;
            1   65     1               id  Ljava/io/Serializable;
            2   65     2        persister  Lorg/hibernate/persister/entity/EntityPersister;
            3   65     3          session  Lorg/hibernate/engine/spi/SessionImplementor;
            4   65     4         instance  Ljava/lang/Object;
            5   65     5             veto  Z
            6   65     6          factory  Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            7   65     7  previousVersion  Ljava/lang/Object;
           15   17     8               ck  Lorg/hibernate/cache/spi/CacheKey;
           18   65     8               ck  Lorg/hibernate/cache/spi/CacheKey;
           31   65     9            entry  Lorg/hibernate/engine/spi/EntityEntry;
           50   54    10               ce  Lorg/hibernate/cache/spi/entry/CacheEntry;
           52   54    11              put  Z
    Exceptions:
      throws org.hibernate.HibernateException

  private boolean cacheUpdate(org.hibernate.persister.entity.EntityPersister, java.lang.Object, org.hibernate.cache.spi.CacheKey);
    descriptor: (Lorg/hibernate/persister/entity/EntityPersister;Ljava/lang/Object;Lorg/hibernate/cache/spi/CacheKey;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, 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 // org.hibernate.cache.spi.CacheKey ck
         0: .line 234
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getEventListenerManager:()Lorg/hibernate/engine/spi/SessionEventListenerManager;
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutStart:()V
         1: .line 235
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityRegionAccessStrategy;
            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.EntityRegionAccessStrategy.update:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
            istore 5
         2: .line 238
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getEventListenerManager:()Lorg/hibernate/engine/spi/SessionEventListenerManager;
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutEnd:()V
         3: .line 235
            iload 5
            ireturn
         4: .line 237
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
         5: .line 238
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getEventListenerManager:()Lorg/hibernate/engine/spi/SessionEventListenerManager;
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutEnd:()V
         6: .line 239
            aload 4
            athrow
        end local 3 // org.hibernate.cache.spi.CacheKey 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    7     0             this  Lorg/hibernate/action/internal/EntityUpdateAction;
            0    7     1        persister  Lorg/hibernate/persister/entity/EntityPersister;
            0    7     2  previousVersion  Ljava/lang/Object;
            0    7     3               ck  Lorg/hibernate/cache/spi/CacheKey;
      Exception table:
        from    to  target  type
           0     2       4  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 243
            iconst_0
            istore 1 /* veto */
        start local 1 // boolean veto
         1: .line 244
            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 245
            aload 2 /* listenerGroup */
            invokeinterface org.hibernate.event.service.spi.EventListenerGroup.isEmpty:()Z
            ifeq 4
         3: .line 246
            iload 1 /* veto */
            ireturn
         4: .line 248
      StackMap locals: int org.hibernate.event.service.spi.EventListenerGroup
      StackMap stack:
            new org.hibernate.event.spi.PreUpdateEvent
            dup
         5: .line 249
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getInstance:()Ljava/lang/Object;
         6: .line 250
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getId:()Ljava/io/Serializable;
         7: .line 251
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
         8: .line 252
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousState:[Ljava/lang/Object;
         9: .line 253
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
        10: .line 254
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.eventSource:()Lorg/hibernate/event/spi/EventSource;
        11: .line 248
            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 256
            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 257
            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 256
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        16: .line 259
            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 263
            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 264
            aload 1 /* listenerGroup */
            invokeinterface org.hibernate.event.service.spi.EventListenerGroup.isEmpty:()Z
            ifeq 3
         2: .line 265
            return
         3: .line 267
      StackMap locals: org.hibernate.event.service.spi.EventListenerGroup
      StackMap stack:
            new org.hibernate.event.spi.PostUpdateEvent
            dup
         4: .line 268
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getInstance:()Ljava/lang/Object;
         5: .line 269
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getId:()Ljava/io/Serializable;
         6: .line 270
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
         7: .line 271
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousState:[Ljava/lang/Object;
         8: .line 272
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.dirtyFields:[I
         9: .line 273
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
        10: .line 274
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.eventSource:()Lorg/hibernate/event/spi/EventSource;
        11: .line 267
            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 276
            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 277
            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 276
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 13
        16: .line 279
            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 282
            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 283
            aload 2 /* listenerGroup */
            invokeinterface org.hibernate.event.service.spi.EventListenerGroup.isEmpty:()Z
            ifeq 3
         2: .line 284
            return
         3: .line 286
      StackMap locals: org.hibernate.event.service.spi.EventListenerGroup
      StackMap stack:
            new org.hibernate.event.spi.PostUpdateEvent
            dup
         4: .line 287
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getInstance:()Ljava/lang/Object;
         5: .line 288
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getId:()Ljava/io/Serializable;
         6: .line 289
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.state:[Ljava/lang/Object;
         7: .line 290
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.previousState:[Ljava/lang/Object;
         8: .line 291
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.dirtyFields:[I
         9: .line 292
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
        10: .line 293
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.eventSource:()Lorg/hibernate/event/spi/EventSource;
        11: .line 286
            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 295
            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 296
            ldc Lorg/hibernate/event/spi/PostCommitUpdateEventListener;
            aload 4 /* listener */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 20
        15: .line 297
            iload 1 /* success */
            ifeq 18
        16: .line 298
            aload 4 /* listener */
            aload 3 /* event */
            invokeinterface org.hibernate.event.spi.PostUpdateEventListener.onPostUpdate:(Lorg/hibernate/event/spi/PostUpdateEvent;)V
        17: .line 299
            goto 21
        18: .line 301
      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 303
            goto 21
        20: .line 306
      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 295
      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 309
            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 313
            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 314
            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 315
            aload 2 /* listener */
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
            invokeinterface org.hibernate.event.spi.PostUpdateEventListener.requiresPostCommitHanding:(Lorg/hibernate/persister/entity/EntityPersister;)Z
            ifeq 5
         4: .line 316
            iconst_1
            ireturn
        end local 2 // org.hibernate.event.spi.PostUpdateEventListener listener
         5: .line 314
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 320
            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.SessionImplementor);
    descriptor: (ZLorg/hibernate/engine/spi/SessionImplementor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
        start local 1 // boolean success
        start local 2 // org.hibernate.engine.spi.SessionImplementor session
         0: .line 325
            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 326
            aload 3 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.hasCache:()Z
            ifeq 13
         2: .line 328
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
         3: .line 329
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getId:()Ljava/io/Serializable;
         4: .line 330
            aload 3 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getIdentifierType:()Lorg/hibernate/type/Type;
         5: .line 331
            aload 3 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getRootEntityName:()Ljava/lang/String;
         6: .line 328
            invokeinterface org.hibernate.engine.spi.SessionImplementor.generateCacheKey:(Ljava/io/Serializable;Lorg/hibernate/type/Type;Ljava/lang/String;)Lorg/hibernate/cache/spi/CacheKey;
            astore 4 /* ck */
        start local 4 // org.hibernate.cache.spi.CacheKey ck
         7: .line 334
            iload 1 /* success */
            ifeq 12
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.cacheEntry:Ljava/lang/Object;
            ifnull 12
         8: .line 335
            aload 0 /* this */
            aload 3 /* persister */
            aload 4 /* ck */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.cacheAfterUpdate:(Lorg/hibernate/persister/entity/EntityPersister;Lorg/hibernate/cache/spi/CacheKey;)Z
            istore 5 /* put */
        start local 5 // boolean put
         9: .line 337
            iload 5 /* put */
            ifeq 13
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatistics:()Lorg/hibernate/stat/Statistics;
            invokeinterface org.hibernate.stat.Statistics.isStatisticsEnabled:()Z
            ifeq 13
        10: .line 338
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getStatisticsImplementor:()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.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityRegionAccessStrategy;
            invokeinterface org.hibernate.cache.spi.access.EntityRegionAccessStrategy.getRegion:()Lorg/hibernate/cache/spi/EntityRegion;
            invokeinterface org.hibernate.cache.spi.EntityRegion.getName:()Ljava/lang/String;
            invokeinterface org.hibernate.stat.spi.StatisticsImplementor.secondLevelCachePut:(Ljava/lang/String;)V
        end local 5 // boolean put
        11: .line 340
            goto 13
        12: .line 342
      StackMap locals: org.hibernate.persister.entity.EntityPersister org.hibernate.cache.spi.CacheKey
      StackMap stack:
            aload 3 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityRegionAccessStrategy;
            aload 4 /* ck */
            aload 0 /* this */
            getfield org.hibernate.action.internal.EntityUpdateAction.lock:Lorg/hibernate/cache/spi/access/SoftLock;
            invokeinterface org.hibernate.cache.spi.access.EntityRegionAccessStrategy.unlockItem:(Ljava/lang/Object;Lorg/hibernate/cache/spi/access/SoftLock;)V
        end local 4 // org.hibernate.cache.spi.CacheKey ck
        13: .line 345
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* success */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.postCommitUpdate:(Z)V
        14: .line 346
            return
        end local 3 // org.hibernate.persister.entity.EntityPersister persister
        end local 2 // org.hibernate.engine.spi.SessionImplementor session
        end local 1 // boolean success
        end local 0 // org.hibernate.action.internal.EntityUpdateAction this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0       this  Lorg/hibernate/action/internal/EntityUpdateAction;
            0   15     1    success  Z
            0   15     2    session  Lorg/hibernate/engine/spi/SessionImplementor;
            1   15     3  persister  Lorg/hibernate/persister/entity/EntityPersister;
            7   13     4         ck  Lorg/hibernate/cache/spi/CacheKey;
            9   11     5        put  Z
    Exceptions:
      throws org.hibernate.cache.CacheException
    MethodParameters:
         Name  Flags
      success  
      session  

  private boolean cacheAfterUpdate(org.hibernate.persister.entity.EntityPersister, org.hibernate.cache.spi.CacheKey);
    descriptor: (Lorg/hibernate/persister/entity/EntityPersister;Lorg/hibernate/cache/spi/CacheKey;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // org.hibernate.action.internal.EntityUpdateAction this
        start local 1 // org.hibernate.persister.entity.EntityPersister persister
        start local 2 // org.hibernate.cache.spi.CacheKey ck
         0: .line 350
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getEventListenerManager:()Lorg/hibernate/engine/spi/SessionEventListenerManager;
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutStart:()V
         1: .line 351
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getCacheAccessStrategy:()Lorg/hibernate/cache/spi/access/EntityRegionAccessStrategy;
            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.EntityRegionAccessStrategy.afterUpdate:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/cache/spi/access/SoftLock;)Z
            istore 4
         2: .line 354
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getEventListenerManager:()Lorg/hibernate/engine/spi/SessionEventListenerManager;
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutEnd:()V
         3: .line 351
            iload 4
            ireturn
         4: .line 353
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3
         5: .line 354
            aload 0 /* this */
            invokevirtual org.hibernate.action.internal.EntityUpdateAction.getSession:()Lorg/hibernate/engine/spi/SessionImplementor;
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getEventListenerManager:()Lorg/hibernate/engine/spi/SessionEventListenerManager;
            invokeinterface org.hibernate.engine.spi.SessionEventListenerManager.cachePutEnd:()V
         6: .line 355
            aload 3
            athrow
        end local 2 // org.hibernate.cache.spi.CacheKey ck
        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    7     0       this  Lorg/hibernate/action/internal/EntityUpdateAction;
            0    7     1  persister  Lorg/hibernate/persister/entity/EntityPersister;
            0    7     2         ck  Lorg/hibernate/cache/spi/CacheKey;
      Exception table:
        from    to  target  type
           0     2       4  any
    MethodParameters:
           Name  Flags
      persister  
      ck         
}
SourceFile: "EntityUpdateAction.java"
InnerClasses:
  public abstract NaturalIdHelper = org.hibernate.engine.spi.PersistenceContext$NaturalIdHelper of org.hibernate.engine.spi.PersistenceContext