public class org.hibernate.persister.collection.BasicCollectionPersister extends org.hibernate.persister.collection.AbstractCollectionPersister
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.hibernate.persister.collection.BasicCollectionPersister
  super_class: org.hibernate.persister.collection.AbstractCollectionPersister
{
  private org.hibernate.engine.jdbc.batch.internal.BasicBatchKey updateBatchKey;
    descriptor: Lorg/hibernate/engine/jdbc/batch/internal/BasicBatchKey;
    flags: (0x0002) ACC_PRIVATE

  public boolean isCascadeDeleteEnabled();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
         0: .line 69
            iconst_0
            ireturn
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/persister/collection/BasicCollectionPersister;

  public void <init>(org.hibernate.mapping.Collection, org.hibernate.cache.spi.access.CollectionRegionAccessStrategy, org.hibernate.cfg.Configuration, org.hibernate.engine.spi.SessionFactoryImplementor);
    descriptor: (Lorg/hibernate/mapping/Collection;Lorg/hibernate/cache/spi/access/CollectionRegionAccessStrategy;Lorg/hibernate/cfg/Configuration;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // org.hibernate.mapping.Collection collection
        start local 2 // org.hibernate.cache.spi.access.CollectionRegionAccessStrategy cacheAccessStrategy
        start local 3 // org.hibernate.cfg.Configuration cfg
        start local 4 // org.hibernate.engine.spi.SessionFactoryImplementor factory
         0: .line 77
            aload 0 /* this */
            aload 1 /* collection */
            aload 2 /* cacheAccessStrategy */
            aload 3 /* cfg */
            aload 4 /* factory */
            invokespecial org.hibernate.persister.collection.AbstractCollectionPersister.<init>:(Lorg/hibernate/mapping/Collection;Lorg/hibernate/cache/spi/access/CollectionRegionAccessStrategy;Lorg/hibernate/cfg/Configuration;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)V
         1: .line 78
            return
        end local 4 // org.hibernate.engine.spi.SessionFactoryImplementor factory
        end local 3 // org.hibernate.cfg.Configuration cfg
        end local 2 // org.hibernate.cache.spi.access.CollectionRegionAccessStrategy cacheAccessStrategy
        end local 1 // org.hibernate.mapping.Collection collection
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0                 this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0    2     1           collection  Lorg/hibernate/mapping/Collection;
            0    2     2  cacheAccessStrategy  Lorg/hibernate/cache/spi/access/CollectionRegionAccessStrategy;
            0    2     3                  cfg  Lorg/hibernate/cfg/Configuration;
            0    2     4              factory  Lorg/hibernate/engine/spi/SessionFactoryImplementor;
    Exceptions:
      throws org.hibernate.MappingException, org.hibernate.cache.CacheException
    MethodParameters:
                     Name  Flags
      collection           
      cacheAccessStrategy  
      cfg                  
      factory              

  protected java.lang.String generateDeleteString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
         0: .line 86
            new org.hibernate.sql.Delete
            dup
            invokespecial org.hibernate.sql.Delete.<init>:()V
         1: .line 87
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.qualifiedTableName:Ljava/lang/String;
            invokevirtual org.hibernate.sql.Delete.setTableName:(Ljava/lang/String;)Lorg/hibernate/sql/Delete;
         2: .line 88
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.keyColumnNames:[Ljava/lang/String;
            invokevirtual org.hibernate.sql.Delete.addPrimaryKeyColumns:([Ljava/lang/String;)Lorg/hibernate/sql/Delete;
         3: .line 86
            astore 1 /* delete */
        start local 1 // org.hibernate.sql.Delete delete
         4: .line 90
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.hasWhere:Z
            ifeq 5
            aload 1 /* delete */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.sqlWhereString:Ljava/lang/String;
            invokevirtual org.hibernate.sql.Delete.setWhere:(Ljava/lang/String;)Lorg/hibernate/sql/Delete;
            pop
         5: .line 92
      StackMap locals: org.hibernate.sql.Delete
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getSettings:()Lorg/hibernate/cfg/Settings;
            invokevirtual org.hibernate.cfg.Settings.isCommentsEnabled:()Z
            ifeq 7
         6: .line 93
            aload 1 /* delete */
            new java.lang.StringBuilder
            dup
            ldc "delete collection "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getRole:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.hibernate.sql.Delete.setComment:(Ljava/lang/String;)Lorg/hibernate/sql/Delete;
            pop
         7: .line 96
      StackMap locals:
      StackMap stack:
            aload 1 /* delete */
            invokevirtual org.hibernate.sql.Delete.toStatementString:()Ljava/lang/String;
            areturn
        end local 1 // org.hibernate.sql.Delete delete
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            4    8     1  delete  Lorg/hibernate/sql/Delete;

  protected java.lang.String generateInsertRowString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
         0: .line 105
            new org.hibernate.sql.Insert
            dup
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getDialect:()Lorg/hibernate/dialect/Dialect;
            invokespecial org.hibernate.sql.Insert.<init>:(Lorg/hibernate/dialect/Dialect;)V
         1: .line 106
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.qualifiedTableName:Ljava/lang/String;
            invokevirtual org.hibernate.sql.Insert.setTableName:(Ljava/lang/String;)Lorg/hibernate/sql/Insert;
         2: .line 107
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.keyColumnNames:[Ljava/lang/String;
            invokevirtual org.hibernate.sql.Insert.addColumns:([Ljava/lang/String;)Lorg/hibernate/sql/Insert;
         3: .line 105
            astore 1 /* insert */
        start local 1 // org.hibernate.sql.Insert insert
         4: .line 109
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.hasIdentifier:Z
            ifeq 5
            aload 1 /* insert */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.identifierColumnName:Ljava/lang/String;
            invokevirtual org.hibernate.sql.Insert.addColumn:(Ljava/lang/String;)Lorg/hibernate/sql/Insert;
            pop
         5: .line 111
      StackMap locals: org.hibernate.sql.Insert
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.hasIndex:Z
            ifeq 7
         6: .line 112
            aload 1 /* insert */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.indexColumnNames:[Ljava/lang/String;
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.indexColumnIsSettable:[Z
            invokevirtual org.hibernate.sql.Insert.addColumns:([Ljava/lang/String;[Z)Lorg/hibernate/sql/Insert;
            pop
         7: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getSettings:()Lorg/hibernate/cfg/Settings;
            invokevirtual org.hibernate.cfg.Settings.isCommentsEnabled:()Z
            ifeq 9
         8: .line 116
            aload 1 /* insert */
            new java.lang.StringBuilder
            dup
            ldc "insert collection row "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getRole:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.hibernate.sql.Insert.setComment:(Ljava/lang/String;)Lorg/hibernate/sql/Insert;
            pop
         9: .line 120
      StackMap locals:
      StackMap stack:
            aload 1 /* insert */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnNames:[Ljava/lang/String;
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnIsSettable:[Z
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnWriters:[Ljava/lang/String;
            invokevirtual org.hibernate.sql.Insert.addColumns:([Ljava/lang/String;[Z[Ljava/lang/String;)Lorg/hibernate/sql/Insert;
            pop
        10: .line 123
            aload 1 /* insert */
            invokevirtual org.hibernate.sql.Insert.toStatementString:()Ljava/lang/String;
            areturn
        end local 1 // org.hibernate.sql.Insert insert
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            4   11     1  insert  Lorg/hibernate/sql/Insert;

  protected java.lang.String generateUpdateRowString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
         0: .line 132
            new org.hibernate.sql.Update
            dup
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getDialect:()Lorg/hibernate/dialect/Dialect;
            invokespecial org.hibernate.sql.Update.<init>:(Lorg/hibernate/dialect/Dialect;)V
         1: .line 133
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.qualifiedTableName:Ljava/lang/String;
            invokevirtual org.hibernate.sql.Update.setTableName:(Ljava/lang/String;)Lorg/hibernate/sql/Update;
         2: .line 132
            astore 1 /* update */
        start local 1 // org.hibernate.sql.Update update
         3: .line 136
            aload 1 /* update */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnNames:[Ljava/lang/String;
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnIsSettable:[Z
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnWriters:[Ljava/lang/String;
            invokevirtual org.hibernate.sql.Update.addColumns:([Ljava/lang/String;[Z[Ljava/lang/String;)Lorg/hibernate/sql/Update;
            pop
         4: .line 139
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.hasIdentifier:Z
            ifeq 7
         5: .line 140
            aload 1 /* update */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.identifierColumnName:Ljava/lang/String;
            aastore
            invokevirtual org.hibernate.sql.Update.addPrimaryKeyColumns:([Ljava/lang/String;)Lorg/hibernate/sql/Update;
            pop
         6: .line 141
            goto 12
         7: .line 142
      StackMap locals: org.hibernate.sql.Update
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.hasIndex:Z
            ifeq 10
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.indexContainsFormula:Z
            ifne 10
         8: .line 143
            aload 1 /* update */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.keyColumnNames:[Ljava/lang/String;
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.indexColumnNames:[Ljava/lang/String;
            invokestatic org.hibernate.internal.util.collections.ArrayHelper.join:([Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
            invokevirtual org.hibernate.sql.Update.addPrimaryKeyColumns:([Ljava/lang/String;)Lorg/hibernate/sql/Update;
            pop
         9: .line 144
            goto 12
        10: .line 146
      StackMap locals:
      StackMap stack:
            aload 1 /* update */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.keyColumnNames:[Ljava/lang/String;
            invokevirtual org.hibernate.sql.Update.addPrimaryKeyColumns:([Ljava/lang/String;)Lorg/hibernate/sql/Update;
            pop
        11: .line 147
            aload 1 /* update */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnNames:[Ljava/lang/String;
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnIsInPrimaryKey:[Z
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnWriters:[Ljava/lang/String;
            invokevirtual org.hibernate.sql.Update.addPrimaryKeyColumns:([Ljava/lang/String;[Z[Ljava/lang/String;)Lorg/hibernate/sql/Update;
            pop
        12: .line 150
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getSettings:()Lorg/hibernate/cfg/Settings;
            invokevirtual org.hibernate.cfg.Settings.isCommentsEnabled:()Z
            ifeq 14
        13: .line 151
            aload 1 /* update */
            new java.lang.StringBuilder
            dup
            ldc "update collection row "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getRole:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.hibernate.sql.Update.setComment:(Ljava/lang/String;)Lorg/hibernate/sql/Update;
            pop
        14: .line 154
      StackMap locals:
      StackMap stack:
            aload 1 /* update */
            invokevirtual org.hibernate.sql.Update.toStatementString:()Ljava/lang/String;
            areturn
        end local 1 // org.hibernate.sql.Update update
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   15     0    this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            3   15     1  update  Lorg/hibernate/sql/Update;

  protected void doProcessQueuedOps(org.hibernate.collection.spi.PersistentCollection, java.io.Serializable, org.hibernate.engine.spi.SessionImplementor);
    descriptor: (Lorg/hibernate/collection/spi/PersistentCollection;Ljava/io/Serializable;Lorg/hibernate/engine/spi/SessionImplementor;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=4, args_size=4
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // org.hibernate.collection.spi.PersistentCollection collection
        start local 2 // java.io.Serializable id
        start local 3 // org.hibernate.engine.spi.SessionImplementor session
         0: .line 161
            return
        end local 3 // org.hibernate.engine.spi.SessionImplementor session
        end local 2 // java.io.Serializable id
        end local 1 // org.hibernate.collection.spi.PersistentCollection collection
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0    1     1  collection  Lorg/hibernate/collection/spi/PersistentCollection;
            0    1     2          id  Ljava/io/Serializable;
            0    1     3     session  Lorg/hibernate/engine/spi/SessionImplementor;
    Exceptions:
      throws org.hibernate.HibernateException
    MethodParameters:
            Name  Flags
      collection  
      id          
      session     

  protected java.lang.String generateDeleteRowString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
         0: .line 169
            new org.hibernate.sql.Delete
            dup
            invokespecial org.hibernate.sql.Delete.<init>:()V
         1: .line 170
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.qualifiedTableName:Ljava/lang/String;
            invokevirtual org.hibernate.sql.Delete.setTableName:(Ljava/lang/String;)Lorg/hibernate/sql/Delete;
         2: .line 169
            astore 1 /* delete */
        start local 1 // org.hibernate.sql.Delete delete
         3: .line 172
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.hasIdentifier:Z
            ifeq 6
         4: .line 173
            aload 1 /* delete */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.identifierColumnName:Ljava/lang/String;
            aastore
            invokevirtual org.hibernate.sql.Delete.addPrimaryKeyColumns:([Ljava/lang/String;)Lorg/hibernate/sql/Delete;
            pop
         5: .line 174
            goto 11
         6: .line 175
      StackMap locals: org.hibernate.sql.Delete
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.hasIndex:Z
            ifeq 9
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.indexContainsFormula:Z
            ifne 9
         7: .line 176
            aload 1 /* delete */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.keyColumnNames:[Ljava/lang/String;
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.indexColumnNames:[Ljava/lang/String;
            invokestatic org.hibernate.internal.util.collections.ArrayHelper.join:([Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
            invokevirtual org.hibernate.sql.Delete.addPrimaryKeyColumns:([Ljava/lang/String;)Lorg/hibernate/sql/Delete;
            pop
         8: .line 177
            goto 11
         9: .line 179
      StackMap locals:
      StackMap stack:
            aload 1 /* delete */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.keyColumnNames:[Ljava/lang/String;
            invokevirtual org.hibernate.sql.Delete.addPrimaryKeyColumns:([Ljava/lang/String;)Lorg/hibernate/sql/Delete;
            pop
        10: .line 180
            aload 1 /* delete */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnNames:[Ljava/lang/String;
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnIsInPrimaryKey:[Z
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnWriters:[Ljava/lang/String;
            invokevirtual org.hibernate.sql.Delete.addPrimaryKeyColumns:([Ljava/lang/String;[Z[Ljava/lang/String;)Lorg/hibernate/sql/Delete;
            pop
        11: .line 183
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getSettings:()Lorg/hibernate/cfg/Settings;
            invokevirtual org.hibernate.cfg.Settings.isCommentsEnabled:()Z
            ifeq 13
        12: .line 184
            aload 1 /* delete */
            new java.lang.StringBuilder
            dup
            ldc "delete collection row "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getRole:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.hibernate.sql.Delete.setComment:(Ljava/lang/String;)Lorg/hibernate/sql/Delete;
            pop
        13: .line 187
      StackMap locals:
      StackMap stack:
            aload 1 /* delete */
            invokevirtual org.hibernate.sql.Delete.toStatementString:()Ljava/lang/String;
            areturn
        end local 1 // org.hibernate.sql.Delete delete
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   14     0    this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            3   14     1  delete  Lorg/hibernate/sql/Delete;

  public boolean consumesEntityAlias();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
         0: .line 191
            iconst_0
            ireturn
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/persister/collection/BasicCollectionPersister;

  public boolean consumesCollectionAlias();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
         0: .line 196
            iconst_1
            ireturn
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/persister/collection/BasicCollectionPersister;

  public boolean isOneToMany();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
         0: .line 200
            iconst_0
            ireturn
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/persister/collection/BasicCollectionPersister;

  public boolean isManyToMany();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
         0: .line 205
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementType:Lorg/hibernate/type/Type;
            invokeinterface org.hibernate.type.Type.isEntityType:()Z
            ireturn
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/persister/collection/BasicCollectionPersister;

  protected int doUpdateRows(java.io.Serializable, org.hibernate.collection.spi.PersistentCollection, org.hibernate.engine.spi.SessionImplementor);
    descriptor: (Ljava/io/Serializable;Lorg/hibernate/collection/spi/PersistentCollection;Lorg/hibernate/engine/spi/SessionImplementor;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=16, args_size=4
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // java.io.Serializable id
        start local 2 // org.hibernate.collection.spi.PersistentCollection collection
        start local 3 // org.hibernate.engine.spi.SessionImplementor session
         0: .line 214
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnIsSettable:[Z
            invokestatic org.hibernate.internal.util.collections.ArrayHelper.isAllFalse:([Z)Z
            ifeq 1
            iconst_0
            ireturn
         1: .line 217
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* st */
        start local 4 // java.sql.PreparedStatement st
         2: .line 218
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getUpdateCheckStyle:()Lorg/hibernate/engine/spi/ExecuteUpdateResultCheckStyle;
            invokestatic org.hibernate.jdbc.Expectations.appropriateExpectation:(Lorg/hibernate/engine/spi/ExecuteUpdateResultCheckStyle;)Lorg/hibernate/jdbc/Expectation;
            astore 5 /* expectation */
        start local 5 // org.hibernate.jdbc.Expectation expectation
         3: .line 219
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.isUpdateCallable:()Z
            istore 6 /* callable */
        start local 6 // boolean callable
         4: .line 220
            aload 5 /* expectation */
            invokeinterface org.hibernate.jdbc.Expectation.canBeBatched:()Z
            istore 7 /* useBatch */
        start local 7 // boolean useBatch
         5: .line 221
            aload 2 /* collection */
            aload 0 /* this */
            invokeinterface org.hibernate.collection.spi.PersistentCollection.entries:(Lorg/hibernate/persister/collection/CollectionPersister;)Ljava/util/Iterator;
            astore 8 /* entries */
        start local 8 // java.util.Iterator entries
         6: .line 222
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getSQLUpdateRowString:()Ljava/lang/String;
            astore 9 /* sql */
        start local 9 // java.lang.String sql
         7: .line 223
            iconst_0
            istore 10 /* i */
        start local 10 // int i
         8: .line 224
            iconst_0
            istore 11 /* count */
        start local 11 // int count
         9: .line 225
            goto 60
        10: .line 226
      StackMap locals: org.hibernate.persister.collection.BasicCollectionPersister java.io.Serializable org.hibernate.collection.spi.PersistentCollection org.hibernate.engine.spi.SessionImplementor java.sql.PreparedStatement org.hibernate.jdbc.Expectation int int java.util.Iterator java.lang.String int int
      StackMap stack:
            aload 8 /* entries */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 12 /* entry */
        start local 12 // java.lang.Object entry
        11: .line 227
            aload 2 /* collection */
            aload 12 /* entry */
            iload 10 /* i */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementType:Lorg/hibernate/type/Type;
            invokeinterface org.hibernate.collection.spi.PersistentCollection.needsUpdating:(Ljava/lang/Object;ILorg/hibernate/type/Type;)Z
            ifeq 59
        12: .line 228
            iconst_1
            istore 13 /* offset */
        start local 13 // int offset
        13: .line 230
            iload 7 /* useBatch */
            ifeq 25
        14: .line 231
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.updateBatchKey:Lorg/hibernate/engine/jdbc/batch/internal/BasicBatchKey;
            ifnonnull 19
        15: .line 232
            aload 0 /* this */
            new org.hibernate.engine.jdbc.batch.internal.BasicBatchKey
            dup
        16: .line 233
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getRole:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "#UPDATE"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        17: .line 234
            aload 5 /* expectation */
            invokespecial org.hibernate.engine.jdbc.batch.internal.BasicBatchKey.<init>:(Ljava/lang/String;Lorg/hibernate/jdbc/Expectation;)V
        18: .line 232
            putfield org.hibernate.persister.collection.BasicCollectionPersister.updateBatchKey:Lorg/hibernate/engine/jdbc/batch/internal/BasicBatchKey;
        19: .line 237
      StackMap locals: java.lang.Object int
      StackMap stack:
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getTransactionCoordinator:()Lorg/hibernate/engine/transaction/spi/TransactionCoordinator;
        20: .line 238
            invokeinterface org.hibernate.engine.transaction.spi.TransactionCoordinator.getJdbcCoordinator:()Lorg/hibernate/engine/jdbc/spi/JdbcCoordinator;
        21: .line 239
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.updateBatchKey:Lorg/hibernate/engine/jdbc/batch/internal/BasicBatchKey;
            invokeinterface org.hibernate.engine.jdbc.spi.JdbcCoordinator.getBatch:(Lorg/hibernate/engine/jdbc/batch/spi/BatchKey;)Lorg/hibernate/engine/jdbc/batch/spi/Batch;
        22: .line 240
            aload 9 /* sql */
            iload 6 /* callable */
            invokeinterface org.hibernate.engine.jdbc.batch.spi.Batch.getBatchStatement:(Ljava/lang/String;Z)Ljava/sql/PreparedStatement;
        23: .line 237
            astore 4 /* st */
        24: .line 241
            goto 30
        25: .line 243
      StackMap locals:
      StackMap stack:
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getTransactionCoordinator:()Lorg/hibernate/engine/transaction/spi/TransactionCoordinator;
        26: .line 244
            invokeinterface org.hibernate.engine.transaction.spi.TransactionCoordinator.getJdbcCoordinator:()Lorg/hibernate/engine/jdbc/spi/JdbcCoordinator;
        27: .line 245
            invokeinterface org.hibernate.engine.jdbc.spi.JdbcCoordinator.getStatementPreparer:()Lorg/hibernate/engine/jdbc/spi/StatementPreparer;
        28: .line 246
            aload 9 /* sql */
            iload 6 /* callable */
            invokeinterface org.hibernate.engine.jdbc.spi.StatementPreparer.prepareStatement:(Ljava/lang/String;Z)Ljava/sql/PreparedStatement;
        29: .line 243
            astore 4 /* st */
        30: .line 250
      StackMap locals:
      StackMap stack:
            iload 13 /* offset */
            aload 5 /* expectation */
            aload 4 /* st */
            invokeinterface org.hibernate.jdbc.Expectation.prepare:(Ljava/sql/PreparedStatement;)I
            iadd
            istore 13 /* offset */
        31: .line 251
            aload 0 /* this */
            aload 4 /* st */
            aload 2 /* collection */
            aload 12 /* entry */
            invokeinterface org.hibernate.collection.spi.PersistentCollection.getElement:(Ljava/lang/Object;)Ljava/lang/Object;
            iload 13 /* offset */
            aload 3 /* session */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.writeElement:(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SessionImplementor;)I
            istore 14 /* loc */
        start local 14 // int loc
        32: .line 252
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.hasIdentifier:Z
            ifeq 35
        33: .line 253
            aload 0 /* this */
            aload 4 /* st */
            aload 2 /* collection */
            aload 12 /* entry */
            iload 10 /* i */
            invokeinterface org.hibernate.collection.spi.PersistentCollection.getIdentifier:(Ljava/lang/Object;I)Ljava/lang/Object;
            iload 14 /* loc */
            aload 3 /* session */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.writeIdentifier:(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SessionImplementor;)I
            pop
        34: .line 254
            goto 40
        35: .line 256
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 4 /* st */
            aload 1 /* id */
            iload 14 /* loc */
            aload 3 /* session */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.writeKey:(Ljava/sql/PreparedStatement;Ljava/io/Serializable;ILorg/hibernate/engine/spi/SessionImplementor;)I
            istore 14 /* loc */
        36: .line 257
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.hasIndex:Z
            ifeq 39
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.indexContainsFormula:Z
            ifne 39
        37: .line 258
            aload 0 /* this */
            aload 4 /* st */
            aload 2 /* collection */
            aload 12 /* entry */
            iload 10 /* i */
            aload 0 /* this */
            invokeinterface org.hibernate.collection.spi.PersistentCollection.getIndex:(Ljava/lang/Object;ILorg/hibernate/persister/collection/CollectionPersister;)Ljava/lang/Object;
            iload 14 /* loc */
            aload 3 /* session */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.writeIndexToWhere:(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SessionImplementor;)I
            pop
        38: .line 259
            goto 40
        39: .line 261
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* st */
            aload 2 /* collection */
            aload 12 /* entry */
            iload 10 /* i */
            invokeinterface org.hibernate.collection.spi.PersistentCollection.getSnapshotElement:(Ljava/lang/Object;I)Ljava/lang/Object;
            iload 14 /* loc */
            aload 3 /* session */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.writeElementToWhere:(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SessionImplementor;)I
            pop
        40: .line 265
      StackMap locals:
      StackMap stack:
            iload 7 /* useBatch */
            ifeq 46
        41: .line 266
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getTransactionCoordinator:()Lorg/hibernate/engine/transaction/spi/TransactionCoordinator;
        42: .line 267
            invokeinterface org.hibernate.engine.transaction.spi.TransactionCoordinator.getJdbcCoordinator:()Lorg/hibernate/engine/jdbc/spi/JdbcCoordinator;
        43: .line 268
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.updateBatchKey:Lorg/hibernate/engine/jdbc/batch/internal/BasicBatchKey;
            invokeinterface org.hibernate.engine.jdbc.spi.JdbcCoordinator.getBatch:(Lorg/hibernate/engine/jdbc/batch/spi/BatchKey;)Lorg/hibernate/engine/jdbc/batch/spi/Batch;
        44: .line 269
            invokeinterface org.hibernate.engine.jdbc.batch.spi.Batch.addToBatch:()V
        45: .line 270
            goto 56
        46: .line 272
      StackMap locals:
      StackMap stack:
            aload 5 /* expectation */
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getTransactionCoordinator:()Lorg/hibernate/engine/transaction/spi/TransactionCoordinator;
            invokeinterface org.hibernate.engine.transaction.spi.TransactionCoordinator.getJdbcCoordinator:()Lorg/hibernate/engine/jdbc/spi/JdbcCoordinator;
            invokeinterface org.hibernate.engine.jdbc.spi.JdbcCoordinator.getResultSetReturn:()Lorg/hibernate/engine/jdbc/spi/ResultSetReturn;
            aload 4 /* st */
            invokeinterface org.hibernate.engine.jdbc.spi.ResultSetReturn.executeUpdate:(Ljava/sql/PreparedStatement;)I
            aload 4 /* st */
            iconst_m1
            invokeinterface org.hibernate.jdbc.Expectation.verifyOutcome:(ILjava/sql/PreparedStatement;I)V
        end local 14 // int loc
        47: .line 274
            goto 56
        48: .line 275
      StackMap locals: org.hibernate.persister.collection.BasicCollectionPersister java.io.Serializable org.hibernate.collection.spi.PersistentCollection org.hibernate.engine.spi.SessionImplementor java.sql.PreparedStatement org.hibernate.jdbc.Expectation int int java.util.Iterator java.lang.String int int java.lang.Object int
      StackMap stack: java.sql.SQLException
            astore 14 /* sqle */
        start local 14 // java.sql.SQLException sqle
        49: .line 276
            iload 7 /* useBatch */
            ifeq 51
        50: .line 277
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getTransactionCoordinator:()Lorg/hibernate/engine/transaction/spi/TransactionCoordinator;
            invokeinterface org.hibernate.engine.transaction.spi.TransactionCoordinator.getJdbcCoordinator:()Lorg/hibernate/engine/jdbc/spi/JdbcCoordinator;
            invokeinterface org.hibernate.engine.jdbc.spi.JdbcCoordinator.abortBatch:()V
        51: .line 279
      StackMap locals: java.sql.SQLException
      StackMap stack:
            aload 14 /* sqle */
            athrow
        end local 14 // java.sql.SQLException sqle
        52: .line 281
      StackMap locals: org.hibernate.persister.collection.BasicCollectionPersister java.io.Serializable org.hibernate.collection.spi.PersistentCollection org.hibernate.engine.spi.SessionImplementor java.sql.PreparedStatement org.hibernate.jdbc.Expectation int int java.util.Iterator java.lang.String int int java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 15
        53: .line 282
            iload 7 /* useBatch */
            ifne 55
        54: .line 283
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getTransactionCoordinator:()Lorg/hibernate/engine/transaction/spi/TransactionCoordinator;
            invokeinterface org.hibernate.engine.transaction.spi.TransactionCoordinator.getJdbcCoordinator:()Lorg/hibernate/engine/jdbc/spi/JdbcCoordinator;
            aload 4 /* st */
            invokeinterface org.hibernate.engine.jdbc.spi.JdbcCoordinator.release:(Ljava/sql/Statement;)V
        55: .line 285
      StackMap locals: org.hibernate.persister.collection.BasicCollectionPersister java.io.Serializable org.hibernate.collection.spi.PersistentCollection org.hibernate.engine.spi.SessionImplementor java.sql.PreparedStatement org.hibernate.jdbc.Expectation int int java.util.Iterator java.lang.String int int java.lang.Object int top java.lang.Throwable
      StackMap stack:
            aload 15
            athrow
        56: .line 282
      StackMap locals: org.hibernate.persister.collection.BasicCollectionPersister java.io.Serializable org.hibernate.collection.spi.PersistentCollection org.hibernate.engine.spi.SessionImplementor java.sql.PreparedStatement org.hibernate.jdbc.Expectation int int java.util.Iterator java.lang.String int int java.lang.Object int
      StackMap stack:
            iload 7 /* useBatch */
            ifne 58
        57: .line 283
            aload 3 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getTransactionCoordinator:()Lorg/hibernate/engine/transaction/spi/TransactionCoordinator;
            invokeinterface org.hibernate.engine.transaction.spi.TransactionCoordinator.getJdbcCoordinator:()Lorg/hibernate/engine/jdbc/spi/JdbcCoordinator;
            aload 4 /* st */
            invokeinterface org.hibernate.engine.jdbc.spi.JdbcCoordinator.release:(Ljava/sql/Statement;)V
        58: .line 286
      StackMap locals:
      StackMap stack:
            iinc 11 /* count */ 1
        end local 13 // int offset
        59: .line 288
      StackMap locals:
      StackMap stack:
            iinc 10 /* i */ 1
        end local 12 // java.lang.Object entry
        60: .line 225
      StackMap locals:
      StackMap stack:
            aload 8 /* entries */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        61: .line 290
            iload 11 /* count */
        62: ireturn
        end local 11 // int count
        end local 10 // int i
        end local 9 // java.lang.String sql
        end local 8 // java.util.Iterator entries
        end local 7 // boolean useBatch
        end local 6 // boolean callable
        end local 5 // org.hibernate.jdbc.Expectation expectation
        end local 4 // java.sql.PreparedStatement st
        63: .line 292
      StackMap locals: org.hibernate.persister.collection.BasicCollectionPersister java.io.Serializable org.hibernate.collection.spi.PersistentCollection org.hibernate.engine.spi.SessionImplementor
      StackMap stack: java.sql.SQLException
            astore 4 /* sqle */
        start local 4 // java.sql.SQLException sqle
        64: .line 293
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getSQLExceptionHelper:()Lorg/hibernate/engine/jdbc/spi/SqlExceptionHelper;
        65: .line 294
            aload 4 /* sqle */
        66: .line 295
            new java.lang.StringBuilder
            dup
            ldc "could not update collection rows: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            aload 2 /* collection */
            aload 1 /* id */
            aload 3 /* session */
            invokestatic org.hibernate.pretty.MessageHelper.collectionInfoString:(Lorg/hibernate/persister/collection/CollectionPersister;Lorg/hibernate/collection/spi/PersistentCollection;Ljava/io/Serializable;Lorg/hibernate/engine/spi/SessionImplementor;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        67: .line 296
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getSQLUpdateRowString:()Ljava/lang/String;
        68: .line 293
            invokevirtual org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert:(Ljava/sql/SQLException;Ljava/lang/String;Ljava/lang/String;)Lorg/hibernate/JDBCException;
            athrow
        end local 4 // java.sql.SQLException sqle
        end local 3 // org.hibernate.engine.spi.SessionImplementor session
        end local 2 // org.hibernate.collection.spi.PersistentCollection collection
        end local 1 // java.io.Serializable id
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   69     0         this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0   69     1           id  Ljava/io/Serializable;
            0   69     2   collection  Lorg/hibernate/collection/spi/PersistentCollection;
            0   69     3      session  Lorg/hibernate/engine/spi/SessionImplementor;
            2   63     4           st  Ljava/sql/PreparedStatement;
            3   63     5  expectation  Lorg/hibernate/jdbc/Expectation;
            4   63     6     callable  Z
            5   63     7     useBatch  Z
            6   63     8      entries  Ljava/util/Iterator;
            7   63     9          sql  Ljava/lang/String;
            8   63    10            i  I
            9   63    11        count  I
           11   60    12        entry  Ljava/lang/Object;
           13   59    13       offset  I
           32   47    14          loc  I
           49   52    14         sqle  Ljava/sql/SQLException;
           64   69     4         sqle  Ljava/sql/SQLException;
      Exception table:
        from    to  target  type
          30    47      48  Class java.sql.SQLException
          30    52      52  any
           1    62      63  Class java.sql.SQLException
    Exceptions:
      throws org.hibernate.HibernateException
    MethodParameters:
            Name  Flags
      id          
      collection  
      session     

  public java.lang.String selectFragment(org.hibernate.persister.entity.Joinable, java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean);
    descriptor: (Lorg/hibernate/persister/entity/Joinable;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=7
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // org.hibernate.persister.entity.Joinable rhs
        start local 2 // java.lang.String rhsAlias
        start local 3 // java.lang.String lhsAlias
        start local 4 // java.lang.String entitySuffix
        start local 5 // java.lang.String collectionSuffix
        start local 6 // boolean includeCollectionColumns
         0: .line 310
            aload 1 /* rhs */
            ifnull 4
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.isManyToMany:()Z
            ifeq 4
            aload 1 /* rhs */
            invokeinterface org.hibernate.persister.entity.Joinable.isCollection:()Z
            ifne 4
         1: .line 311
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getElementType:()Lorg/hibernate/type/Type;
            checkcast org.hibernate.type.AssociationType
            astore 7 /* elementType */
        start local 7 // org.hibernate.type.AssociationType elementType
         2: .line 312
            aload 1 /* rhs */
            aload 7 /* elementType */
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.AssociationType.getAssociatedJoinable:(Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Lorg/hibernate/persister/entity/Joinable;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 313
            aload 0 /* this */
            aload 1 /* rhs */
            aload 2 /* rhsAlias */
            aload 3 /* lhsAlias */
            aload 5 /* collectionSuffix */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.manyToManySelectFragment:(Lorg/hibernate/persister/entity/Joinable;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 7 // org.hibernate.type.AssociationType elementType
         4: .line 316
      StackMap locals:
      StackMap stack:
            iload 6 /* includeCollectionColumns */
            ifeq 5
            aload 0 /* this */
            aload 3 /* lhsAlias */
            aload 5 /* collectionSuffix */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.selectFragment:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            goto 6
      StackMap locals:
      StackMap stack:
         5: ldc ""
      StackMap locals:
      StackMap stack: java.lang.String
         6: areturn
        end local 6 // boolean includeCollectionColumns
        end local 5 // java.lang.String collectionSuffix
        end local 4 // java.lang.String entitySuffix
        end local 3 // java.lang.String lhsAlias
        end local 2 // java.lang.String rhsAlias
        end local 1 // org.hibernate.persister.entity.Joinable rhs
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    7     0                      this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0    7     1                       rhs  Lorg/hibernate/persister/entity/Joinable;
            0    7     2                  rhsAlias  Ljava/lang/String;
            0    7     3                  lhsAlias  Ljava/lang/String;
            0    7     4              entitySuffix  Ljava/lang/String;
            0    7     5          collectionSuffix  Ljava/lang/String;
            0    7     6  includeCollectionColumns  Z
            2    4     7               elementType  Lorg/hibernate/type/AssociationType;
    MethodParameters:
                          Name  Flags
      rhs                       
      rhsAlias                  
      lhsAlias                  
      entitySuffix              
      collectionSuffix          
      includeCollectionColumns  

  private java.lang.String manyToManySelectFragment(org.hibernate.persister.entity.Joinable, java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Lorg/hibernate/persister/entity/Joinable;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=5
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // org.hibernate.persister.entity.Joinable rhs
        start local 2 // java.lang.String rhsAlias
        start local 3 // java.lang.String lhsAlias
        start local 4 // java.lang.String collectionSuffix
         0: .line 324
            aload 0 /* this */
            aload 3 /* lhsAlias */
            aload 4 /* collectionSuffix */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.generateSelectFragment:(Ljava/lang/String;Ljava/lang/String;)Lorg/hibernate/sql/SelectFragment;
            astore 5 /* frag */
        start local 5 // org.hibernate.sql.SelectFragment frag
         1: .line 326
            aload 1 /* rhs */
            invokeinterface org.hibernate.persister.entity.Joinable.getKeyColumnNames:()[Ljava/lang/String;
            astore 6 /* elementColumnNames */
        start local 6 // java.lang.String[] elementColumnNames
         2: .line 327
            aload 5 /* frag */
            aload 2 /* rhsAlias */
            aload 6 /* elementColumnNames */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.elementColumnAliases:[Ljava/lang/String;
            invokevirtual org.hibernate.sql.SelectFragment.addColumns:(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)Lorg/hibernate/sql/SelectFragment;
            pop
         3: .line 328
            aload 0 /* this */
            aload 5 /* frag */
            aload 3 /* lhsAlias */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.appendIndexColumns:(Lorg/hibernate/sql/SelectFragment;Ljava/lang/String;)V
         4: .line 329
            aload 0 /* this */
            aload 5 /* frag */
            aload 3 /* lhsAlias */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.appendIdentifierColumns:(Lorg/hibernate/sql/SelectFragment;Ljava/lang/String;)V
         5: .line 331
            aload 5 /* frag */
            invokevirtual org.hibernate.sql.SelectFragment.toFragmentString:()Ljava/lang/String;
         6: .line 332
            iconst_2
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
         7: .line 331
            areturn
        end local 6 // java.lang.String[] elementColumnNames
        end local 5 // org.hibernate.sql.SelectFragment frag
        end local 4 // java.lang.String collectionSuffix
        end local 3 // java.lang.String lhsAlias
        end local 2 // java.lang.String rhsAlias
        end local 1 // org.hibernate.persister.entity.Joinable rhs
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    8     0                this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0    8     1                 rhs  Lorg/hibernate/persister/entity/Joinable;
            0    8     2            rhsAlias  Ljava/lang/String;
            0    8     3            lhsAlias  Ljava/lang/String;
            0    8     4    collectionSuffix  Ljava/lang/String;
            1    8     5                frag  Lorg/hibernate/sql/SelectFragment;
            2    8     6  elementColumnNames  [Ljava/lang/String;
    MethodParameters:
                  Name  Flags
      rhs               
      rhsAlias          
      lhsAlias          
      collectionSuffix  

  protected org.hibernate.loader.collection.CollectionInitializer createCollectionInitializer(org.hibernate.engine.spi.LoadQueryInfluencers);
    descriptor: (Lorg/hibernate/engine/spi/LoadQueryInfluencers;)Lorg/hibernate/loader/collection/CollectionInitializer;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // org.hibernate.engine.spi.LoadQueryInfluencers loadQueryInfluencers
         0: .line 343
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokestatic org.hibernate.loader.collection.BatchingCollectionInitializerBuilder.getBuilder:(Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Lorg/hibernate/loader/collection/BatchingCollectionInitializerBuilder;
         1: .line 344
            aload 0 /* this */
            aload 0 /* this */
            getfield org.hibernate.persister.collection.BasicCollectionPersister.batchSize:I
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            aload 1 /* loadQueryInfluencers */
            invokevirtual org.hibernate.loader.collection.BatchingCollectionInitializerBuilder.createBatchingCollectionInitializer:(Lorg/hibernate/persister/collection/QueryableCollection;ILorg/hibernate/engine/spi/SessionFactoryImplementor;Lorg/hibernate/engine/spi/LoadQueryInfluencers;)Lorg/hibernate/loader/collection/CollectionInitializer;
         2: .line 343
            areturn
        end local 1 // org.hibernate.engine.spi.LoadQueryInfluencers loadQueryInfluencers
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    3     0                  this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0    3     1  loadQueryInfluencers  Lorg/hibernate/engine/spi/LoadQueryInfluencers;
    Exceptions:
      throws org.hibernate.MappingException
    MethodParameters:
                      Name  Flags
      loadQueryInfluencers  

  public java.lang.String fromJoinFragment(java.lang.String, boolean, boolean);
    descriptor: (Ljava/lang/String;ZZ)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=4
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // java.lang.String alias
        start local 2 // boolean innerJoin
        start local 3 // boolean includeSubclasses
         0: .line 349
            ldc ""
            areturn
        end local 3 // boolean includeSubclasses
        end local 2 // boolean innerJoin
        end local 1 // java.lang.String alias
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    1     0               this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0    1     1              alias  Ljava/lang/String;
            0    1     2          innerJoin  Z
            0    1     3  includeSubclasses  Z
    MethodParameters:
                   Name  Flags
      alias              
      innerJoin          
      includeSubclasses  

  public java.lang.String fromJoinFragment(java.lang.String, boolean, boolean, java.util.Set<java.lang.String>);
    descriptor: (Ljava/lang/String;ZZLjava/util/Set;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=5, args_size=5
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // java.lang.String alias
        start local 2 // boolean innerJoin
        start local 3 // boolean includeSubclasses
        start local 4 // java.util.Set treatAsDeclarations
         0: .line 354
            ldc ""
            areturn
        end local 4 // java.util.Set treatAsDeclarations
        end local 3 // boolean includeSubclasses
        end local 2 // boolean innerJoin
        end local 1 // java.lang.String alias
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    1     0                 this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0    1     1                alias  Ljava/lang/String;
            0    1     2            innerJoin  Z
            0    1     3    includeSubclasses  Z
            0    1     4  treatAsDeclarations  Ljava/util/Set<Ljava/lang/String;>;
    Signature: (Ljava/lang/String;ZZLjava/util/Set<Ljava/lang/String;>;)Ljava/lang/String;
    MethodParameters:
                     Name  Flags
      alias                
      innerJoin            
      includeSubclasses    
      treatAsDeclarations  

  public java.lang.String whereJoinFragment(java.lang.String, boolean, boolean);
    descriptor: (Ljava/lang/String;ZZ)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=4
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // java.lang.String alias
        start local 2 // boolean innerJoin
        start local 3 // boolean includeSubclasses
         0: .line 359
            ldc ""
            areturn
        end local 3 // boolean includeSubclasses
        end local 2 // boolean innerJoin
        end local 1 // java.lang.String alias
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    1     0               this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0    1     1              alias  Ljava/lang/String;
            0    1     2          innerJoin  Z
            0    1     3  includeSubclasses  Z
    MethodParameters:
                   Name  Flags
      alias              
      innerJoin          
      includeSubclasses  

  public java.lang.String whereJoinFragment(java.lang.String, boolean, boolean, java.util.Set<java.lang.String>);
    descriptor: (Ljava/lang/String;ZZLjava/util/Set;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=5, args_size=5
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // java.lang.String alias
        start local 2 // boolean innerJoin
        start local 3 // boolean includeSubclasses
        start local 4 // java.util.Set treatAsDeclarations
         0: .line 364
            ldc ""
            areturn
        end local 4 // java.util.Set treatAsDeclarations
        end local 3 // boolean includeSubclasses
        end local 2 // boolean innerJoin
        end local 1 // java.lang.String alias
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    1     0                 this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0    1     1                alias  Ljava/lang/String;
            0    1     2            innerJoin  Z
            0    1     3    includeSubclasses  Z
            0    1     4  treatAsDeclarations  Ljava/util/Set<Ljava/lang/String;>;
    Signature: (Ljava/lang/String;ZZLjava/util/Set<Ljava/lang/String;>;)Ljava/lang/String;
    MethodParameters:
                     Name  Flags
      alias                
      innerJoin            
      includeSubclasses    
      treatAsDeclarations  

  protected org.hibernate.loader.collection.CollectionInitializer createSubselectInitializer(org.hibernate.engine.spi.SubselectFetch, org.hibernate.engine.spi.SessionImplementor);
    descriptor: (Lorg/hibernate/engine/spi/SubselectFetch;Lorg/hibernate/engine/spi/SessionImplementor;)Lorg/hibernate/loader/collection/CollectionInitializer;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=9, locals=3, args_size=3
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // org.hibernate.engine.spi.SubselectFetch subselect
        start local 2 // org.hibernate.engine.spi.SessionImplementor session
         0: .line 369
            new org.hibernate.loader.collection.SubselectCollectionLoader
            dup
         1: .line 370
            aload 0 /* this */
         2: .line 371
            aload 1 /* subselect */
            aload 0 /* this */
            invokevirtual org.hibernate.persister.collection.BasicCollectionPersister.getCollectionType:()Lorg/hibernate/type/CollectionType;
            invokevirtual org.hibernate.type.CollectionType.getLHSPropertyName:()Ljava/lang/String;
            invokevirtual org.hibernate.engine.spi.SubselectFetch.toSubselectString:(Ljava/lang/String;)Ljava/lang/String;
         3: .line 372
            aload 1 /* subselect */
            invokevirtual org.hibernate.engine.spi.SubselectFetch.getResult:()Ljava/util/Set;
         4: .line 373
            aload 1 /* subselect */
            invokevirtual org.hibernate.engine.spi.SubselectFetch.getQueryParameters:()Lorg/hibernate/engine/spi/QueryParameters;
         5: .line 374
            aload 1 /* subselect */
            invokevirtual org.hibernate.engine.spi.SubselectFetch.getNamedParameterLocMap:()Ljava/util/Map;
         6: .line 375
            aload 2 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
         7: .line 376
            aload 2 /* session */
            invokeinterface org.hibernate.engine.spi.SessionImplementor.getLoadQueryInfluencers:()Lorg/hibernate/engine/spi/LoadQueryInfluencers;
         8: .line 369
            invokespecial org.hibernate.loader.collection.SubselectCollectionLoader.<init>:(Lorg/hibernate/persister/collection/QueryableCollection;Ljava/lang/String;Ljava/util/Collection;Lorg/hibernate/engine/spi/QueryParameters;Ljava/util/Map;Lorg/hibernate/engine/spi/SessionFactoryImplementor;Lorg/hibernate/engine/spi/LoadQueryInfluencers;)V
            areturn
        end local 2 // org.hibernate.engine.spi.SessionImplementor session
        end local 1 // org.hibernate.engine.spi.SubselectFetch subselect
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0    9     1  subselect  Lorg/hibernate/engine/spi/SubselectFetch;
            0    9     2    session  Lorg/hibernate/engine/spi/SessionImplementor;
    MethodParameters:
           Name  Flags
      subselect  
      session    

  public org.hibernate.internal.FilterAliasGenerator getFilterAliasGenerator(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/hibernate/internal/FilterAliasGenerator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
        start local 1 // java.lang.String rootAlias
         0: .line 382
            new org.hibernate.internal.StaticFilterAliasGenerator
            dup
            aload 1 /* rootAlias */
            invokespecial org.hibernate.internal.StaticFilterAliasGenerator.<init>:(Ljava/lang/String;)V
            areturn
        end local 1 // java.lang.String rootAlias
        end local 0 // org.hibernate.persister.collection.BasicCollectionPersister this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lorg/hibernate/persister/collection/BasicCollectionPersister;
            0    1     1  rootAlias  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      rootAlias  
}
SourceFile: "BasicCollectionPersister.java"