public final class org.hibernate.engine.internal.Cascade
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.hibernate.engine.internal.Cascade
  super_class: java.lang.Object
{
  private static final org.hibernate.internal.CoreMessageLogger LOG;
    descriptor: Lorg/hibernate/internal/CoreMessageLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private int componentPathStackDepth;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private final org.hibernate.engine.spi.CascadingAction action;
    descriptor: Lorg/hibernate/engine/spi/CascadingAction;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.hibernate.event.spi.EventSource eventSource;
    descriptor: Lorg/hibernate/event/spi/EventSource;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.hibernate.engine.internal.CascadePoint cascadePoint;
    descriptor: Lorg/hibernate/engine/internal/CascadePoint;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 59
            ldc Lorg/hibernate/engine/internal/Cascade;
            invokestatic org.hibernate.internal.CoreLogging.messageLogger:(Ljava/lang/Class;)Lorg/hibernate/internal/CoreMessageLogger;
            putstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.hibernate.engine.spi.CascadingAction, org.hibernate.engine.internal.CascadePoint, org.hibernate.event.spi.EventSource);
    descriptor: (Lorg/hibernate/engine/spi/CascadingAction;Lorg/hibernate/engine/internal/CascadePoint;Lorg/hibernate/event/spi/EventSource;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // org.hibernate.engine.spi.CascadingAction action
        start local 2 // org.hibernate.engine.internal.CascadePoint cascadePoint
        start local 3 // org.hibernate.event.spi.EventSource eventSource
         0: .line 73
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 61
            aload 0 /* this */
            iconst_0
            putfield org.hibernate.engine.internal.Cascade.componentPathStackDepth:I
         2: .line 74
            aload 0 /* this */
            aload 2 /* cascadePoint */
            putfield org.hibernate.engine.internal.Cascade.cascadePoint:Lorg/hibernate/engine/internal/CascadePoint;
         3: .line 75
            aload 0 /* this */
            aload 3 /* eventSource */
            putfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
         4: .line 76
            aload 0 /* this */
            aload 1 /* action */
            putfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
         5: .line 77
            return
        end local 3 // org.hibernate.event.spi.EventSource eventSource
        end local 2 // org.hibernate.engine.internal.CascadePoint cascadePoint
        end local 1 // org.hibernate.engine.spi.CascadingAction action
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lorg/hibernate/engine/internal/Cascade;
            0    6     1        action  Lorg/hibernate/engine/spi/CascadingAction;
            0    6     2  cascadePoint  Lorg/hibernate/engine/internal/CascadePoint;
            0    6     3   eventSource  Lorg/hibernate/event/spi/EventSource;
    MethodParameters:
              Name  Flags
      action        final
      cascadePoint  final
      eventSource   final

  public void cascade(org.hibernate.persister.entity.EntityPersister, java.lang.Object);
    descriptor: (Lorg/hibernate/persister/entity/EntityPersister;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // org.hibernate.persister.entity.EntityPersister persister
        start local 2 // java.lang.Object parent
         0: .line 86
            aload 0 /* this */
            aload 1 /* persister */
            aload 2 /* parent */
            aconst_null
            invokevirtual org.hibernate.engine.internal.Cascade.cascade:(Lorg/hibernate/persister/entity/EntityPersister;Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 87
            return
        end local 2 // java.lang.Object parent
        end local 1 // org.hibernate.persister.entity.EntityPersister persister
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/hibernate/engine/internal/Cascade;
            0    2     1  persister  Lorg/hibernate/persister/entity/EntityPersister;
            0    2     2     parent  Ljava/lang/Object;
    MethodParameters:
           Name  Flags
      persister  final
      parent     final

  public void cascade(org.hibernate.persister.entity.EntityPersister, java.lang.Object, java.lang.Object);
    descriptor: (Lorg/hibernate/persister/entity/EntityPersister;Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=11, args_size=4
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // org.hibernate.persister.entity.EntityPersister persister
        start local 2 // java.lang.Object parent
        start local 3 // java.lang.Object anything
         0: .line 99
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.hasCascades:()Z
            ifne 1
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            invokeinterface org.hibernate.engine.spi.CascadingAction.requiresNoCascadeChecking:()Z
            ifeq 36
         1: .line 101
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            invokeinterface org.hibernate.internal.CoreMessageLogger.isTraceEnabled:()Z
            istore 4 /* traceEnabled */
        start local 4 // boolean traceEnabled
         2: .line 102
            iload 4 /* traceEnabled */
            ifeq 4
         3: .line 103
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            ldc "Processing cascade {0} for: {1}"
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getEntityName:()Ljava/lang/String;
            invokeinterface org.hibernate.internal.CoreMessageLogger.tracev:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 106
      StackMap locals: int
      StackMap stack:
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getPropertyTypes:()[Lorg/hibernate/type/Type;
            astore 5 /* types */
        start local 5 // org.hibernate.type.Type[] types
         5: .line 107
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getPropertyCascadeStyles:()[Lorg/hibernate/engine/spi/CascadeStyle;
            astore 6 /* cascadeStyles */
        start local 6 // org.hibernate.engine.spi.CascadeStyle[] cascadeStyles
         6: .line 108
            aload 1 /* persister */
            aload 2 /* parent */
            invokeinterface org.hibernate.persister.entity.EntityPersister.hasUninitializedLazyProperties:(Ljava/lang/Object;)Z
            istore 7 /* hasUninitializedLazyProperties */
        start local 7 // boolean hasUninitializedLazyProperties
         7: .line 109
            iconst_0
            istore 8 /* i */
        start local 8 // int i
         8: goto 33
         9: .line 110
      StackMap locals: org.hibernate.engine.internal.Cascade org.hibernate.persister.entity.EntityPersister java.lang.Object java.lang.Object int org.hibernate.type.Type[] org.hibernate.engine.spi.CascadeStyle[] int int
      StackMap stack:
            aload 6 /* cascadeStyles */
            iload 8 /* i */
            aaload
            astore 9 /* style */
        start local 9 // org.hibernate.engine.spi.CascadeStyle style
        10: .line 111
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getPropertyNames:()[Ljava/lang/String;
            iload 8 /* i */
            aaload
            astore 10 /* propertyName */
        start local 10 // java.lang.String propertyName
        11: .line 112
            iload 7 /* hasUninitializedLazyProperties */
            ifeq 13
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getPropertyLaziness:()[Z
            iload 8 /* i */
            baload
            ifeq 13
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            invokeinterface org.hibernate.engine.spi.CascadingAction.performOnLazyProperty:()Z
            ifne 13
        12: .line 114
            goto 32
        13: .line 117
      StackMap locals: org.hibernate.engine.spi.CascadeStyle java.lang.String
      StackMap stack:
            aload 9 /* style */
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            invokeinterface org.hibernate.engine.spi.CascadeStyle.doCascade:(Lorg/hibernate/engine/spi/CascadingAction;)Z
            ifeq 24
        14: .line 118
            aload 0 /* this */
        15: .line 119
            aload 2 /* parent */
        16: .line 120
            aload 1 /* persister */
            aload 2 /* parent */
            iload 8 /* i */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getPropertyValue:(Ljava/lang/Object;I)Ljava/lang/Object;
        17: .line 121
            aload 5 /* types */
            iload 8 /* i */
            aaload
        18: .line 122
            aload 9 /* style */
        19: .line 123
            aload 10 /* propertyName */
        20: .line 124
            aload 3 /* anything */
        21: .line 125
            iconst_0
        22: .line 118
            invokevirtual org.hibernate.engine.internal.Cascade.cascadeProperty:(Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/Type;Lorg/hibernate/engine/spi/CascadeStyle;Ljava/lang/String;Ljava/lang/Object;Z)V
        23: .line 127
            goto 32
        24: .line 128
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            invokeinterface org.hibernate.engine.spi.CascadingAction.requiresNoCascadeChecking:()Z
            ifeq 32
        25: .line 129
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
        26: .line 130
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
        27: .line 131
            aload 1 /* persister */
            aload 2 /* parent */
            iload 8 /* i */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getPropertyValue:(Ljava/lang/Object;I)Ljava/lang/Object;
        28: .line 132
            aload 2 /* parent */
        29: .line 133
            aload 1 /* persister */
        30: .line 134
            iload 8 /* i */
        31: .line 129
            invokeinterface org.hibernate.engine.spi.CascadingAction.noCascade:(Lorg/hibernate/event/spi/EventSource;Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/persister/entity/EntityPersister;I)V
        end local 10 // java.lang.String propertyName
        end local 9 // org.hibernate.engine.spi.CascadeStyle style
        32: .line 109
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        33: iload 8 /* i */
            aload 5 /* types */
            arraylength
            if_icmplt 9
        end local 8 // int i
        34: .line 139
            iload 4 /* traceEnabled */
            ifeq 36
        35: .line 140
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            ldc "Done processing cascade {0} for: {1}"
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.EntityPersister.getEntityName:()Ljava/lang/String;
            invokeinterface org.hibernate.internal.CoreMessageLogger.tracev:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 7 // boolean hasUninitializedLazyProperties
        end local 6 // org.hibernate.engine.spi.CascadeStyle[] cascadeStyles
        end local 5 // org.hibernate.type.Type[] types
        end local 4 // boolean traceEnabled
        36: .line 143
      StackMap locals: org.hibernate.engine.internal.Cascade org.hibernate.persister.entity.EntityPersister java.lang.Object java.lang.Object
      StackMap stack:
            return
        end local 3 // java.lang.Object anything
        end local 2 // java.lang.Object parent
        end local 1 // org.hibernate.persister.entity.EntityPersister persister
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot                            Name  Signature
            0   37     0                            this  Lorg/hibernate/engine/internal/Cascade;
            0   37     1                       persister  Lorg/hibernate/persister/entity/EntityPersister;
            0   37     2                          parent  Ljava/lang/Object;
            0   37     3                        anything  Ljava/lang/Object;
            2   36     4                    traceEnabled  Z
            5   36     5                           types  [Lorg/hibernate/type/Type;
            6   36     6                   cascadeStyles  [Lorg/hibernate/engine/spi/CascadeStyle;
            7   36     7  hasUninitializedLazyProperties  Z
            8   34     8                               i  I
           10   32     9                           style  Lorg/hibernate/engine/spi/CascadeStyle;
           11   32    10                    propertyName  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      persister  final
      parent     final
      anything   final

  private void cascadeProperty(java.lang.Object, java.lang.Object, org.hibernate.type.Type, org.hibernate.engine.spi.CascadeStyle, java.lang.String, java.lang.Object, boolean);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/Type;Lorg/hibernate/engine/spi/CascadeStyle;Ljava/lang/String;Ljava/lang/Object;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=14, args_size=8
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // java.lang.Object parent
        start local 2 // java.lang.Object child
        start local 3 // org.hibernate.type.Type type
        start local 4 // org.hibernate.engine.spi.CascadeStyle style
        start local 5 // java.lang.String propertyName
        start local 6 // java.lang.Object anything
        start local 7 // boolean isCascadeDeleteEnabled
         0: .line 157
            aload 2 /* child */
            ifnull 15
         1: .line 158
            aload 3 /* type */
            invokeinterface org.hibernate.type.Type.isAssociationType:()Z
            ifeq 13
         2: .line 159
            aload 3 /* type */
            checkcast org.hibernate.type.AssociationType
            astore 8 /* associationType */
        start local 8 // org.hibernate.type.AssociationType associationType
         3: .line 160
            aload 0 /* this */
            aload 8 /* associationType */
            invokevirtual org.hibernate.engine.internal.Cascade.cascadeAssociationNow:(Lorg/hibernate/type/AssociationType;)Z
            ifeq 15
         4: .line 161
            aload 0 /* this */
         5: .line 162
            aload 1 /* parent */
         6: .line 163
            aload 2 /* child */
         7: .line 164
            aload 3 /* type */
         8: .line 165
            aload 4 /* style */
         9: .line 166
            aload 6 /* anything */
        10: .line 167
            iload 7 /* isCascadeDeleteEnabled */
        11: .line 161
            invokevirtual org.hibernate.engine.internal.Cascade.cascadeAssociation:(Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/Type;Lorg/hibernate/engine/spi/CascadeStyle;Ljava/lang/Object;Z)V
        end local 8 // org.hibernate.type.AssociationType associationType
        12: .line 170
            goto 15
        13: .line 171
      StackMap locals:
      StackMap stack:
            aload 3 /* type */
            invokeinterface org.hibernate.type.Type.isComponentType:()Z
            ifeq 15
        14: .line 172
            aload 0 /* this */
            aload 1 /* parent */
            aload 2 /* child */
            aload 3 /* type */
            checkcast org.hibernate.type.CompositeType
            aload 5 /* propertyName */
            aload 6 /* anything */
            invokevirtual org.hibernate.engine.internal.Cascade.cascadeComponent:(Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/CompositeType;Ljava/lang/String;Ljava/lang/Object;)V
        15: .line 177
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* type */
            invokevirtual org.hibernate.engine.internal.Cascade.isLogicalOneToOne:(Lorg/hibernate/type/Type;)Z
            ifeq 42
        16: .line 180
            aload 4 /* style */
            invokeinterface org.hibernate.engine.spi.CascadeStyle.hasOrphanDelete:()Z
            ifeq 42
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            invokeinterface org.hibernate.engine.spi.CascadingAction.deleteOrphans:()Z
            ifeq 42
        17: .line 183
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            invokeinterface org.hibernate.event.spi.EventSource.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            aload 1 /* parent */
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getEntry:(Ljava/lang/Object;)Lorg/hibernate/engine/spi/EntityEntry;
            astore 8 /* entry */
        start local 8 // org.hibernate.engine.spi.EntityEntry entry
        18: .line 184
            aload 8 /* entry */
            ifnull 42
            aload 8 /* entry */
            invokevirtual org.hibernate.engine.spi.EntityEntry.getStatus:()Lorg/hibernate/engine/spi/Status;
            getstatic org.hibernate.engine.spi.Status.SAVING:Lorg/hibernate/engine/spi/Status;
            if_acmpeq 42
        19: .line 186
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.componentPathStackDepth:I
            ifne 22
        20: .line 188
            aload 8 /* entry */
            aload 5 /* propertyName */
            invokevirtual org.hibernate.engine.spi.EntityEntry.getLoadedValue:(Ljava/lang/String;)Ljava/lang/Object;
            astore 9 /* loadedValue */
        start local 9 // java.lang.Object loadedValue
        21: .line 189
            goto 23
        end local 9 // java.lang.Object loadedValue
        22: .line 205
      StackMap locals: org.hibernate.engine.spi.EntityEntry
      StackMap stack:
            aconst_null
            astore 9 /* loadedValue */
        start local 9 // java.lang.Object loadedValue
        23: .line 210
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* child */
            ifnull 24
            aload 9 /* loadedValue */
            ifnull 42
            aload 2 /* child */
            aload 9 /* loadedValue */
            if_acmpeq 42
        24: .line 211
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
        25: .line 212
            invokeinterface org.hibernate.event.spi.EventSource.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
        26: .line 213
            aload 9 /* loadedValue */
        27: .line 212
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getEntry:(Ljava/lang/Object;)Lorg/hibernate/engine/spi/EntityEntry;
        28: .line 211
            astore 10 /* valueEntry */
        start local 10 // org.hibernate.engine.spi.EntityEntry valueEntry
        29: .line 216
            aload 10 /* valueEntry */
            ifnull 42
        30: .line 217
            aload 10 /* valueEntry */
            invokevirtual org.hibernate.engine.spi.EntityEntry.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
            invokeinterface org.hibernate.persister.entity.EntityPersister.getEntityName:()Ljava/lang/String;
            astore 11 /* entityName */
        start local 11 // java.lang.String entityName
        31: .line 218
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            invokeinterface org.hibernate.internal.CoreMessageLogger.isTraceEnabled:()Z
            ifeq 35
        32: .line 219
            aload 10 /* valueEntry */
            invokevirtual org.hibernate.engine.spi.EntityEntry.getPersister:()Lorg/hibernate/persister/entity/EntityPersister;
            aload 9 /* loadedValue */
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            invokeinterface org.hibernate.persister.entity.EntityPersister.getIdentifier:(Ljava/lang/Object;Lorg/hibernate/engine/spi/SessionImplementor;)Ljava/io/Serializable;
            astore 12 /* id */
        start local 12 // java.io.Serializable id
        33: .line 220
            aload 11 /* entityName */
            aload 12 /* id */
            invokestatic org.hibernate.pretty.MessageHelper.infoString:(Ljava/lang/String;Ljava/io/Serializable;)Ljava/lang/String;
            astore 13 /* description */
        start local 13 // java.lang.String description
        34: .line 221
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            ldc "Deleting orphaned entity instance: {0}"
            aload 13 /* description */
            invokeinterface org.hibernate.internal.CoreMessageLogger.tracev:(Ljava/lang/String;Ljava/lang/Object;)V
        end local 13 // java.lang.String description
        end local 12 // java.io.Serializable id
        35: .line 224
      StackMap locals: org.hibernate.engine.spi.EntityEntry java.lang.String
      StackMap stack:
            aload 3 /* type */
            invokeinterface org.hibernate.type.Type.isAssociationType:()Z
            ifeq 41
            aload 3 /* type */
            checkcast org.hibernate.type.AssociationType
            invokeinterface org.hibernate.type.AssociationType.getForeignKeyDirection:()Lorg/hibernate/type/ForeignKeyDirection;
        36: .line 225
            getstatic org.hibernate.type.ForeignKeyDirection.FOREIGN_KEY_TO_PARENT:Lorg/hibernate/type/ForeignKeyDirection;
        37: .line 224
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
        38: .line 225
            ifeq 41
        39: .line 229
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            aload 11 /* entityName */
            aload 9 /* loadedValue */
            invokeinterface org.hibernate.event.spi.EventSource.removeOrphanBeforeUpdates:(Ljava/lang/String;Ljava/lang/Object;)V
        40: .line 230
            goto 42
        41: .line 233
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            aload 11 /* entityName */
            aload 9 /* loadedValue */
            iload 7 /* isCascadeDeleteEnabled */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            invokeinterface org.hibernate.event.spi.EventSource.delete:(Ljava/lang/String;Ljava/lang/Object;ZLjava/util/Set;)V
        end local 11 // java.lang.String entityName
        end local 10 // org.hibernate.engine.spi.EntityEntry valueEntry
        end local 9 // java.lang.Object loadedValue
        end local 8 // org.hibernate.engine.spi.EntityEntry entry
        42: .line 240
      StackMap locals: org.hibernate.engine.internal.Cascade java.lang.Object java.lang.Object org.hibernate.type.Type org.hibernate.engine.spi.CascadeStyle java.lang.String java.lang.Object int
      StackMap stack:
            return
        end local 7 // boolean isCascadeDeleteEnabled
        end local 6 // java.lang.Object anything
        end local 5 // java.lang.String propertyName
        end local 4 // org.hibernate.engine.spi.CascadeStyle style
        end local 3 // org.hibernate.type.Type type
        end local 2 // java.lang.Object child
        end local 1 // java.lang.Object parent
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   43     0                    this  Lorg/hibernate/engine/internal/Cascade;
            0   43     1                  parent  Ljava/lang/Object;
            0   43     2                   child  Ljava/lang/Object;
            0   43     3                    type  Lorg/hibernate/type/Type;
            0   43     4                   style  Lorg/hibernate/engine/spi/CascadeStyle;
            0   43     5            propertyName  Ljava/lang/String;
            0   43     6                anything  Ljava/lang/Object;
            0   43     7  isCascadeDeleteEnabled  Z
            3   12     8         associationType  Lorg/hibernate/type/AssociationType;
           18   42     8                   entry  Lorg/hibernate/engine/spi/EntityEntry;
           21   22     9             loadedValue  Ljava/lang/Object;
           23   42     9             loadedValue  Ljava/lang/Object;
           29   42    10              valueEntry  Lorg/hibernate/engine/spi/EntityEntry;
           31   42    11              entityName  Ljava/lang/String;
           33   35    12                      id  Ljava/io/Serializable;
           34   35    13             description  Ljava/lang/String;
    Exceptions:
      throws org.hibernate.HibernateException
    MethodParameters:
                        Name  Flags
      parent                  final
      child                   final
      type                    final
      style                   final
      propertyName            final
      anything                final
      isCascadeDeleteEnabled  final

  private boolean isLogicalOneToOne(org.hibernate.type.Type);
    descriptor: (Lorg/hibernate/type/Type;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // org.hibernate.type.Type type
         0: .line 251
            aload 1 /* type */
            invokeinterface org.hibernate.type.Type.isEntityType:()Z
            ifeq 1
            aload 1 /* type */
            checkcast org.hibernate.type.EntityType
            invokevirtual org.hibernate.type.EntityType.isLogicalOneToOne:()Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // org.hibernate.type.Type type
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/hibernate/engine/internal/Cascade;
            0    2     1  type  Lorg/hibernate/type/Type;
    MethodParameters:
      Name  Flags
      type  

  private boolean cascadeAssociationNow(org.hibernate.type.AssociationType);
    descriptor: (Lorg/hibernate/type/AssociationType;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // org.hibernate.type.AssociationType associationType
         0: .line 255
            aload 1 /* associationType */
            invokeinterface org.hibernate.type.AssociationType.getForeignKeyDirection:()Lorg/hibernate/type/ForeignKeyDirection;
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.cascadePoint:Lorg/hibernate/engine/internal/CascadePoint;
            invokevirtual org.hibernate.type.ForeignKeyDirection.cascadeNow:(Lorg/hibernate/engine/internal/CascadePoint;)Z
            ireturn
        end local 1 // org.hibernate.type.AssociationType associationType
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             this  Lorg/hibernate/engine/internal/Cascade;
            0    1     1  associationType  Lorg/hibernate/type/AssociationType;
    MethodParameters:
                 Name  Flags
      associationType  

  private void cascadeComponent(java.lang.Object, java.lang.Object, org.hibernate.type.CompositeType, java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/CompositeType;Ljava/lang/String;Ljava/lang/Object;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=11, args_size=6
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // java.lang.Object parent
        start local 2 // java.lang.Object child
        start local 3 // org.hibernate.type.CompositeType componentType
        start local 4 // java.lang.String componentPropertyName
        start local 5 // java.lang.Object anything
         0: .line 264
            aload 0 /* this */
            dup
            getfield org.hibernate.engine.internal.Cascade.componentPathStackDepth:I
            iconst_1
            iadd
            putfield org.hibernate.engine.internal.Cascade.componentPathStackDepth:I
         1: .line 265
            aload 3 /* componentType */
            aload 2 /* child */
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            invokeinterface org.hibernate.type.CompositeType.getPropertyValues:(Ljava/lang/Object;Lorg/hibernate/engine/spi/SessionImplementor;)[Ljava/lang/Object;
            astore 6 /* children */
        start local 6 // java.lang.Object[] children
         2: .line 266
            aload 3 /* componentType */
            invokeinterface org.hibernate.type.CompositeType.getSubtypes:()[Lorg/hibernate/type/Type;
            astore 7 /* types */
        start local 7 // org.hibernate.type.Type[] types
         3: .line 267
            iconst_0
            istore 8 /* i */
        start local 8 // int i
         4: goto 18
         5: .line 268
      StackMap locals: java.lang.Object[] org.hibernate.type.Type[] int
      StackMap stack:
            aload 3 /* componentType */
            iload 8 /* i */
            invokeinterface org.hibernate.type.CompositeType.getCascadeStyle:(I)Lorg/hibernate/engine/spi/CascadeStyle;
            astore 9 /* componentPropertyStyle */
        start local 9 // org.hibernate.engine.spi.CascadeStyle componentPropertyStyle
         6: .line 269
            aload 3 /* componentType */
            invokeinterface org.hibernate.type.CompositeType.getPropertyNames:()[Ljava/lang/String;
            iload 8 /* i */
            aaload
            astore 10 /* subPropertyName */
        start local 10 // java.lang.String subPropertyName
         7: .line 270
            aload 9 /* componentPropertyStyle */
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            invokeinterface org.hibernate.engine.spi.CascadeStyle.doCascade:(Lorg/hibernate/engine/spi/CascadingAction;)Z
            ifeq 17
         8: .line 271
            aload 0 /* this */
         9: .line 272
            aload 1 /* parent */
        10: .line 273
            aload 6 /* children */
            iload 8 /* i */
            aaload
        11: .line 274
            aload 7 /* types */
            iload 8 /* i */
            aaload
        12: .line 275
            aload 9 /* componentPropertyStyle */
        13: .line 276
            aload 10 /* subPropertyName */
        14: .line 277
            aload 5 /* anything */
        15: .line 278
            iconst_0
        16: .line 271
            invokevirtual org.hibernate.engine.internal.Cascade.cascadeProperty:(Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/Type;Lorg/hibernate/engine/spi/CascadeStyle;Ljava/lang/String;Ljava/lang/Object;Z)V
        end local 10 // java.lang.String subPropertyName
        end local 9 // org.hibernate.engine.spi.CascadeStyle componentPropertyStyle
        17: .line 267
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 8 /* i */
            aload 7 /* types */
            arraylength
            if_icmplt 5
        end local 8 // int i
        19: .line 282
            aload 0 /* this */
            dup
            getfield org.hibernate.engine.internal.Cascade.componentPathStackDepth:I
            iconst_1
            isub
            putfield org.hibernate.engine.internal.Cascade.componentPathStackDepth:I
        20: .line 283
            return
        end local 7 // org.hibernate.type.Type[] types
        end local 6 // java.lang.Object[] children
        end local 5 // java.lang.Object anything
        end local 4 // java.lang.String componentPropertyName
        end local 3 // org.hibernate.type.CompositeType componentType
        end local 2 // java.lang.Object child
        end local 1 // java.lang.Object parent
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   21     0                    this  Lorg/hibernate/engine/internal/Cascade;
            0   21     1                  parent  Ljava/lang/Object;
            0   21     2                   child  Ljava/lang/Object;
            0   21     3           componentType  Lorg/hibernate/type/CompositeType;
            0   21     4   componentPropertyName  Ljava/lang/String;
            0   21     5                anything  Ljava/lang/Object;
            2   21     6                children  [Ljava/lang/Object;
            3   21     7                   types  [Lorg/hibernate/type/Type;
            4   19     8                       i  I
            6   17     9  componentPropertyStyle  Lorg/hibernate/engine/spi/CascadeStyle;
            7   17    10         subPropertyName  Ljava/lang/String;
    MethodParameters:
                       Name  Flags
      parent                 final
      child                  final
      componentType          final
      componentPropertyName  final
      anything               final

  private void cascadeAssociation(java.lang.Object, java.lang.Object, org.hibernate.type.Type, org.hibernate.engine.spi.CascadeStyle, java.lang.Object, boolean);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/Type;Lorg/hibernate/engine/spi/CascadeStyle;Ljava/lang/Object;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=7, args_size=7
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // java.lang.Object parent
        start local 2 // java.lang.Object child
        start local 3 // org.hibernate.type.Type type
        start local 4 // org.hibernate.engine.spi.CascadeStyle style
        start local 5 // java.lang.Object anything
        start local 6 // boolean isCascadeDeleteEnabled
         0: .line 292
            aload 3 /* type */
            invokeinterface org.hibernate.type.Type.isEntityType:()Z
            ifne 1
            aload 3 /* type */
            invokeinterface org.hibernate.type.Type.isAnyType:()Z
            ifeq 3
         1: .line 293
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* parent */
            aload 2 /* child */
            aload 3 /* type */
            aload 4 /* style */
            aload 5 /* anything */
            iload 6 /* isCascadeDeleteEnabled */
            invokevirtual org.hibernate.engine.internal.Cascade.cascadeToOne:(Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/Type;Lorg/hibernate/engine/spi/CascadeStyle;Ljava/lang/Object;Z)V
         2: .line 294
            goto 5
         3: .line 295
      StackMap locals:
      StackMap stack:
            aload 3 /* type */
            invokeinterface org.hibernate.type.Type.isCollectionType:()Z
            ifeq 5
         4: .line 296
            aload 0 /* this */
            aload 1 /* parent */
            aload 2 /* child */
            aload 4 /* style */
            aload 5 /* anything */
            aload 3 /* type */
            checkcast org.hibernate.type.CollectionType
            invokevirtual org.hibernate.engine.internal.Cascade.cascadeCollection:(Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/engine/spi/CascadeStyle;Ljava/lang/Object;Lorg/hibernate/type/CollectionType;)V
         5: .line 298
      StackMap locals:
      StackMap stack:
            return
        end local 6 // boolean isCascadeDeleteEnabled
        end local 5 // java.lang.Object anything
        end local 4 // org.hibernate.engine.spi.CascadeStyle style
        end local 3 // org.hibernate.type.Type type
        end local 2 // java.lang.Object child
        end local 1 // java.lang.Object parent
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    6     0                    this  Lorg/hibernate/engine/internal/Cascade;
            0    6     1                  parent  Ljava/lang/Object;
            0    6     2                   child  Ljava/lang/Object;
            0    6     3                    type  Lorg/hibernate/type/Type;
            0    6     4                   style  Lorg/hibernate/engine/spi/CascadeStyle;
            0    6     5                anything  Ljava/lang/Object;
            0    6     6  isCascadeDeleteEnabled  Z
    MethodParameters:
                        Name  Flags
      parent                  final
      child                   final
      type                    final
      style                   final
      anything                final
      isCascadeDeleteEnabled  final

  private void cascadeCollection(java.lang.Object, java.lang.Object, org.hibernate.engine.spi.CascadeStyle, java.lang.Object, org.hibernate.type.CollectionType);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/engine/spi/CascadeStyle;Ljava/lang/Object;Lorg/hibernate/type/CollectionType;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=9, args_size=6
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // java.lang.Object parent
        start local 2 // java.lang.Object child
        start local 3 // org.hibernate.engine.spi.CascadeStyle style
        start local 4 // java.lang.Object anything
        start local 5 // org.hibernate.type.CollectionType type
         0: .line 309
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            invokeinterface org.hibernate.event.spi.EventSource.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            aload 5 /* type */
            invokevirtual org.hibernate.type.CollectionType.getRole:()Ljava/lang/String;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getCollectionPersister:(Ljava/lang/String;)Lorg/hibernate/persister/collection/CollectionPersister;
            astore 6 /* persister */
        start local 6 // org.hibernate.persister.collection.CollectionPersister persister
         1: .line 310
            aload 6 /* persister */
            invokeinterface org.hibernate.persister.collection.CollectionPersister.getElementType:()Lorg/hibernate/type/Type;
            astore 7 /* elemType */
        start local 7 // org.hibernate.type.Type elemType
         2: .line 312
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.cascadePoint:Lorg/hibernate/engine/internal/CascadePoint;
            astore 8 /* originalCascadePoint */
        start local 8 // org.hibernate.engine.internal.CascadePoint originalCascadePoint
         3: .line 313
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.cascadePoint:Lorg/hibernate/engine/internal/CascadePoint;
            getstatic org.hibernate.engine.internal.CascadePoint.AFTER_INSERT_BEFORE_DELETE:Lorg/hibernate/engine/internal/CascadePoint;
            if_acmpne 5
         4: .line 314
            aload 0 /* this */
            getstatic org.hibernate.engine.internal.CascadePoint.AFTER_INSERT_BEFORE_DELETE_VIA_COLLECTION:Lorg/hibernate/engine/internal/CascadePoint;
            putfield org.hibernate.engine.internal.Cascade.cascadePoint:Lorg/hibernate/engine/internal/CascadePoint;
         5: .line 318
      StackMap locals: org.hibernate.persister.collection.CollectionPersister org.hibernate.type.Type org.hibernate.engine.internal.CascadePoint
      StackMap stack:
            aload 7 /* elemType */
            invokeinterface org.hibernate.type.Type.isEntityType:()Z
            ifne 6
            aload 7 /* elemType */
            invokeinterface org.hibernate.type.Type.isAnyType:()Z
            ifne 6
            aload 7 /* elemType */
            invokeinterface org.hibernate.type.Type.isComponentType:()Z
            ifeq 15
         6: .line 319
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
         7: .line 320
            aload 1 /* parent */
         8: .line 321
            aload 2 /* child */
         9: .line 322
            aload 5 /* type */
        10: .line 323
            aload 3 /* style */
        11: .line 324
            aload 7 /* elemType */
        12: .line 325
            aload 4 /* anything */
        13: .line 326
            aload 6 /* persister */
            invokeinterface org.hibernate.persister.collection.CollectionPersister.isCascadeDeleteEnabled:()Z
        14: .line 319
            invokevirtual org.hibernate.engine.internal.Cascade.cascadeCollectionElements:(Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/CollectionType;Lorg/hibernate/engine/spi/CascadeStyle;Lorg/hibernate/type/Type;Ljava/lang/Object;Z)V
        15: .line 330
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 8 /* originalCascadePoint */
            putfield org.hibernate.engine.internal.Cascade.cascadePoint:Lorg/hibernate/engine/internal/CascadePoint;
        16: .line 331
            return
        end local 8 // org.hibernate.engine.internal.CascadePoint originalCascadePoint
        end local 7 // org.hibernate.type.Type elemType
        end local 6 // org.hibernate.persister.collection.CollectionPersister persister
        end local 5 // org.hibernate.type.CollectionType type
        end local 4 // java.lang.Object anything
        end local 3 // org.hibernate.engine.spi.CascadeStyle style
        end local 2 // java.lang.Object child
        end local 1 // java.lang.Object parent
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   17     0                  this  Lorg/hibernate/engine/internal/Cascade;
            0   17     1                parent  Ljava/lang/Object;
            0   17     2                 child  Ljava/lang/Object;
            0   17     3                 style  Lorg/hibernate/engine/spi/CascadeStyle;
            0   17     4              anything  Ljava/lang/Object;
            0   17     5                  type  Lorg/hibernate/type/CollectionType;
            1   17     6             persister  Lorg/hibernate/persister/collection/CollectionPersister;
            2   17     7              elemType  Lorg/hibernate/type/Type;
            3   17     8  originalCascadePoint  Lorg/hibernate/engine/internal/CascadePoint;
    MethodParameters:
          Name  Flags
      parent    final
      child     final
      style     final
      anything  final
      type      final

  private void cascadeToOne(java.lang.Object, java.lang.Object, org.hibernate.type.Type, org.hibernate.engine.spi.CascadeStyle, java.lang.Object, boolean);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/Type;Lorg/hibernate/engine/spi/CascadeStyle;Ljava/lang/Object;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=9, args_size=7
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // java.lang.Object parent
        start local 2 // java.lang.Object child
        start local 3 // org.hibernate.type.Type type
        start local 4 // org.hibernate.engine.spi.CascadeStyle style
        start local 5 // java.lang.Object anything
        start local 6 // boolean isCascadeDeleteEnabled
         0: .line 343
            aload 3 /* type */
            invokeinterface org.hibernate.type.Type.isEntityType:()Z
            ifeq 2
         1: .line 344
            aload 3 /* type */
            checkcast org.hibernate.type.EntityType
            invokevirtual org.hibernate.type.EntityType.getAssociatedEntityName:()Ljava/lang/String;
            goto 3
         2: .line 345
      StackMap locals:
      StackMap stack:
            aconst_null
         3: .line 343
      StackMap locals:
      StackMap stack: java.lang.String
            astore 7 /* entityName */
        start local 7 // java.lang.String entityName
         4: .line 346
            aload 4 /* style */
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            invokeinterface org.hibernate.engine.spi.CascadeStyle.reallyDoCascade:(Lorg/hibernate/engine/spi/CascadingAction;)Z
            ifeq 12
         5: .line 348
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            invokeinterface org.hibernate.event.spi.EventSource.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            aload 2 /* child */
            aload 1 /* parent */
            invokeinterface org.hibernate.engine.spi.PersistenceContext.addChildParent:(Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 350
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            aload 2 /* child */
            aload 7 /* entityName */
            aload 5 /* anything */
            iload 6 /* isCascadeDeleteEnabled */
            invokeinterface org.hibernate.engine.spi.CascadingAction.cascade:(Lorg/hibernate/event/spi/EventSource;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Z)V
         7: .line 351
            goto 11
         8: .line 352
      StackMap locals: org.hibernate.engine.internal.Cascade java.lang.Object java.lang.Object org.hibernate.type.Type org.hibernate.engine.spi.CascadeStyle java.lang.Object int java.lang.String
      StackMap stack: java.lang.Throwable
            astore 8
         9: .line 353
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            invokeinterface org.hibernate.event.spi.EventSource.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            aload 2 /* child */
            invokeinterface org.hibernate.engine.spi.PersistenceContext.removeChildParent:(Ljava/lang/Object;)V
        10: .line 354
            aload 8
            athrow
        11: .line 353
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            invokeinterface org.hibernate.event.spi.EventSource.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            aload 2 /* child */
            invokeinterface org.hibernate.engine.spi.PersistenceContext.removeChildParent:(Ljava/lang/Object;)V
        12: .line 356
      StackMap locals:
      StackMap stack:
            return
        end local 7 // java.lang.String entityName
        end local 6 // boolean isCascadeDeleteEnabled
        end local 5 // java.lang.Object anything
        end local 4 // org.hibernate.engine.spi.CascadeStyle style
        end local 3 // org.hibernate.type.Type type
        end local 2 // java.lang.Object child
        end local 1 // java.lang.Object parent
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   13     0                    this  Lorg/hibernate/engine/internal/Cascade;
            0   13     1                  parent  Ljava/lang/Object;
            0   13     2                   child  Ljava/lang/Object;
            0   13     3                    type  Lorg/hibernate/type/Type;
            0   13     4                   style  Lorg/hibernate/engine/spi/CascadeStyle;
            0   13     5                anything  Ljava/lang/Object;
            0   13     6  isCascadeDeleteEnabled  Z
            4   13     7              entityName  Ljava/lang/String;
      Exception table:
        from    to  target  type
           6     8       8  any
    MethodParameters:
                        Name  Flags
      parent                  final
      child                   final
      type                    final
      style                   final
      anything                final
      isCascadeDeleteEnabled  final

  private void cascadeCollectionElements(java.lang.Object, java.lang.Object, org.hibernate.type.CollectionType, org.hibernate.engine.spi.CascadeStyle, org.hibernate.type.Type, java.lang.Object, boolean);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/CollectionType;Lorg/hibernate/engine/spi/CascadeStyle;Lorg/hibernate/type/Type;Ljava/lang/Object;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=12, args_size=8
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // java.lang.Object parent
        start local 2 // java.lang.Object child
        start local 3 // org.hibernate.type.CollectionType collectionType
        start local 4 // org.hibernate.engine.spi.CascadeStyle style
        start local 5 // org.hibernate.type.Type elemType
        start local 6 // java.lang.Object anything
        start local 7 // boolean isCascadeDeleteEnabled
         0: .line 369
            aload 4 /* style */
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            invokeinterface org.hibernate.engine.spi.CascadeStyle.reallyDoCascade:(Lorg/hibernate/engine/spi/CascadingAction;)Z
            ifeq 1
            aload 2 /* child */
            getstatic org.hibernate.type.CollectionType.UNFETCHED_COLLECTION:Ljava/lang/Object;
            if_acmpeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 8 /* reallyDoCascade */
        start local 8 // boolean reallyDoCascade
         3: .line 371
            iload 8 /* reallyDoCascade */
            ifeq 21
         4: .line 372
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            invokeinterface org.hibernate.internal.CoreMessageLogger.isTraceEnabled:()Z
            istore 9 /* traceEnabled */
        start local 9 // boolean traceEnabled
         5: .line 373
            iload 9 /* traceEnabled */
            ifeq 7
         6: .line 374
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            ldc "Cascade {0} for collection: {1}"
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            aload 3 /* collectionType */
            invokevirtual org.hibernate.type.CollectionType.getRole:()Ljava/lang/String;
            invokeinterface org.hibernate.internal.CoreMessageLogger.tracev:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 377
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            aload 3 /* collectionType */
            aload 2 /* child */
            invokeinterface org.hibernate.engine.spi.CascadingAction.getCascadableChildrenIterator:(Lorg/hibernate/event/spi/EventSource;Lorg/hibernate/type/CollectionType;Ljava/lang/Object;)Ljava/util/Iterator;
            astore 10 /* itr */
        start local 10 // java.util.Iterator itr
         8: .line 378
            goto 18
         9: .line 379
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 0 /* this */
        10: .line 380
            aload 1 /* parent */
        11: .line 381
            aload 10 /* itr */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
        12: .line 382
            aload 5 /* elemType */
        13: .line 383
            aload 4 /* style */
        14: .line 384
            aconst_null
        15: .line 385
            aload 6 /* anything */
        16: .line 386
            iload 7 /* isCascadeDeleteEnabled */
        17: .line 379
            invokevirtual org.hibernate.engine.internal.Cascade.cascadeProperty:(Ljava/lang/Object;Ljava/lang/Object;Lorg/hibernate/type/Type;Lorg/hibernate/engine/spi/CascadeStyle;Ljava/lang/String;Ljava/lang/Object;Z)V
        18: .line 378
      StackMap locals:
      StackMap stack:
            aload 10 /* itr */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        19: .line 390
            iload 9 /* traceEnabled */
            ifeq 21
        20: .line 391
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            ldc "Done cascade {0} for collection: {1}"
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            aload 3 /* collectionType */
            invokevirtual org.hibernate.type.CollectionType.getRole:()Ljava/lang/String;
            invokeinterface org.hibernate.internal.CoreMessageLogger.tracev:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 10 // java.util.Iterator itr
        end local 9 // boolean traceEnabled
        21: .line 395
      StackMap locals:
      StackMap stack:
            aload 4 /* style */
            invokeinterface org.hibernate.engine.spi.CascadeStyle.hasOrphanDelete:()Z
            ifeq 26
        22: .line 396
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.action:Lorg/hibernate/engine/spi/CascadingAction;
            invokeinterface org.hibernate.engine.spi.CascadingAction.deleteOrphans:()Z
            ifeq 26
        23: .line 397
            aload 5 /* elemType */
            invokeinterface org.hibernate.type.Type.isEntityType:()Z
            ifeq 26
        24: .line 399
            aload 2 /* child */
            instanceof org.hibernate.collection.spi.PersistentCollection
            ifeq 26
        25: .line 395
            iconst_1
            goto 27
      StackMap locals:
      StackMap stack:
        26: iconst_0
      StackMap locals:
      StackMap stack: int
        27: istore 9 /* deleteOrphans */
        start local 9 // boolean deleteOrphans
        28: .line 401
            iload 9 /* deleteOrphans */
            ifeq 36
        29: .line 402
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            invokeinterface org.hibernate.internal.CoreMessageLogger.isTraceEnabled:()Z
            istore 10 /* traceEnabled */
        start local 10 // boolean traceEnabled
        30: .line 403
            iload 10 /* traceEnabled */
            ifeq 32
        31: .line 404
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            ldc "Deleting orphans for collection: {0}"
            aload 3 /* collectionType */
            invokevirtual org.hibernate.type.CollectionType.getRole:()Ljava/lang/String;
            invokeinterface org.hibernate.internal.CoreMessageLogger.tracev:(Ljava/lang/String;Ljava/lang/Object;)V
        32: .line 409
      StackMap locals: int int
      StackMap stack:
            aload 3 /* collectionType */
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            invokeinterface org.hibernate.event.spi.EventSource.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokevirtual org.hibernate.type.CollectionType.getAssociatedEntityName:(Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Ljava/lang/String;
            astore 11 /* entityName */
        start local 11 // java.lang.String entityName
        33: .line 410
            aload 0 /* this */
            aload 11 /* entityName */
            aload 2 /* child */
            checkcast org.hibernate.collection.spi.PersistentCollection
            invokevirtual org.hibernate.engine.internal.Cascade.deleteOrphans:(Ljava/lang/String;Lorg/hibernate/collection/spi/PersistentCollection;)V
        34: .line 412
            iload 10 /* traceEnabled */
            ifeq 36
        35: .line 413
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            ldc "Done deleting orphans for collection: {0}"
            aload 3 /* collectionType */
            invokevirtual org.hibernate.type.CollectionType.getRole:()Ljava/lang/String;
            invokeinterface org.hibernate.internal.CoreMessageLogger.tracev:(Ljava/lang/String;Ljava/lang/Object;)V
        end local 11 // java.lang.String entityName
        end local 10 // boolean traceEnabled
        36: .line 416
      StackMap locals:
      StackMap stack:
            return
        end local 9 // boolean deleteOrphans
        end local 8 // boolean reallyDoCascade
        end local 7 // boolean isCascadeDeleteEnabled
        end local 6 // java.lang.Object anything
        end local 5 // org.hibernate.type.Type elemType
        end local 4 // org.hibernate.engine.spi.CascadeStyle style
        end local 3 // org.hibernate.type.CollectionType collectionType
        end local 2 // java.lang.Object child
        end local 1 // java.lang.Object parent
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   37     0                    this  Lorg/hibernate/engine/internal/Cascade;
            0   37     1                  parent  Ljava/lang/Object;
            0   37     2                   child  Ljava/lang/Object;
            0   37     3          collectionType  Lorg/hibernate/type/CollectionType;
            0   37     4                   style  Lorg/hibernate/engine/spi/CascadeStyle;
            0   37     5                elemType  Lorg/hibernate/type/Type;
            0   37     6                anything  Ljava/lang/Object;
            0   37     7  isCascadeDeleteEnabled  Z
            3   37     8         reallyDoCascade  Z
            5   21     9            traceEnabled  Z
            8   21    10                     itr  Ljava/util/Iterator;
           28   37     9           deleteOrphans  Z
           30   36    10            traceEnabled  Z
           33   36    11              entityName  Ljava/lang/String;
    Exceptions:
      throws org.hibernate.HibernateException
    MethodParameters:
                        Name  Flags
      parent                  final
      child                   final
      collectionType          final
      style                   final
      elemType                final
      anything                final
      isCascadeDeleteEnabled  final

  private void deleteOrphans(java.lang.String, org.hibernate.collection.spi.PersistentCollection);
    descriptor: (Ljava/lang/String;Lorg/hibernate/collection/spi/PersistentCollection;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // org.hibernate.engine.internal.Cascade this
        start local 1 // java.lang.String entityName
        start local 2 // org.hibernate.collection.spi.PersistentCollection pc
         0: .line 424
            aload 2 /* pc */
            invokeinterface org.hibernate.collection.spi.PersistentCollection.wasInitialized:()Z
            ifeq 7
         1: .line 425
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            invokeinterface org.hibernate.event.spi.EventSource.getPersistenceContext:()Lorg/hibernate/engine/spi/PersistenceContext;
            aload 2 /* pc */
            invokeinterface org.hibernate.engine.spi.PersistenceContext.getCollectionEntry:(Lorg/hibernate/collection/spi/PersistentCollection;)Lorg/hibernate/engine/spi/CollectionEntry;
            astore 4 /* ce */
        start local 4 // org.hibernate.engine.spi.CollectionEntry ce
         2: .line 426
            aload 4 /* ce */
            ifnonnull 4
         3: .line 427
            getstatic java.util.Collections.EMPTY_LIST:Ljava/util/List;
            goto 5
         4: .line 428
      StackMap locals: org.hibernate.engine.internal.Cascade java.lang.String org.hibernate.collection.spi.PersistentCollection top org.hibernate.engine.spi.CollectionEntry
      StackMap stack:
            aload 4 /* ce */
            aload 1 /* entityName */
            aload 2 /* pc */
            invokevirtual org.hibernate.engine.spi.CollectionEntry.getOrphans:(Ljava/lang/String;Lorg/hibernate/collection/spi/PersistentCollection;)Ljava/util/Collection;
         5: .line 426
      StackMap locals:
      StackMap stack: java.util.Collection
            astore 3 /* orphans */
        end local 4 // org.hibernate.engine.spi.CollectionEntry ce
        start local 3 // java.util.Collection orphans
         6: .line 429
            goto 8
        end local 3 // java.util.Collection orphans
         7: .line 431
      StackMap locals: org.hibernate.engine.internal.Cascade java.lang.String org.hibernate.collection.spi.PersistentCollection
      StackMap stack:
            aload 2 /* pc */
            aload 1 /* entityName */
            invokeinterface org.hibernate.collection.spi.PersistentCollection.getQueuedOrphans:(Ljava/lang/String;)Ljava/util/Collection;
            astore 3 /* orphans */
        start local 3 // java.util.Collection orphans
         8: .line 434
      StackMap locals: java.util.Collection
      StackMap stack:
            aload 3 /* orphans */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5
            goto 13
      StackMap locals: org.hibernate.engine.internal.Cascade java.lang.String org.hibernate.collection.spi.PersistentCollection java.util.Collection top java.util.Iterator
      StackMap stack:
         9: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 4 /* orphan */
        start local 4 // java.lang.Object orphan
        10: .line 435
            aload 4 /* orphan */
            ifnull 13
        11: .line 436
            getstatic org.hibernate.engine.internal.Cascade.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            ldc "Deleting orphaned entity instance: {0}"
            aload 1 /* entityName */
            invokeinterface org.hibernate.internal.CoreMessageLogger.tracev:(Ljava/lang/String;Ljava/lang/Object;)V
        12: .line 437
            aload 0 /* this */
            getfield org.hibernate.engine.internal.Cascade.eventSource:Lorg/hibernate/event/spi/EventSource;
            aload 1 /* entityName */
            aload 4 /* orphan */
            iconst_0
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            invokeinterface org.hibernate.event.spi.EventSource.delete:(Ljava/lang/String;Ljava/lang/Object;ZLjava/util/Set;)V
        end local 4 // java.lang.Object orphan
        13: .line 434
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 9
        14: .line 440
            return
        end local 3 // java.util.Collection orphans
        end local 2 // org.hibernate.collection.spi.PersistentCollection pc
        end local 1 // java.lang.String entityName
        end local 0 // org.hibernate.engine.internal.Cascade this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lorg/hibernate/engine/internal/Cascade;
            0   15     1  entityName  Ljava/lang/String;
            0   15     2          pc  Lorg/hibernate/collection/spi/PersistentCollection;
            6    7     3     orphans  Ljava/util/Collection;
            8   15     3     orphans  Ljava/util/Collection;
            2    6     4          ce  Lorg/hibernate/engine/spi/CollectionEntry;
           10   13     4      orphan  Ljava/lang/Object;
    Exceptions:
      throws org.hibernate.HibernateException
    MethodParameters:
            Name  Flags
      entityName  
      pc          
}
SourceFile: "Cascade.java"