public abstract class org.hibernate.loader.AbstractEntityJoinWalker extends org.hibernate.loader.JoinWalker
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.hibernate.loader.AbstractEntityJoinWalker
  super_class: org.hibernate.loader.JoinWalker
{
  private final org.hibernate.persister.entity.OuterJoinLoadable persister;
    descriptor: Lorg/hibernate/persister/entity/OuterJoinLoadable;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  public void <init>(org.hibernate.persister.entity.OuterJoinLoadable, org.hibernate.engine.spi.SessionFactoryImplementor, org.hibernate.engine.spi.LoadQueryInfluencers);
    descriptor: (Lorg/hibernate/persister/entity/OuterJoinLoadable;Lorg/hibernate/engine/spi/SessionFactoryImplementor;Lorg/hibernate/engine/spi/LoadQueryInfluencers;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
        start local 1 // org.hibernate.persister.entity.OuterJoinLoadable persister
        start local 2 // org.hibernate.engine.spi.SessionFactoryImplementor factory
        start local 3 // org.hibernate.engine.spi.LoadQueryInfluencers loadQueryInfluencers
         0: .line 60
            aload 0 /* this */
            aload 1 /* persister */
            aload 2 /* factory */
            aload 3 /* loadQueryInfluencers */
            aconst_null
            invokespecial org.hibernate.loader.AbstractEntityJoinWalker.<init>:(Lorg/hibernate/persister/entity/OuterJoinLoadable;Lorg/hibernate/engine/spi/SessionFactoryImplementor;Lorg/hibernate/engine/spi/LoadQueryInfluencers;Ljava/lang/String;)V
         1: .line 61
            return
        end local 3 // org.hibernate.engine.spi.LoadQueryInfluencers loadQueryInfluencers
        end local 2 // org.hibernate.engine.spi.SessionFactoryImplementor factory
        end local 1 // org.hibernate.persister.entity.OuterJoinLoadable persister
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    2     0                  this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
            0    2     1             persister  Lorg/hibernate/persister/entity/OuterJoinLoadable;
            0    2     2               factory  Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            0    2     3  loadQueryInfluencers  Lorg/hibernate/engine/spi/LoadQueryInfluencers;
    MethodParameters:
                      Name  Flags
      persister             
      factory               
      loadQueryInfluencers  

  public void <init>(org.hibernate.persister.entity.OuterJoinLoadable, org.hibernate.engine.spi.SessionFactoryImplementor, org.hibernate.engine.spi.LoadQueryInfluencers, java.lang.String);
    descriptor: (Lorg/hibernate/persister/entity/OuterJoinLoadable;Lorg/hibernate/engine/spi/SessionFactoryImplementor;Lorg/hibernate/engine/spi/LoadQueryInfluencers;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
        start local 1 // org.hibernate.persister.entity.OuterJoinLoadable persister
        start local 2 // org.hibernate.engine.spi.SessionFactoryImplementor factory
        start local 3 // org.hibernate.engine.spi.LoadQueryInfluencers loadQueryInfluencers
        start local 4 // java.lang.String alias
         0: .line 68
            aload 0 /* this */
            aload 2 /* factory */
            aload 3 /* loadQueryInfluencers */
            invokespecial org.hibernate.loader.JoinWalker.<init>:(Lorg/hibernate/engine/spi/SessionFactoryImplementor;Lorg/hibernate/engine/spi/LoadQueryInfluencers;)V
         1: .line 69
            aload 0 /* this */
            aload 1 /* persister */
            putfield org.hibernate.loader.AbstractEntityJoinWalker.persister:Lorg/hibernate/persister/entity/OuterJoinLoadable;
         2: .line 70
            aload 0 /* this */
            aload 4 /* alias */
            ifnonnull 3
            aload 0 /* this */
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.OuterJoinLoadable.getEntityName:()Ljava/lang/String;
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.generateRootAlias:(Ljava/lang/String;)Ljava/lang/String;
            goto 4
      StackMap locals: org.hibernate.loader.AbstractEntityJoinWalker org.hibernate.persister.entity.OuterJoinLoadable org.hibernate.engine.spi.SessionFactoryImplementor org.hibernate.engine.spi.LoadQueryInfluencers java.lang.String
      StackMap stack: org.hibernate.loader.AbstractEntityJoinWalker
         3: aload 4 /* alias */
      StackMap locals: org.hibernate.loader.AbstractEntityJoinWalker org.hibernate.persister.entity.OuterJoinLoadable org.hibernate.engine.spi.SessionFactoryImplementor org.hibernate.engine.spi.LoadQueryInfluencers java.lang.String
      StackMap stack: org.hibernate.loader.AbstractEntityJoinWalker java.lang.String
         4: putfield org.hibernate.loader.AbstractEntityJoinWalker.alias:Ljava/lang/String;
         5: .line 71
            return
        end local 4 // java.lang.String alias
        end local 3 // org.hibernate.engine.spi.LoadQueryInfluencers loadQueryInfluencers
        end local 2 // org.hibernate.engine.spi.SessionFactoryImplementor factory
        end local 1 // org.hibernate.persister.entity.OuterJoinLoadable persister
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    6     0                  this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
            0    6     1             persister  Lorg/hibernate/persister/entity/OuterJoinLoadable;
            0    6     2               factory  Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            0    6     3  loadQueryInfluencers  Lorg/hibernate/engine/spi/LoadQueryInfluencers;
            0    6     4                 alias  Ljava/lang/String;
    MethodParameters:
                      Name  Flags
      persister             
      factory               
      loadQueryInfluencers  
      alias                 

  protected final void initAll(java.lang.String, java.lang.String, org.hibernate.LockOptions);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/LockOptions;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
        start local 1 // java.lang.String whereString
        start local 2 // java.lang.String orderByString
        start local 3 // org.hibernate.LockOptions lockOptions
         0: .line 77
            aload 0 /* this */
            aload 1 /* whereString */
            aload 2 /* orderByString */
            aload 3 /* lockOptions */
            getstatic org.hibernate.loader.JoinWalker$AssociationInitCallback.NO_CALLBACK:Lorg/hibernate/loader/JoinWalker$AssociationInitCallback;
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.initAll:(Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/LockOptions;Lorg/hibernate/loader/JoinWalker$AssociationInitCallback;)V
         1: .line 78
            return
        end local 3 // org.hibernate.LockOptions lockOptions
        end local 2 // java.lang.String orderByString
        end local 1 // java.lang.String whereString
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
            0    2     1    whereString  Ljava/lang/String;
            0    2     2  orderByString  Ljava/lang/String;
            0    2     3    lockOptions  Lorg/hibernate/LockOptions;
    Exceptions:
      throws org.hibernate.MappingException
    MethodParameters:
               Name  Flags
      whereString    final
      orderByString  final
      lockOptions    final

  protected final void initAll(java.lang.String, java.lang.String, org.hibernate.LockOptions, org.hibernate.loader.JoinWalker$AssociationInitCallback);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/LockOptions;Lorg/hibernate/loader/JoinWalker$AssociationInitCallback;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
        start local 1 // java.lang.String whereString
        start local 2 // java.lang.String orderByString
        start local 3 // org.hibernate.LockOptions lockOptions
        start local 4 // org.hibernate.loader.JoinWalker$AssociationInitCallback callback
         0: .line 85
            aload 0 /* this */
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.persister:Lorg/hibernate/persister/entity/OuterJoinLoadable;
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.getAlias:()Ljava/lang/String;
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.walkEntityTree:(Lorg/hibernate/persister/entity/OuterJoinLoadable;Ljava/lang/String;)V
         1: .line 86
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* allAssociations */
        start local 5 // java.util.List allAssociations
         2: .line 87
            aload 5 /* allAssociations */
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.associations:Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         3: .line 88
            aload 5 /* allAssociations */
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.persister:Lorg/hibernate/persister/entity/OuterJoinLoadable;
            invokeinterface org.hibernate.persister.entity.OuterJoinLoadable.getEntityType:()Lorg/hibernate/type/EntityType;
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.alias:Ljava/lang/String;
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokestatic org.hibernate.loader.OuterJoinableAssociation.createRoot:(Lorg/hibernate/type/AssociationType;Ljava/lang/String;Lorg/hibernate/engine/spi/SessionFactoryImplementor;)Lorg/hibernate/loader/OuterJoinableAssociation;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 89
            aload 0 /* this */
            aload 5 /* allAssociations */
            aload 3 /* lockOptions */
            aload 4 /* callback */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.initPersisters:(Ljava/util/List;Lorg/hibernate/LockOptions;Lorg/hibernate/loader/JoinWalker$AssociationInitCallback;)V
         5: .line 90
            aload 0 /* this */
            aload 1 /* whereString */
            aload 2 /* orderByString */
            aload 3 /* lockOptions */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.initStatementString:(Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/LockOptions;)V
         6: .line 91
            return
        end local 5 // java.util.List allAssociations
        end local 4 // org.hibernate.loader.JoinWalker$AssociationInitCallback callback
        end local 3 // org.hibernate.LockOptions lockOptions
        end local 2 // java.lang.String orderByString
        end local 1 // java.lang.String whereString
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    7     0             this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
            0    7     1      whereString  Ljava/lang/String;
            0    7     2    orderByString  Ljava/lang/String;
            0    7     3      lockOptions  Lorg/hibernate/LockOptions;
            0    7     4         callback  Lorg/hibernate/loader/JoinWalker$AssociationInitCallback;
            2    7     5  allAssociations  Ljava/util/List;
    Exceptions:
      throws org.hibernate.MappingException
    MethodParameters:
               Name  Flags
      whereString    final
      orderByString  final
      lockOptions    final
      callback       final

  protected final void initProjection(java.lang.String, java.lang.String, java.lang.String, java.lang.String, org.hibernate.LockOptions);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/LockOptions;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=6, locals=6, args_size=6
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
        start local 1 // java.lang.String projectionString
        start local 2 // java.lang.String whereString
        start local 3 // java.lang.String orderByString
        start local 4 // java.lang.String groupByString
        start local 5 // org.hibernate.LockOptions lockOptions
         0: .line 99
            aload 0 /* this */
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.persister:Lorg/hibernate/persister/entity/OuterJoinLoadable;
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.getAlias:()Ljava/lang/String;
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.walkEntityTree:(Lorg/hibernate/persister/entity/OuterJoinLoadable;Ljava/lang/String;)V
         1: .line 100
            aload 0 /* this */
            iconst_0
            anewarray org.hibernate.persister.entity.Loadable
            putfield org.hibernate.loader.AbstractEntityJoinWalker.persisters:[Lorg/hibernate/persister/entity/Loadable;
         2: .line 101
            aload 0 /* this */
            aload 1 /* projectionString */
            aload 2 /* whereString */
            aload 3 /* orderByString */
            aload 4 /* groupByString */
            aload 5 /* lockOptions */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.initStatementString:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/LockOptions;)V
         3: .line 102
            return
        end local 5 // org.hibernate.LockOptions lockOptions
        end local 4 // java.lang.String groupByString
        end local 3 // java.lang.String orderByString
        end local 2 // java.lang.String whereString
        end local 1 // java.lang.String projectionString
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    4     0              this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
            0    4     1  projectionString  Ljava/lang/String;
            0    4     2       whereString  Ljava/lang/String;
            0    4     3     orderByString  Ljava/lang/String;
            0    4     4     groupByString  Ljava/lang/String;
            0    4     5       lockOptions  Lorg/hibernate/LockOptions;
    Exceptions:
      throws org.hibernate.MappingException
    MethodParameters:
                  Name  Flags
      projectionString  final
      whereString       final
      orderByString     final
      groupByString     final
      lockOptions       final

  private void initStatementString(java.lang.String, java.lang.String, org.hibernate.LockOptions);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/LockOptions;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
        start local 1 // java.lang.String condition
        start local 2 // java.lang.String orderBy
        start local 3 // org.hibernate.LockOptions lockOptions
         0: .line 108
            aload 0 /* this */
            aconst_null
            aload 1 /* condition */
            aload 2 /* orderBy */
            ldc ""
            aload 3 /* lockOptions */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.initStatementString:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/LockOptions;)V
         1: .line 109
            return
        end local 3 // org.hibernate.LockOptions lockOptions
        end local 2 // java.lang.String orderBy
        end local 1 // java.lang.String condition
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
            0    2     1    condition  Ljava/lang/String;
            0    2     2      orderBy  Ljava/lang/String;
            0    2     3  lockOptions  Lorg/hibernate/LockOptions;
    Exceptions:
      throws org.hibernate.MappingException
    MethodParameters:
             Name  Flags
      condition    final
      orderBy      final
      lockOptions  final

  private void initStatementString(java.lang.String, java.lang.String, java.lang.String, java.lang.String, org.hibernate.LockOptions);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/LockOptions;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=9, args_size=6
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
        start local 1 // java.lang.String projection
        start local 2 // java.lang.String condition
        start local 3 // java.lang.String orderBy
        start local 4 // java.lang.String groupBy
        start local 5 // org.hibernate.LockOptions lockOptions
         0: .line 118
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.associations:Ljava/util/List;
            invokestatic org.hibernate.loader.AbstractEntityJoinWalker.countEntityPersisters:(Ljava/util/List;)I
            istore 6 /* joins */
        start local 6 // int joins
         1: .line 119
            aload 0 /* this */
            iload 6 /* joins */
            iconst_1
            iadd
            invokestatic org.hibernate.loader.BasicLoader.generateSuffixes:(I)[Ljava/lang/String;
            putfield org.hibernate.loader.AbstractEntityJoinWalker.suffixes:[Ljava/lang/String;
         2: .line 121
            aload 0 /* this */
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.associations:Ljava/util/List;
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.mergeOuterJoins:(Ljava/util/List;)Lorg/hibernate/sql/JoinFragment;
            astore 7 /* ojf */
        start local 7 // org.hibernate.sql.JoinFragment ojf
         3: .line 123
            new org.hibernate.sql.Select
            dup
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.getDialect:()Lorg/hibernate/dialect/Dialect;
            invokespecial org.hibernate.sql.Select.<init>:(Lorg/hibernate/dialect/Dialect;)V
         4: .line 124
            aload 5 /* lockOptions */
            invokevirtual org.hibernate.sql.Select.setLockOptions:(Lorg/hibernate/LockOptions;)Lorg/hibernate/sql/Select;
         5: .line 126
            aload 1 /* projection */
            ifnonnull 7
         6: .line 127
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.persister:Lorg/hibernate/persister/entity/OuterJoinLoadable;
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.alias:Ljava/lang/String;
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.suffixes:[Ljava/lang/String;
            iload 6 /* joins */
            aaload
            invokeinterface org.hibernate.persister.entity.OuterJoinLoadable.selectFragment:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.associations:Ljava/util/List;
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.selectString:(Ljava/util/List;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            goto 8
         7: .line 128
      StackMap locals: org.hibernate.loader.AbstractEntityJoinWalker java.lang.String java.lang.String java.lang.String java.lang.String org.hibernate.LockOptions int org.hibernate.sql.JoinFragment
      StackMap stack: org.hibernate.sql.Select
            aload 1 /* projection */
         8: .line 125
      StackMap locals: org.hibernate.loader.AbstractEntityJoinWalker java.lang.String java.lang.String java.lang.String java.lang.String org.hibernate.LockOptions int org.hibernate.sql.JoinFragment
      StackMap stack: org.hibernate.sql.Select java.lang.String
            invokevirtual org.hibernate.sql.Select.setSelectClause:(Ljava/lang/String;)Lorg/hibernate/sql/Select;
         9: .line 131
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.getDialect:()Lorg/hibernate/dialect/Dialect;
            aload 5 /* lockOptions */
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.persister:Lorg/hibernate/persister/entity/OuterJoinLoadable;
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.alias:Ljava/lang/String;
            invokeinterface org.hibernate.persister.entity.OuterJoinLoadable.fromTableFragment:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual org.hibernate.dialect.Dialect.appendLockHint:(Lorg/hibernate/LockOptions;Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 132
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.persister:Lorg/hibernate/persister/entity/OuterJoinLoadable;
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.alias:Ljava/lang/String;
            iconst_1
            iconst_1
            invokeinterface org.hibernate.persister.entity.OuterJoinLoadable.fromJoinFragment:(Ljava/lang/String;ZZ)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        11: .line 131
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 130
            invokevirtual org.hibernate.sql.Select.setFromClause:(Ljava/lang/String;)Lorg/hibernate/sql/Select;
        13: .line 134
            aload 2 /* condition */
            invokevirtual org.hibernate.sql.Select.setWhereClause:(Ljava/lang/String;)Lorg/hibernate/sql/Select;
        14: .line 136
            aload 7 /* ojf */
            invokevirtual org.hibernate.sql.JoinFragment.toFromFragmentString:()Ljava/lang/String;
        15: .line 137
            new java.lang.StringBuilder
            dup
            aload 7 /* ojf */
            invokevirtual org.hibernate.sql.JoinFragment.toWhereFragmentString:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.getWhereFragment:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 135
            invokevirtual org.hibernate.sql.Select.setOuterJoins:(Ljava/lang/String;Ljava/lang/String;)Lorg/hibernate/sql/Select;
        17: .line 139
            aload 0 /* this */
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.associations:Ljava/util/List;
            aload 3 /* orderBy */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.orderBy:(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual org.hibernate.sql.Select.setOrderByClause:(Ljava/lang/String;)Lorg/hibernate/sql/Select;
        18: .line 140
            aload 4 /* groupBy */
            invokevirtual org.hibernate.sql.Select.setGroupByClause:(Ljava/lang/String;)Lorg/hibernate/sql/Select;
        19: .line 123
            astore 8 /* select */
        start local 8 // org.hibernate.sql.Select select
        20: .line 142
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.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 22
        21: .line 143
            aload 8 /* select */
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.getComment:()Ljava/lang/String;
            invokevirtual org.hibernate.sql.Select.setComment:(Ljava/lang/String;)Lorg/hibernate/sql/Select;
            pop
        22: .line 145
      StackMap locals: org.hibernate.sql.Select
      StackMap stack:
            aload 0 /* this */
            aload 8 /* select */
            invokevirtual org.hibernate.sql.Select.toStatementString:()Ljava/lang/String;
            putfield org.hibernate.loader.AbstractEntityJoinWalker.sql:Ljava/lang/String;
        23: .line 146
            return
        end local 8 // org.hibernate.sql.Select select
        end local 7 // org.hibernate.sql.JoinFragment ojf
        end local 6 // int joins
        end local 5 // org.hibernate.LockOptions lockOptions
        end local 4 // java.lang.String groupBy
        end local 3 // java.lang.String orderBy
        end local 2 // java.lang.String condition
        end local 1 // java.lang.String projection
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   24     0         this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
            0   24     1   projection  Ljava/lang/String;
            0   24     2    condition  Ljava/lang/String;
            0   24     3      orderBy  Ljava/lang/String;
            0   24     4      groupBy  Ljava/lang/String;
            0   24     5  lockOptions  Lorg/hibernate/LockOptions;
            1   24     6        joins  I
            3   24     7          ojf  Lorg/hibernate/sql/JoinFragment;
           20   24     8       select  Lorg/hibernate/sql/Select;
    Exceptions:
      throws org.hibernate.MappingException
    MethodParameters:
             Name  Flags
      projection   final
      condition    final
      orderBy      final
      groupBy      final
      lockOptions  final

  protected java.lang.String getWhereFragment();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
         0: .line 150
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.persister:Lorg/hibernate/persister/entity/OuterJoinLoadable;
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.alias:Ljava/lang/String;
            iconst_1
            iconst_1
            invokeinterface org.hibernate.persister.entity.OuterJoinLoadable.whereJoinFragment:(Ljava/lang/String;ZZ)Ljava/lang/String;
            areturn
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
    Exceptions:
      throws org.hibernate.MappingException

  protected boolean isJoinedFetchEnabled(org.hibernate.type.AssociationType, org.hibernate.FetchMode, org.hibernate.engine.spi.CascadeStyle);
    descriptor: (Lorg/hibernate/type/AssociationType;Lorg/hibernate/FetchMode;Lorg/hibernate/engine/spi/CascadeStyle;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
        start local 1 // org.hibernate.type.AssociationType type
        start local 2 // org.hibernate.FetchMode config
        start local 3 // org.hibernate.engine.spi.CascadeStyle cascadeStyle
         0: .line 157
            aload 0 /* this */
            aload 2 /* config */
            aload 1 /* type */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.isJoinedFetchEnabledInMapping:(Lorg/hibernate/FetchMode;Lorg/hibernate/type/AssociationType;)Z
            ireturn
        end local 3 // org.hibernate.engine.spi.CascadeStyle cascadeStyle
        end local 2 // org.hibernate.FetchMode config
        end local 1 // org.hibernate.type.AssociationType type
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
            0    1     1          type  Lorg/hibernate/type/AssociationType;
            0    1     2        config  Lorg/hibernate/FetchMode;
            0    1     3  cascadeStyle  Lorg/hibernate/engine/spi/CascadeStyle;
    MethodParameters:
              Name  Flags
      type          
      config        
      cascadeStyle  

  protected final boolean isJoinFetchEnabledByProfile(org.hibernate.persister.entity.OuterJoinLoadable, org.hibernate.loader.PropertyPath, int);
    descriptor: (Lorg/hibernate/persister/entity/OuterJoinLoadable;Lorg/hibernate/loader/PropertyPath;I)Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=3, locals=13, args_size=4
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
        start local 1 // org.hibernate.persister.entity.OuterJoinLoadable persister
        start local 2 // org.hibernate.loader.PropertyPath path
        start local 3 // int propertyNumber
         0: .line 161
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.getLoadQueryInfluencers:()Lorg/hibernate/engine/spi/LoadQueryInfluencers;
            invokevirtual org.hibernate.engine.spi.LoadQueryInfluencers.hasEnabledFetchProfiles:()Z
            ifne 2
         1: .line 163
            iconst_0
            ireturn
         2: .line 167
      StackMap locals:
      StackMap stack:
            aload 2 /* path */
            invokevirtual org.hibernate.loader.PropertyPath.getFullPath:()Ljava/lang/String;
            astore 4 /* fullPath */
        start local 4 // java.lang.String fullPath
         3: .line 168
            aload 1 /* persister */
            iload 3 /* propertyNumber */
            invokeinterface org.hibernate.persister.entity.OuterJoinLoadable.getSubclassPropertyName:(I)Ljava/lang/String;
            astore 5 /* rootPropertyName */
        start local 5 // java.lang.String rootPropertyName
         4: .line 169
            aload 4 /* fullPath */
            aload 5 /* rootPropertyName */
            invokevirtual java.lang.String.lastIndexOf:(Ljava/lang/String;)I
            istore 6 /* pos */
        start local 6 // int pos
         5: .line 170
            iload 6 /* pos */
            iflt 7
         6: .line 171
            aload 4 /* fullPath */
            iload 6 /* pos */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            goto 8
         7: .line 172
      StackMap locals: java.lang.String java.lang.String int
      StackMap stack:
            aload 5 /* rootPropertyName */
         8: .line 170
      StackMap locals:
      StackMap stack: java.lang.String
            astore 7 /* relativePropertyPath */
        start local 7 // java.lang.String relativePropertyPath
         9: .line 173
            new java.lang.StringBuilder
            dup
            aload 1 /* persister */
            invokeinterface org.hibernate.persister.entity.OuterJoinLoadable.getEntityName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 7 /* relativePropertyPath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 8 /* fetchRole */
        start local 8 // java.lang.String fetchRole
        10: .line 175
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.getLoadQueryInfluencers:()Lorg/hibernate/engine/spi/LoadQueryInfluencers;
            invokevirtual org.hibernate.engine.spi.LoadQueryInfluencers.getEnabledFetchProfileNames:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 10
            goto 16
      StackMap locals: org.hibernate.loader.AbstractEntityJoinWalker org.hibernate.persister.entity.OuterJoinLoadable org.hibernate.loader.PropertyPath int java.lang.String java.lang.String int java.lang.String java.lang.String top java.util.Iterator
      StackMap stack:
        11: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 9 /* profileName */
        start local 9 // java.lang.String profileName
        12: .line 176
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            aload 9 /* profileName */
            invokeinterface org.hibernate.engine.spi.SessionFactoryImplementor.getFetchProfile:(Ljava/lang/String;)Lorg/hibernate/engine/profile/FetchProfile;
            astore 11 /* profile */
        start local 11 // org.hibernate.engine.profile.FetchProfile profile
        13: .line 177
            aload 11 /* profile */
            aload 8 /* fetchRole */
            invokevirtual org.hibernate.engine.profile.FetchProfile.getFetchByRole:(Ljava/lang/String;)Lorg/hibernate/engine/profile/Fetch;
            astore 12 /* fetch */
        start local 12 // org.hibernate.engine.profile.Fetch fetch
        14: .line 178
            aload 12 /* fetch */
            ifnull 16
            getstatic org.hibernate.engine.profile.Fetch$Style.JOIN:Lorg/hibernate/engine/profile/Fetch$Style;
            aload 12 /* fetch */
            invokevirtual org.hibernate.engine.profile.Fetch.getStyle:()Lorg/hibernate/engine/profile/Fetch$Style;
            if_acmpne 16
        15: .line 179
            iconst_1
            ireturn
        end local 12 // org.hibernate.engine.profile.Fetch fetch
        end local 11 // org.hibernate.engine.profile.FetchProfile profile
        end local 9 // java.lang.String profileName
        16: .line 175
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 11
        17: .line 182
            iconst_0
            ireturn
        end local 8 // java.lang.String fetchRole
        end local 7 // java.lang.String relativePropertyPath
        end local 6 // int pos
        end local 5 // java.lang.String rootPropertyName
        end local 4 // java.lang.String fullPath
        end local 3 // int propertyNumber
        end local 2 // org.hibernate.loader.PropertyPath path
        end local 1 // org.hibernate.persister.entity.OuterJoinLoadable persister
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   18     0                  this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
            0   18     1             persister  Lorg/hibernate/persister/entity/OuterJoinLoadable;
            0   18     2                  path  Lorg/hibernate/loader/PropertyPath;
            0   18     3        propertyNumber  I
            3   18     4              fullPath  Ljava/lang/String;
            4   18     5      rootPropertyName  Ljava/lang/String;
            5   18     6                   pos  I
            9   18     7  relativePropertyPath  Ljava/lang/String;
           10   18     8             fetchRole  Ljava/lang/String;
           12   16     9           profileName  Ljava/lang/String;
           13   16    11               profile  Lorg/hibernate/engine/profile/FetchProfile;
           14   16    12                 fetch  Lorg/hibernate/engine/profile/Fetch;
    MethodParameters:
                Name  Flags
      persister       
      path            
      propertyNumber  

  public abstract java.lang.String getComment();
    descriptor: ()Ljava/lang/String;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  protected boolean isDuplicateAssociation(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
        start local 1 // java.lang.String foreignKeyTable
        start local 2 // java.lang.String[] foreignKeyColumns
         0: .line 191
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.persister:Lorg/hibernate/persister/entity/OuterJoinLoadable;
            invokeinterface org.hibernate.persister.entity.OuterJoinLoadable.getTableName:()Ljava/lang/String;
            aload 1 /* foreignKeyTable */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
         1: .line 192
            aload 2 /* foreignKeyColumns */
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.persister:Lorg/hibernate/persister/entity/OuterJoinLoadable;
            invokeinterface org.hibernate.persister.entity.OuterJoinLoadable.getKeyColumnNames:()[Ljava/lang/String;
            invokestatic java.util.Arrays.equals:([Ljava/lang/Object;[Ljava/lang/Object;)Z
            ifeq 3
         2: .line 190
            iconst_1
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: istore 3 /* isSameJoin */
        start local 3 // boolean isSameJoin
         5: .line 193
            iload 3 /* isSameJoin */
            ifne 8
         6: .line 194
            aload 0 /* this */
            aload 1 /* foreignKeyTable */
            aload 2 /* foreignKeyColumns */
            invokespecial org.hibernate.loader.JoinWalker.isDuplicateAssociation:(Ljava/lang/String;[Ljava/lang/String;)Z
            ifne 8
         7: .line 193
            iconst_0
            ireturn
      StackMap locals: int
      StackMap stack:
         8: iconst_1
            ireturn
        end local 3 // boolean isSameJoin
        end local 2 // java.lang.String[] foreignKeyColumns
        end local 1 // java.lang.String foreignKeyTable
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    9     0               this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
            0    9     1    foreignKeyTable  Ljava/lang/String;
            0    9     2  foreignKeyColumns  [Ljava/lang/String;
            5    9     3         isSameJoin  Z
    MethodParameters:
                   Name  Flags
      foreignKeyTable    final
      foreignKeyColumns  final

  public final org.hibernate.persister.entity.Loadable getPersister();
    descriptor: ()Lorg/hibernate/persister/entity/Loadable;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
         0: .line 200
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.persister:Lorg/hibernate/persister/entity/OuterJoinLoadable;
            areturn
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/loader/AbstractEntityJoinWalker;

  public final java.lang.String getAlias();
    descriptor: ()Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
         0: .line 204
            aload 0 /* this */
            getfield org.hibernate.loader.AbstractEntityJoinWalker.alias:Ljava/lang/String;
            areturn
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/loader/AbstractEntityJoinWalker;

  protected java.lang.String orderBy(java.util.List, java.lang.String);
    descriptor: (Ljava/util/List;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
        start local 1 // java.util.List associations
        start local 2 // java.lang.String orderBy
         0: .line 214
            aload 2 /* orderBy */
            aload 1 /* associations */
            invokestatic org.hibernate.loader.AbstractEntityJoinWalker.orderBy:(Ljava/util/List;)Ljava/lang/String;
            invokestatic org.hibernate.loader.AbstractEntityJoinWalker.mergeOrderings:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 2 // java.lang.String orderBy
        end local 1 // java.util.List associations
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
            0    1     1  associations  Ljava/util/List;
            0    1     2       orderBy  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      associations  final
      orderBy       final

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
         0: .line 218
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 40
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.hibernate.loader.AbstractEntityJoinWalker.getPersister:()Lorg/hibernate/persister/entity/Loadable;
            invokeinterface org.hibernate.persister.entity.Loadable.getEntityName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            bipush 41
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.hibernate.loader.AbstractEntityJoinWalker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/loader/AbstractEntityJoinWalker;
}
SourceFile: "AbstractEntityJoinWalker.java"
InnerClasses:
  public final Style = org.hibernate.engine.profile.Fetch$Style of org.hibernate.engine.profile.Fetch
  protected abstract AssociationInitCallback = org.hibernate.loader.JoinWalker$AssociationInitCallback of org.hibernate.loader.JoinWalker