public class org.hibernate.hql.internal.ast.util.JoinProcessor implements org.hibernate.hql.internal.antlr.SqlTokenTypes
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.hibernate.hql.internal.ast.util.JoinProcessor
  super_class: java.lang.Object
{
  private static final org.hibernate.internal.CoreMessageLogger LOG;
    descriptor: Lorg/hibernate/internal/CoreMessageLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.regex.Pattern DYNAMIC_FILTER_PATTERN;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String LITERAL_DELIMITER;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "'"

  private final org.hibernate.hql.internal.ast.HqlSqlWalker walker;
    descriptor: Lorg/hibernate/hql/internal/ast/HqlSqlWalker;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.hibernate.hql.internal.ast.util.SyntheticAndFactory syntheticAndFactory;
    descriptor: Lorg/hibernate/hql/internal/ast/util/SyntheticAndFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 49
            ldc Lorg/hibernate/hql/internal/ast/util/JoinProcessor;
            invokestatic org.hibernate.internal.CoreLogging.messageLogger:(Ljava/lang/Class;)Lorg/hibernate/internal/CoreMessageLogger;
            putstatic org.hibernate.hql.internal.ast.util.JoinProcessor.LOG:Lorg/hibernate/internal/CoreMessageLogger;
         1: .line 51
            ldc ":(\\w+\\S*)\\s"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic org.hibernate.hql.internal.ast.util.JoinProcessor.DYNAMIC_FILTER_PATTERN:Ljava/util/regex/Pattern;
         2: .line 52
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.hibernate.hql.internal.ast.HqlSqlWalker);
    descriptor: (Lorg/hibernate/hql/internal/ast/HqlSqlWalker;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.hibernate.hql.internal.ast.util.JoinProcessor this
        start local 1 // org.hibernate.hql.internal.ast.HqlSqlWalker walker
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 63
            aload 0 /* this */
            aload 1 /* walker */
            putfield org.hibernate.hql.internal.ast.util.JoinProcessor.walker:Lorg/hibernate/hql/internal/ast/HqlSqlWalker;
         2: .line 64
            aload 0 /* this */
            new org.hibernate.hql.internal.ast.util.SyntheticAndFactory
            dup
            aload 1 /* walker */
            invokespecial org.hibernate.hql.internal.ast.util.SyntheticAndFactory.<init>:(Lorg/hibernate/hql/internal/ast/HqlSqlWalker;)V
            putfield org.hibernate.hql.internal.ast.util.JoinProcessor.syntheticAndFactory:Lorg/hibernate/hql/internal/ast/util/SyntheticAndFactory;
         3: .line 65
            return
        end local 1 // org.hibernate.hql.internal.ast.HqlSqlWalker walker
        end local 0 // org.hibernate.hql.internal.ast.util.JoinProcessor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lorg/hibernate/hql/internal/ast/util/JoinProcessor;
            0    4     1  walker  Lorg/hibernate/hql/internal/ast/HqlSqlWalker;
    MethodParameters:
        Name  Flags
      walker  

  public static org.hibernate.sql.JoinType toHibernateJoinType(int);
    descriptor: (I)Lorg/hibernate/sql/JoinType;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // int astJoinType
         0: .line 78
            iload 0 /* astJoinType */
            lookupswitch { // 4
                   23: 4
                   28: 2
                  142: 1
                  143: 3
              default: 5
          }
         1: .line 80
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.sql.JoinType.LEFT_OUTER_JOIN:Lorg/hibernate/sql/JoinType;
            areturn
         2: .line 83
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.sql.JoinType.INNER_JOIN:Lorg/hibernate/sql/JoinType;
            areturn
         3: .line 86
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.sql.JoinType.RIGHT_OUTER_JOIN:Lorg/hibernate/sql/JoinType;
            areturn
         4: .line 89
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.sql.JoinType.FULL_JOIN:Lorg/hibernate/sql/JoinType;
            areturn
         5: .line 92
      StackMap locals:
      StackMap stack:
            new org.hibernate.AssertionFailure
            dup
            new java.lang.StringBuilder
            dup
            ldc "undefined join type "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 0 /* astJoinType */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.hibernate.AssertionFailure.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // int astJoinType
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0  astJoinType  I
    MethodParameters:
             Name  Flags
      astJoinType  

  public void processJoins(org.hibernate.hql.internal.ast.tree.QueryNode);
    descriptor: (Lorg/hibernate/hql/internal/ast/tree/QueryNode;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // org.hibernate.hql.internal.ast.util.JoinProcessor this
        start local 1 // org.hibernate.hql.internal.ast.tree.QueryNode query
         0: .line 98
            aload 1 /* query */
            invokevirtual org.hibernate.hql.internal.ast.tree.QueryNode.getFromClause:()Lorg/hibernate/hql/internal/ast/tree/FromClause;
            astore 2 /* fromClause */
        start local 2 // org.hibernate.hql.internal.ast.tree.FromClause fromClause
         1: .line 101
            getstatic org.hibernate.hql.internal.ast.tree.DotNode.useThetaStyleImplicitJoins:Z
            ifeq 8
         2: .line 108
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* fromElements */
        start local 3 // java.util.List fromElements
         3: .line 109
            aload 2 /* fromClause */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromClause.getFromElements:()Ljava/util/List;
            aload 2 /* fromClause */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromClause.getFromElements:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            invokeinterface java.util.List.listIterator:(I)Ljava/util/ListIterator;
            astore 4 /* liter */
        start local 4 // java.util.ListIterator liter
         4: .line 110
            goto 6
         5: .line 111
      StackMap locals: org.hibernate.hql.internal.ast.tree.FromClause java.util.List java.util.ListIterator
      StackMap stack:
            aload 3 /* fromElements */
            aload 4 /* liter */
            invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 110
      StackMap locals:
      StackMap stack:
            aload 4 /* liter */
            invokeinterface java.util.ListIterator.hasPrevious:()Z
            ifne 5
        end local 4 // java.util.ListIterator liter
         7: .line 113
            goto 20
        end local 3 // java.util.List fromElements
         8: .line 115
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            aload 2 /* fromClause */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromClause.getFromElements:()Ljava/util/List;
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 3 /* fromElements */
        start local 3 // java.util.List fromElements
         9: .line 116
            aload 2 /* fromClause */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromClause.getFromElements:()Ljava/util/List;
            invokeinterface java.util.List.listIterator:()Ljava/util/ListIterator;
            astore 4 /* liter */
        start local 4 // java.util.ListIterator liter
        10: .line 117
            goto 19
        11: .line 118
      StackMap locals: java.util.List java.util.ListIterator
      StackMap stack:
            aload 4 /* liter */
            invokeinterface java.util.ListIterator.next:()Ljava/lang/Object;
            checkcast org.hibernate.hql.internal.ast.tree.FromElement
            astore 5 /* fromElement */
        start local 5 // org.hibernate.hql.internal.ast.tree.FromElement fromElement
        12: .line 121
            aload 5 /* fromElement */
            instanceof org.hibernate.hql.internal.ast.tree.ImpliedFromElement
            ifeq 18
        13: .line 122
            aload 5 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getOrigin:()Lorg/hibernate/hql/internal/ast/tree/FromElement;
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getWithClauseFragment:()Ljava/lang/String;
            ifnull 18
        14: .line 123
            aload 5 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getOrigin:()Lorg/hibernate/hql/internal/ast/tree/FromElement;
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getWithClauseFragment:()Ljava/lang/String;
            aload 5 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getTableAlias:()Ljava/lang/String;
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 18
        15: .line 124
            aload 5 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getOrigin:()Lorg/hibernate/hql/internal/ast/tree/FromElement;
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getJoinSequence:()Lorg/hibernate/engine/internal/JoinSequence;
            aload 5 /* fromElement */
            checkcast org.hibernate.hql.internal.ast.tree.ImpliedFromElement
            invokevirtual org.hibernate.engine.internal.JoinSequence.addJoin:(Lorg/hibernate/hql/internal/ast/tree/ImpliedFromElement;)Lorg/hibernate/engine/internal/JoinSequence;
            pop
        16: .line 126
            aload 5 /* fromElement */
            ldc ""
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.setText:(Ljava/lang/String;)V
        17: .line 127
            goto 19
        18: .line 129
      StackMap locals: org.hibernate.hql.internal.ast.tree.FromElement
      StackMap stack:
            aload 3 /* fromElements */
            aload 5 /* fromElement */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // org.hibernate.hql.internal.ast.tree.FromElement fromElement
        19: .line 117
      StackMap locals:
      StackMap stack:
            aload 4 /* liter */
            invokeinterface java.util.ListIterator.hasNext:()Z
            ifne 11
        end local 4 // java.util.ListIterator liter
        20: .line 135
      StackMap locals:
      StackMap stack:
            aload 3 /* fromElements */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4 /* iter */
        start local 4 // java.util.Iterator iter
        21: .line 136
            goto 28
        22: .line 137
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 4 /* iter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.hibernate.hql.internal.ast.tree.FromElement
            astore 5 /* fromElement */
        start local 5 // org.hibernate.hql.internal.ast.tree.FromElement fromElement
        23: .line 138
            aload 5 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getJoinSequence:()Lorg/hibernate/engine/internal/JoinSequence;
            astore 6 /* join */
        start local 6 // org.hibernate.engine.internal.JoinSequence join
        24: .line 139
            aload 6 /* join */
        25: .line 140
            new org.hibernate.hql.internal.ast.util.JoinProcessor$1
            dup
            aload 0 /* this */
            aload 2 /* fromClause */
            aload 5 /* fromElement */
            invokespecial org.hibernate.hql.internal.ast.util.JoinProcessor$1.<init>:(Lorg/hibernate/hql/internal/ast/util/JoinProcessor;Lorg/hibernate/hql/internal/ast/tree/FromClause;Lorg/hibernate/hql/internal/ast/tree/FromElement;)V
        26: .line 139
            invokevirtual org.hibernate.engine.internal.JoinSequence.setSelector:(Lorg/hibernate/engine/internal/JoinSequence$Selector;)Lorg/hibernate/engine/internal/JoinSequence;
            pop
        27: .line 163
            aload 0 /* this */
            aload 1 /* query */
            aload 6 /* join */
            aload 5 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.util.JoinProcessor.addJoinNodes:(Lorg/hibernate/hql/internal/ast/tree/QueryNode;Lorg/hibernate/engine/internal/JoinSequence;Lorg/hibernate/hql/internal/ast/tree/FromElement;)V
        end local 6 // org.hibernate.engine.internal.JoinSequence join
        end local 5 // org.hibernate.hql.internal.ast.tree.FromElement fromElement
        28: .line 136
      StackMap locals:
      StackMap stack:
            aload 4 /* iter */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 22
        29: .line 166
            return
        end local 4 // java.util.Iterator iter
        end local 3 // java.util.List fromElements
        end local 2 // org.hibernate.hql.internal.ast.tree.FromClause fromClause
        end local 1 // org.hibernate.hql.internal.ast.tree.QueryNode query
        end local 0 // org.hibernate.hql.internal.ast.util.JoinProcessor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   30     0          this  Lorg/hibernate/hql/internal/ast/util/JoinProcessor;
            0   30     1         query  Lorg/hibernate/hql/internal/ast/tree/QueryNode;
            1   30     2    fromClause  Lorg/hibernate/hql/internal/ast/tree/FromClause;
            3    8     3  fromElements  Ljava/util/List;
            9   30     3  fromElements  Ljava/util/List;
            4    7     4         liter  Ljava/util/ListIterator;
           10   20     4         liter  Ljava/util/ListIterator<Lorg/hibernate/hql/internal/ast/tree/FromElement;>;
           12   19     5   fromElement  Lorg/hibernate/hql/internal/ast/tree/FromElement;
           21   30     4          iter  Ljava/util/Iterator;
           23   28     5   fromElement  Lorg/hibernate/hql/internal/ast/tree/FromElement;
           24   28     6          join  Lorg/hibernate/engine/internal/JoinSequence;
    MethodParameters:
       Name  Flags
      query  

  private void addJoinNodes(org.hibernate.hql.internal.ast.tree.QueryNode, org.hibernate.engine.internal.JoinSequence, org.hibernate.hql.internal.ast.tree.FromElement);
    descriptor: (Lorg/hibernate/hql/internal/ast/tree/QueryNode;Lorg/hibernate/engine/internal/JoinSequence;Lorg/hibernate/hql/internal/ast/tree/FromElement;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // org.hibernate.hql.internal.ast.util.JoinProcessor this
        start local 1 // org.hibernate.hql.internal.ast.tree.QueryNode query
        start local 2 // org.hibernate.engine.internal.JoinSequence join
        start local 3 // org.hibernate.hql.internal.ast.tree.FromElement fromElement
         0: .line 169
            aload 2 /* join */
         1: .line 170
            aload 0 /* this */
            getfield org.hibernate.hql.internal.ast.util.JoinProcessor.walker:Lorg/hibernate/hql/internal/ast/HqlSqlWalker;
            invokevirtual org.hibernate.hql.internal.ast.HqlSqlWalker.getEnabledFilters:()Ljava/util/Map;
         2: .line 171
            aload 3 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.useFromFragment:()Z
            ifne 3
            aload 3 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.isDereferencedBySuperclassOrSubclassProperty:()Z
            ifne 3
            iconst_0
            goto 4
      StackMap locals: org.hibernate.hql.internal.ast.util.JoinProcessor org.hibernate.hql.internal.ast.tree.QueryNode org.hibernate.engine.internal.JoinSequence org.hibernate.hql.internal.ast.tree.FromElement
      StackMap stack: org.hibernate.engine.internal.JoinSequence java.util.Map
         3: iconst_1
         4: .line 172
      StackMap locals: org.hibernate.hql.internal.ast.util.JoinProcessor org.hibernate.hql.internal.ast.tree.QueryNode org.hibernate.engine.internal.JoinSequence org.hibernate.hql.internal.ast.tree.FromElement
      StackMap stack: org.hibernate.engine.internal.JoinSequence java.util.Map int
            aload 3 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getWithClauseFragment:()Ljava/lang/String;
         5: .line 169
            invokevirtual org.hibernate.engine.internal.JoinSequence.toJoinFragment:(Ljava/util/Map;ZLjava/lang/String;)Lorg/hibernate/sql/JoinFragment;
            astore 4 /* joinFragment */
        start local 4 // org.hibernate.sql.JoinFragment joinFragment
         6: .line 175
            aload 4 /* joinFragment */
            invokevirtual org.hibernate.sql.JoinFragment.toFromFragmentString:()Ljava/lang/String;
            astore 5 /* frag */
        start local 5 // java.lang.String frag
         7: .line 176
            aload 4 /* joinFragment */
            invokevirtual org.hibernate.sql.JoinFragment.toWhereFragmentString:()Ljava/lang/String;
            astore 6 /* whereFrag */
        start local 6 // java.lang.String whereFrag
         8: .line 181
            aload 3 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getType:()I
            sipush 139
            if_icmpne 12
         9: .line 182
            aload 2 /* join */
            invokevirtual org.hibernate.engine.internal.JoinSequence.isThetaStyle:()Z
            ifne 10
            aload 6 /* whereFrag */
            invokestatic org.hibernate.internal.util.StringHelper.isNotEmpty:(Ljava/lang/String;)Z
            ifeq 12
        10: .line 183
      StackMap locals: org.hibernate.sql.JoinFragment java.lang.String java.lang.String
      StackMap stack:
            aload 3 /* fromElement */
            sipush 137
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.setType:(I)V
        11: .line 184
            aload 3 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getJoinSequence:()Lorg/hibernate/engine/internal/JoinSequence;
            iconst_1
            invokevirtual org.hibernate.engine.internal.JoinSequence.setUseThetaStyle:(Z)Lorg/hibernate/engine/internal/JoinSequence;
            pop
        12: .line 188
      StackMap locals:
      StackMap stack:
            aload 3 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.useFromFragment:()Z
            ifne 15
        13: .line 189
            aload 3 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.getFromClause:()Lorg/hibernate/hql/internal/ast/tree/FromClause;
            invokevirtual org.hibernate.hql.internal.ast.tree.FromClause.isSubQuery:()Z
            ifeq 21
        14: .line 190
            aload 3 /* fromElement */
            invokevirtual org.hibernate.hql.internal.ast.tree.FromElement.isDereferencedBySuperclassOrSubclassProperty:()Z
            ifeq 21
        15: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 5 /* frag */
            aload 2 /* join */
            invokevirtual org.hibernate.hql.internal.ast.util.JoinProcessor.processFromFragment:(Ljava/lang/String;Lorg/hibernate/engine/internal/JoinSequence;)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 7 /* fromFragment */
        start local 7 // java.lang.String fromFragment
        16: .line 192
            getstatic org.hibernate.hql.internal.ast.util.JoinProcessor.LOG:Lorg/hibernate/internal/CoreMessageLogger;
            ldc "Using FROM fragment [%s]"
            aload 7 /* fromFragment */
            invokeinterface org.hibernate.internal.CoreMessageLogger.debugf:(Ljava/lang/String;Ljava/lang/Object;)V
        17: .line 194
            aload 7 /* fromFragment */
        18: .line 195
            aload 3 /* fromElement */
        19: .line 196
            aload 0 /* this */
            getfield org.hibernate.hql.internal.ast.util.JoinProcessor.walker:Lorg/hibernate/hql/internal/ast/HqlSqlWalker;
        20: .line 193
            invokestatic org.hibernate.hql.internal.ast.util.JoinProcessor.processDynamicFilterParameters:(Ljava/lang/String;Lorg/hibernate/hql/internal/ast/tree/ParameterContainer;Lorg/hibernate/hql/internal/ast/HqlSqlWalker;)V
        end local 7 // java.lang.String fromFragment
        21: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.hql.internal.ast.util.JoinProcessor.syntheticAndFactory:Lorg/hibernate/hql/internal/ast/util/SyntheticAndFactory;
        22: .line 201
            aload 4 /* joinFragment */
        23: .line 202
            aload 6 /* whereFrag */
        24: .line 203
            aload 1 /* query */
        25: .line 204
            aload 3 /* fromElement */
        26: .line 205
            aload 0 /* this */
            getfield org.hibernate.hql.internal.ast.util.JoinProcessor.walker:Lorg/hibernate/hql/internal/ast/HqlSqlWalker;
        27: .line 200
            invokevirtual org.hibernate.hql.internal.ast.util.SyntheticAndFactory.addWhereFragment:(Lorg/hibernate/sql/JoinFragment;Ljava/lang/String;Lorg/hibernate/hql/internal/ast/tree/QueryNode;Lorg/hibernate/hql/internal/ast/tree/FromElement;Lorg/hibernate/hql/internal/ast/HqlSqlWalker;)V
        28: .line 207
            return
        end local 6 // java.lang.String whereFrag
        end local 5 // java.lang.String frag
        end local 4 // org.hibernate.sql.JoinFragment joinFragment
        end local 3 // org.hibernate.hql.internal.ast.tree.FromElement fromElement
        end local 2 // org.hibernate.engine.internal.JoinSequence join
        end local 1 // org.hibernate.hql.internal.ast.tree.QueryNode query
        end local 0 // org.hibernate.hql.internal.ast.util.JoinProcessor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   29     0          this  Lorg/hibernate/hql/internal/ast/util/JoinProcessor;
            0   29     1         query  Lorg/hibernate/hql/internal/ast/tree/QueryNode;
            0   29     2          join  Lorg/hibernate/engine/internal/JoinSequence;
            0   29     3   fromElement  Lorg/hibernate/hql/internal/ast/tree/FromElement;
            6   29     4  joinFragment  Lorg/hibernate/sql/JoinFragment;
            7   29     5          frag  Ljava/lang/String;
            8   29     6     whereFrag  Ljava/lang/String;
           16   21     7  fromFragment  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      query        
      join         
      fromElement  

  private java.lang.String processFromFragment(java.lang.String, org.hibernate.engine.internal.JoinSequence);
    descriptor: (Ljava/lang/String;Lorg/hibernate/engine/internal/JoinSequence;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.hibernate.hql.internal.ast.util.JoinProcessor this
        start local 1 // java.lang.String frag
        start local 2 // org.hibernate.engine.internal.JoinSequence join
         0: .line 210
            aload 1 /* frag */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 3 /* fromFragment */
        start local 3 // java.lang.String fromFragment
         1: .line 212
            aload 3 /* fromFragment */
            ldc ", "
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 213
            aload 3 /* fromFragment */
            iconst_2
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* fromFragment */
         3: .line 215
      StackMap locals: java.lang.String
      StackMap stack:
            aload 3 /* fromFragment */
            areturn
        end local 3 // java.lang.String fromFragment
        end local 2 // org.hibernate.engine.internal.JoinSequence join
        end local 1 // java.lang.String frag
        end local 0 // org.hibernate.hql.internal.ast.util.JoinProcessor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/hibernate/hql/internal/ast/util/JoinProcessor;
            0    4     1          frag  Ljava/lang/String;
            0    4     2          join  Lorg/hibernate/engine/internal/JoinSequence;
            1    4     3  fromFragment  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      frag  
      join  

  public static void processDynamicFilterParameters(java.lang.String, org.hibernate.hql.internal.ast.tree.ParameterContainer, org.hibernate.hql.internal.ast.HqlSqlWalker);
    descriptor: (Ljava/lang/String;Lorg/hibernate/hql/internal/ast/tree/ParameterContainer;Lorg/hibernate/hql/internal/ast/HqlSqlWalker;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=15, args_size=3
        start local 0 // java.lang.String sqlFragment
        start local 1 // org.hibernate.hql.internal.ast.tree.ParameterContainer container
        start local 2 // org.hibernate.hql.internal.ast.HqlSqlWalker walker
         0: .line 222
            aload 2 /* walker */
            invokevirtual org.hibernate.hql.internal.ast.HqlSqlWalker.getEnabledFilters:()Ljava/util/Map;
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 4
         1: .line 223
            aload 2 /* walker */
            aload 0 /* sqlFragment */
            invokestatic org.hibernate.hql.internal.ast.util.JoinProcessor.hasDynamicFilterParam:(Lorg/hibernate/hql/internal/ast/HqlSqlWalker;Ljava/lang/String;)Z
            ifne 4
         2: .line 224
            aload 0 /* sqlFragment */
            invokestatic org.hibernate.hql.internal.ast.util.JoinProcessor.hasCollectionFilterParam:(Ljava/lang/String;)Z
            ifne 4
         3: .line 225
            return
         4: .line 228
      StackMap locals:
      StackMap stack:
            aload 2 /* walker */
            invokevirtual org.hibernate.hql.internal.ast.HqlSqlWalker.getDialect:()Lorg/hibernate/dialect/Dialect;
            astore 3 /* dialect */
        start local 3 // org.hibernate.dialect.Dialect dialect
         5: .line 229
            new java.lang.StringBuilder
            dup
            ldc " \n\r\f\t,()=<>&|+-=/*'^![]#~\\"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* dialect */
            invokevirtual org.hibernate.dialect.Dialect.openQuote:()C
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 3 /* dialect */
            invokevirtual org.hibernate.dialect.Dialect.closeQuote:()C
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* symbols */
        start local 4 // java.lang.String symbols
         6: .line 230
            new java.util.StringTokenizer
            dup
            aload 0 /* sqlFragment */
            aload 4 /* symbols */
            iconst_1
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;Z)V
            astore 5 /* tokens */
        start local 5 // java.util.StringTokenizer tokens
         7: .line 231
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 6 /* result */
        start local 6 // java.lang.StringBuilder result
         8: .line 233
            goto 31
         9: .line 234
      StackMap locals: java.lang.String org.hibernate.hql.internal.ast.tree.ParameterContainer org.hibernate.hql.internal.ast.HqlSqlWalker org.hibernate.dialect.Dialect java.lang.String java.util.StringTokenizer java.lang.StringBuilder
      StackMap stack:
            aload 5 /* tokens */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            astore 7 /* token */
        start local 7 // java.lang.String token
        10: .line 235
            aload 7 /* token */
            ldc ":"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 30
        11: .line 236
            aload 7 /* token */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 8 /* filterParameterName */
        start local 8 // java.lang.String filterParameterName
        12: .line 237
            aload 8 /* filterParameterName */
            invokestatic org.hibernate.engine.spi.LoadQueryInfluencers.parseFilterParameterName:(Ljava/lang/String;)[Ljava/lang/String;
            astore 9 /* parts */
        start local 9 // java.lang.String[] parts
        13: .line 238
            aload 2 /* walker */
            invokevirtual org.hibernate.hql.internal.ast.HqlSqlWalker.getEnabledFilters:()Ljava/util/Map;
            aload 9 /* parts */
            iconst_0
            aaload
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.hibernate.internal.FilterImpl
            astore 10 /* filter */
        start local 10 // org.hibernate.internal.FilterImpl filter
        14: .line 239
            aload 10 /* filter */
            aload 9 /* parts */
            iconst_1
            aaload
            invokevirtual org.hibernate.internal.FilterImpl.getParameter:(Ljava/lang/String;)Ljava/lang/Object;
            astore 11 /* value */
        start local 11 // java.lang.Object value
        15: .line 240
            aload 10 /* filter */
            invokevirtual org.hibernate.internal.FilterImpl.getFilterDefinition:()Lorg/hibernate/engine/spi/FilterDefinition;
            aload 9 /* parts */
            iconst_1
            aaload
            invokevirtual org.hibernate.engine.spi.FilterDefinition.getParameterType:(Ljava/lang/String;)Lorg/hibernate/type/Type;
            astore 12 /* type */
        start local 12 // org.hibernate.type.Type type
        16: .line 242
            ldc ","
        17: .line 244
            ldc "?"
        18: .line 245
            aload 12 /* type */
            aload 2 /* walker */
            invokevirtual org.hibernate.hql.internal.ast.HqlSqlWalker.getSessionFactoryHelper:()Lorg/hibernate/hql/internal/ast/util/SessionFactoryHelper;
            invokevirtual org.hibernate.hql.internal.ast.util.SessionFactoryHelper.getFactory:()Lorg/hibernate/engine/spi/SessionFactoryImplementor;
            invokeinterface org.hibernate.type.Type.getColumnSpan:(Lorg/hibernate/engine/spi/Mapping;)I
        19: .line 243
            invokestatic org.hibernate.internal.util.collections.ArrayHelper.fillArray:(Ljava/lang/String;I)[Ljava/lang/String;
        20: .line 241
            invokestatic java.lang.String.join:(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 13 /* typeBindFragment */
        start local 13 // java.lang.String typeBindFragment
        21: .line 249
            aload 11 /* value */
            ifnull 26
            ldc Ljava/util/Collection;
            aload 11 /* value */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 26
        22: .line 251
            ldc ","
        23: .line 252
            aload 13 /* typeBindFragment */
            aload 11 /* value */
            checkcast java.util.Collection
            invokeinterface java.util.Collection.size:()I
            invokestatic org.hibernate.internal.util.collections.ArrayHelper.fillArray:(Ljava/lang/String;I)[Ljava/lang/String;
        24: .line 250
            invokestatic java.lang.String.join:(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String;
            astore 14 /* bindFragment */
        start local 14 // java.lang.String bindFragment
        25: .line 254
            goto 27
        end local 14 // java.lang.String bindFragment
        26: .line 256
      StackMap locals: java.lang.String org.hibernate.hql.internal.ast.tree.ParameterContainer org.hibernate.hql.internal.ast.HqlSqlWalker org.hibernate.dialect.Dialect java.lang.String java.util.StringTokenizer java.lang.StringBuilder java.lang.String java.lang.String java.lang.String[] org.hibernate.internal.FilterImpl java.lang.Object org.hibernate.type.Type java.lang.String
      StackMap stack:
            aload 13 /* typeBindFragment */
            astore 14 /* bindFragment */
        start local 14 // java.lang.String bindFragment
        27: .line 258
      StackMap locals: java.lang.String
      StackMap stack:
            aload 6 /* result */
            aload 14 /* bindFragment */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        28: .line 259
            aload 1 /* container */
            new org.hibernate.param.DynamicFilterParameterSpecification
            dup
            aload 9 /* parts */
            iconst_0
            aaload
            aload 9 /* parts */
            iconst_1
            aaload
            aload 12 /* type */
            invokespecial org.hibernate.param.DynamicFilterParameterSpecification.<init>:(Ljava/lang/String;Ljava/lang/String;Lorg/hibernate/type/Type;)V
            invokeinterface org.hibernate.hql.internal.ast.tree.ParameterContainer.addEmbeddedParameter:(Lorg/hibernate/param/ParameterSpecification;)V
        end local 14 // java.lang.String bindFragment
        end local 13 // java.lang.String typeBindFragment
        end local 12 // org.hibernate.type.Type type
        end local 11 // java.lang.Object value
        end local 10 // org.hibernate.internal.FilterImpl filter
        end local 9 // java.lang.String[] parts
        end local 8 // java.lang.String filterParameterName
        29: .line 260
            goto 31
        30: .line 262
      StackMap locals: java.lang.String org.hibernate.hql.internal.ast.tree.ParameterContainer org.hibernate.hql.internal.ast.HqlSqlWalker org.hibernate.dialect.Dialect java.lang.String java.util.StringTokenizer java.lang.StringBuilder java.lang.String
      StackMap stack:
            aload 6 /* result */
            aload 7 /* token */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 7 // java.lang.String token
        31: .line 233
      StackMap locals:
      StackMap stack:
            aload 5 /* tokens */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifne 9
        32: .line 266
            aload 1 /* container */
            aload 6 /* result */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.hibernate.hql.internal.ast.tree.ParameterContainer.setText:(Ljava/lang/String;)V
        33: .line 267
            return
        end local 6 // java.lang.StringBuilder result
        end local 5 // java.util.StringTokenizer tokens
        end local 4 // java.lang.String symbols
        end local 3 // org.hibernate.dialect.Dialect dialect
        end local 2 // org.hibernate.hql.internal.ast.HqlSqlWalker walker
        end local 1 // org.hibernate.hql.internal.ast.tree.ParameterContainer container
        end local 0 // java.lang.String sqlFragment
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   34     0          sqlFragment  Ljava/lang/String;
            0   34     1            container  Lorg/hibernate/hql/internal/ast/tree/ParameterContainer;
            0   34     2               walker  Lorg/hibernate/hql/internal/ast/HqlSqlWalker;
            5   34     3              dialect  Lorg/hibernate/dialect/Dialect;
            6   34     4              symbols  Ljava/lang/String;
            7   34     5               tokens  Ljava/util/StringTokenizer;
            8   34     6               result  Ljava/lang/StringBuilder;
           10   31     7                token  Ljava/lang/String;
           12   29     8  filterParameterName  Ljava/lang/String;
           13   29     9                parts  [Ljava/lang/String;
           14   29    10               filter  Lorg/hibernate/internal/FilterImpl;
           15   29    11                value  Ljava/lang/Object;
           16   29    12                 type  Lorg/hibernate/type/Type;
           21   29    13     typeBindFragment  Ljava/lang/String;
           25   26    14         bindFragment  Ljava/lang/String;
           27   29    14         bindFragment  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      sqlFragment  final
      container    final
      walker       final

  private static boolean hasDynamicFilterParam(org.hibernate.hql.internal.ast.HqlSqlWalker, java.lang.String);
    descriptor: (Lorg/hibernate/hql/internal/ast/HqlSqlWalker;Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.hibernate.hql.internal.ast.HqlSqlWalker walker
        start local 1 // java.lang.String sqlFragment
         0: .line 270
            aload 0 /* walker */
            invokevirtual org.hibernate.hql.internal.ast.HqlSqlWalker.getDialect:()Lorg/hibernate/dialect/Dialect;
            invokevirtual org.hibernate.dialect.Dialect.closeQuote:()C
            invokestatic java.lang.String.valueOf:(C)Ljava/lang/String;
            astore 2 /* closeQuote */
        start local 2 // java.lang.String closeQuote
         1: .line 272
            getstatic org.hibernate.hql.internal.ast.util.JoinProcessor.DYNAMIC_FILTER_PATTERN:Ljava/util/regex/Pattern;
            aload 1 /* sqlFragment */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 3 /* matcher */
        start local 3 // java.util.regex.Matcher matcher
         2: .line 273
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 6
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            ifle 6
         3: .line 274
            aload 3 /* matcher */
            iconst_1
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            astore 4 /* match */
        start local 4 // java.lang.String match
         4: .line 275
            aload 4 /* match */
            aload 2 /* closeQuote */
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 5
            aload 4 /* match */
            ldc "'"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 5
            iconst_0
            ireturn
      StackMap locals: java.lang.String java.util.regex.Matcher java.lang.String
      StackMap stack:
         5: iconst_1
            ireturn
        end local 4 // java.lang.String match
         6: .line 277
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // java.util.regex.Matcher matcher
        end local 2 // java.lang.String closeQuote
        end local 1 // java.lang.String sqlFragment
        end local 0 // org.hibernate.hql.internal.ast.HqlSqlWalker walker
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0       walker  Lorg/hibernate/hql/internal/ast/HqlSqlWalker;
            0    7     1  sqlFragment  Ljava/lang/String;
            1    7     2   closeQuote  Ljava/lang/String;
            2    7     3      matcher  Ljava/util/regex/Matcher;
            4    6     4        match  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      walker       
      sqlFragment  

  private static boolean hasCollectionFilterParam(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String sqlFragment
         0: .line 281
            aload 0 /* sqlFragment */
            ldc "?"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // java.lang.String sqlFragment
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0  sqlFragment  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      sqlFragment  
}
SourceFile: "JoinProcessor.java"
NestMembers:
  org.hibernate.hql.internal.ast.util.JoinProcessor$1
InnerClasses:
  public abstract Selector = org.hibernate.engine.internal.JoinSequence$Selector of org.hibernate.engine.internal.JoinSequence
  org.hibernate.hql.internal.ast.util.JoinProcessor$1