public class org.hibernate.dialect.pagination.SQLServer2005LimitHandler extends org.hibernate.dialect.pagination.AbstractLimitHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.hibernate.dialect.pagination.SQLServer2005LimitHandler
  super_class: org.hibernate.dialect.pagination.AbstractLimitHandler
{
  private static final java.lang.String SELECT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "select"

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

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

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

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

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

  final java.lang.String SELECT_SPACE;
    descriptor: Ljava/lang/String;
    flags: (0x0010) ACC_FINAL
    ConstantValue: "select "

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

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

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

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

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

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

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

  private static final java.lang.String SPACE_NEWLINE_LINEFEED;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "[\\s\\t\\n\\r]*"

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

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

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

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

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

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

  private boolean topAdded;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean isCTE;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 37
            ldc "select distinct "
            iconst_1
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.buildShallowIndexPattern:(Ljava/lang/String;Z)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.SELECT_DISTINCT_PATTERN:Ljava/util/regex/Pattern;
         1: .line 38
            ldc "select(.*)"
            iconst_1
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.buildShallowIndexPattern:(Ljava/lang/String;Z)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.SELECT_PATTERN:Ljava/util/regex/Pattern;
         2: .line 39
            ldc "from"
            iconst_1
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.buildShallowIndexPattern:(Ljava/lang/String;Z)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.FROM_PATTERN:Ljava/util/regex/Pattern;
         3: .line 40
            ldc "distinct"
            iconst_1
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.buildShallowIndexPattern:(Ljava/lang/String;Z)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.DISTINCT_PATTERN:Ljava/util/regex/Pattern;
         4: .line 41
            ldc "order by"
            iconst_1
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.buildShallowIndexPattern:(Ljava/lang/String;Z)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.ORDER_BY_PATTERN:Ljava/util/regex/Pattern;
         5: .line 42
            ldc ","
            iconst_0
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.buildShallowIndexPattern:(Ljava/lang/String;Z)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.COMMA_PATTERN:Ljava/util/regex/Pattern;
         6: .line 44
            ldc "(?![^\\[]*(\\]))\\S+\\s*(\\s(?i)as\\s)\\s*(\\S+)*\\s*$|(?![^\\[]*(\\]))\\s+(\\S+)$"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
         7: .line 43
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.ALIAS_PATTERN:Ljava/util/regex/Pattern;
         8: .line 48
            ldc "(^[\\s\\t\\n\\r]*WITH[\\s\\t\\n\\r]*)"
            iconst_2
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_CTE:Ljava/util/regex/Pattern;
         9: .line 49
            ldc "(^[\\s\\t\\n\\r]*[a-zA-Z0-9]*[\\s\\t\\n\\r]*)"
            iconst_2
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_EXPRESSION_NAME:Ljava/util/regex/Pattern;
        10: .line 50
            ldc "(^[\\s\\t\\n\\r]*\\()"
            iconst_2
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_COLUMN_NAMES_START:Ljava/util/regex/Pattern;
        11: .line 51
            ldc "(\\))"
            iconst_2
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_COLUMN_NAMES_END:Ljava/util/regex/Pattern;
        12: .line 52
            ldc "(^[\\s\\t\\n\\r]*AS[\\s\\t\\n\\r]*)"
            iconst_2
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_AS:Ljava/util/regex/Pattern;
        13: .line 53
            ldc "(^[\\s\\t\\n\\r]*,)"
            iconst_2
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_COMMA:Ljava/util/regex/Pattern;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
         0: .line 62
            aload 0 /* this */
            invokespecial org.hibernate.dialect.pagination.AbstractLimitHandler.<init>:()V
         1: .line 35
            aload 0 /* this */
            ldc "select "
            putfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.SELECT_SPACE:Ljava/lang/String;
         2: .line 64
            return
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;

  public boolean supportsLimit();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
         0: .line 68
            iconst_1
            ireturn
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;

  public boolean useMaxForLimit();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
         0: .line 73
            iconst_1
            ireturn
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;

  public boolean supportsLimitOffset();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
         0: .line 78
            iconst_1
            ireturn
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;

  public boolean supportsVariableLimit();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
         0: .line 83
            iconst_1
            ireturn
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;

  public int convertToFirstRowValue(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // int zeroBasedFirstResult
         0: .line 89
            iload 1 /* zeroBasedFirstResult */
            iconst_1
            iadd
            ireturn
        end local 1 // int zeroBasedFirstResult
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0    1     1  zeroBasedFirstResult  I
    MethodParameters:
                      Name  Flags
      zeroBasedFirstResult  

  public java.lang.String processSql(java.lang.String, org.hibernate.engine.spi.RowSelection);
    descriptor: (Ljava/lang/String;Lorg/hibernate/engine/spi/RowSelection;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.String sql
        start local 2 // org.hibernate.engine.spi.RowSelection selection
         0: .line 112
            new java.lang.StringBuilder
            dup
            aload 1 /* sql */
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 3 /* sb */
        start local 3 // java.lang.StringBuilder sb
         1: .line 113
            aload 3 /* sb */
            aload 3 /* sb */
            invokevirtual java.lang.StringBuilder.length:()I
            iconst_1
            isub
            invokevirtual java.lang.StringBuilder.charAt:(I)C
            bipush 59
            if_icmpne 3
         2: .line 114
            aload 3 /* sb */
            aload 3 /* sb */
            invokevirtual java.lang.StringBuilder.length:()I
            iconst_1
            isub
            invokevirtual java.lang.StringBuilder.setLength:(I)V
         3: .line 119
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 0 /* this */
            aload 3 /* sb */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.getStatementIndex:(Ljava/lang/StringBuilder;)I
            istore 4 /* offset */
        start local 4 // int offset
         4: .line 121
            aload 2 /* selection */
            invokestatic org.hibernate.dialect.pagination.LimitHelper.hasFirstRow:(Lorg/hibernate/engine/spi/RowSelection;)Z
            ifne 7
         5: .line 122
            aload 0 /* this */
            aload 3 /* sb */
            iload 4 /* offset */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.addTopExpression:(Ljava/lang/StringBuilder;I)V
         6: .line 123
            goto 16
         7: .line 125
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 3 /* sb */
            iload 4 /* offset */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.fillAliasInSelectClause:(Ljava/lang/StringBuilder;I)Ljava/lang/String;
            astore 5 /* selectClause */
        start local 5 // java.lang.String selectClause
         8: .line 127
            aload 3 /* sb */
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.ORDER_BY_PATTERN:Ljava/util/regex/Pattern;
            iload 4 /* offset */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOfPattern:(Ljava/lang/StringBuilder;Ljava/util/regex/Pattern;I)I
            ifle 10
         9: .line 129
            aload 0 /* this */
            aload 3 /* sb */
            iload 4 /* offset */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.addTopExpression:(Ljava/lang/StringBuilder;I)V
        10: .line 132
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 3 /* sb */
            iload 4 /* offset */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.encloseWithOuterQuery:(Ljava/lang/StringBuilder;I)V
        11: .line 134
            aload 3 /* sb */
            iload 4 /* offset */
            aload 0 /* this */
            getfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.isCTE:Z
            ifne 12
            ldc "WITH query AS ("
            goto 13
      StackMap locals: org.hibernate.dialect.pagination.SQLServer2005LimitHandler java.lang.String org.hibernate.engine.spi.RowSelection java.lang.StringBuilder int java.lang.String
      StackMap stack: java.lang.StringBuilder int
        12: ldc ", query AS ("
      StackMap locals: org.hibernate.dialect.pagination.SQLServer2005LimitHandler java.lang.String org.hibernate.engine.spi.RowSelection java.lang.StringBuilder int java.lang.String
      StackMap stack: java.lang.StringBuilder int java.lang.String
        13: invokevirtual java.lang.StringBuilder.insert:(ILjava/lang/String;)Ljava/lang/StringBuilder;
            pop
        14: .line 135
            aload 3 /* sb */
            ldc ") SELECT "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* selectClause */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " FROM query "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        15: .line 136
            aload 3 /* sb */
            ldc "WHERE __hibernate_row_nr__ >= ? AND __hibernate_row_nr__ < ?"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 5 // java.lang.String selectClause
        16: .line 139
      StackMap locals:
      StackMap stack:
            aload 3 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 4 // int offset
        end local 3 // java.lang.StringBuilder sb
        end local 2 // org.hibernate.engine.spi.RowSelection selection
        end local 1 // java.lang.String sql
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   17     0          this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0   17     1           sql  Ljava/lang/String;
            0   17     2     selection  Lorg/hibernate/engine/spi/RowSelection;
            1   17     3            sb  Ljava/lang/StringBuilder;
            4   17     4        offset  I
            8   16     5  selectClause  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      sql        
      selection  

  public int bindLimitParametersAtStartOfQuery(org.hibernate.engine.spi.RowSelection, java.sql.PreparedStatement, int);
    descriptor: (Lorg/hibernate/engine/spi/RowSelection;Ljava/sql/PreparedStatement;I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // org.hibernate.engine.spi.RowSelection selection
        start local 2 // java.sql.PreparedStatement statement
        start local 3 // int index
         0: .line 144
            aload 0 /* this */
            getfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.topAdded:Z
            ifeq 3
         1: .line 146
            aload 2 /* statement */
            iload 3 /* index */
            aload 0 /* this */
            aload 1 /* selection */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.getMaxOrLimit:(Lorg/hibernate/engine/spi/RowSelection;)I
            iconst_1
            isub
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
         2: .line 147
            iconst_1
            ireturn
         3: .line 149
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // int index
        end local 2 // java.sql.PreparedStatement statement
        end local 1 // org.hibernate.engine.spi.RowSelection selection
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0    4     1  selection  Lorg/hibernate/engine/spi/RowSelection;
            0    4     2  statement  Ljava/sql/PreparedStatement;
            0    4     3      index  I
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
           Name  Flags
      selection  
      statement  
      index      

  public int bindLimitParametersAtEndOfQuery(org.hibernate.engine.spi.RowSelection, java.sql.PreparedStatement, int);
    descriptor: (Lorg/hibernate/engine/spi/RowSelection;Ljava/sql/PreparedStatement;I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // org.hibernate.engine.spi.RowSelection selection
        start local 2 // java.sql.PreparedStatement statement
        start local 3 // int index
         0: .line 154
            aload 1 /* selection */
            invokestatic org.hibernate.dialect.pagination.LimitHelper.hasFirstRow:(Lorg/hibernate/engine/spi/RowSelection;)Z
            ifeq 1
            aload 0 /* this */
            aload 1 /* selection */
            aload 2 /* statement */
            iload 3 /* index */
            invokespecial org.hibernate.dialect.pagination.AbstractLimitHandler.bindLimitParametersAtEndOfQuery:(Lorg/hibernate/engine/spi/RowSelection;Ljava/sql/PreparedStatement;I)I
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 3 // int index
        end local 2 // java.sql.PreparedStatement statement
        end local 1 // org.hibernate.engine.spi.RowSelection selection
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0    3     1  selection  Lorg/hibernate/engine/spi/RowSelection;
            0    3     2  statement  Ljava/sql/PreparedStatement;
            0    3     3      index  I
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
           Name  Flags
      selection  
      statement  
      index      

  protected java.lang.String fillAliasInSelectClause(java.lang.StringBuilder, int);
    descriptor: (Ljava/lang/StringBuilder;I)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=14, args_size=3
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.StringBuilder sb
        start local 2 // int offset
         0: .line 168
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            astore 3 /* separator */
        start local 3 // java.lang.String separator
         1: .line 169
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 4 /* aliases */
        start local 4 // java.util.List aliases
         2: .line 170
            aload 0 /* this */
            aload 1 /* sb */
            iload 2 /* offset */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.getSelectColumnsStartPosition:(Ljava/lang/StringBuilder;I)I
            istore 5 /* startPos */
        start local 5 // int startPos
         3: .line 171
            aload 1 /* sb */
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.FROM_PATTERN:Ljava/util/regex/Pattern;
            iload 5 /* startPos */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOfPattern:(Ljava/lang/StringBuilder;Ljava/util/regex/Pattern;I)I
            istore 6 /* endPos */
        start local 6 // int endPos
         4: .line 173
            iload 5 /* startPos */
            istore 7 /* nextComa */
        start local 7 // int nextComa
         5: .line 174
            iload 5 /* startPos */
            istore 8 /* prevComa */
        start local 8 // int prevComa
         6: .line 175
            iconst_0
            istore 9 /* unique */
        start local 9 // int unique
         7: .line 176
            iconst_0
            istore 10 /* selectsMultipleColumns */
        start local 10 // boolean selectsMultipleColumns
         8: .line 178
            goto 28
         9: .line 179
      StackMap locals: org.hibernate.dialect.pagination.SQLServer2005LimitHandler java.lang.StringBuilder int java.lang.String java.util.List int int int int int int
      StackMap stack:
            iload 7 /* nextComa */
            istore 8 /* prevComa */
        10: .line 180
            aload 1 /* sb */
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.COMMA_PATTERN:Ljava/util/regex/Pattern;
            iload 7 /* nextComa */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOfPattern:(Ljava/lang/StringBuilder;Ljava/util/regex/Pattern;I)I
            istore 7 /* nextComa */
        11: .line 181
            iload 7 /* nextComa */
            iload 6 /* endPos */
            if_icmple 13
        12: .line 182
            goto 29
        13: .line 184
      StackMap locals:
      StackMap stack:
            iload 7 /* nextComa */
            iconst_m1
            if_icmpeq 28
        14: .line 185
            aload 1 /* sb */
            iload 8 /* prevComa */
            iload 7 /* nextComa */
            invokevirtual java.lang.StringBuilder.substring:(II)Ljava/lang/String;
            astore 11 /* expression */
        start local 11 // java.lang.String expression
        15: .line 186
            aload 0 /* this */
            aload 11 /* expression */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.selectsMultipleColumns:(Ljava/lang/String;)Z
            ifeq 18
        16: .line 187
            iconst_1
            istore 10 /* selectsMultipleColumns */
        17: .line 188
            goto 27
        18: .line 190
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 11 /* expression */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.getAlias:(Ljava/lang/String;)Ljava/lang/String;
            astore 12 /* alias */
        start local 12 // java.lang.String alias
        19: .line 191
            aload 12 /* alias */
            ifnonnull 26
        20: .line 193
            ldc "page"
            iload 9 /* unique */
            invokestatic org.hibernate.internal.util.StringHelper.generateAlias:(Ljava/lang/String;I)Ljava/lang/String;
            astore 12 /* alias */
        21: .line 194
            aload 1 /* sb */
            iload 7 /* nextComa */
            new java.lang.StringBuilder
            dup
            ldc " as "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 12 /* alias */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.insert:(ILjava/lang/String;)Ljava/lang/StringBuilder;
            pop
        22: .line 195
            new java.lang.StringBuilder
            dup
            ldc " as "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 12 /* alias */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            istore 13 /* aliasExprLength */
        start local 13 // int aliasExprLength
        23: .line 196
            iinc 9 /* unique */ 1
        24: .line 197
            iload 7 /* nextComa */
            iload 13 /* aliasExprLength */
            iadd
            istore 7 /* nextComa */
        25: .line 198
            iload 6 /* endPos */
            iload 13 /* aliasExprLength */
            iadd
            istore 6 /* endPos */
        end local 13 // int aliasExprLength
        26: .line 200
      StackMap locals: java.lang.String
      StackMap stack:
            aload 4 /* aliases */
            aload 12 /* alias */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // java.lang.String alias
        27: .line 202
      StackMap locals:
      StackMap stack:
            iinc 7 /* nextComa */ 1
        end local 11 // java.lang.String expression
        28: .line 178
      StackMap locals:
      StackMap stack:
            iload 7 /* nextComa */
            iconst_m1
            if_icmpne 9
        29: .line 207
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.FROM_PATTERN:Ljava/util/regex/Pattern;
            iload 5 /* startPos */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOfPattern:(Ljava/lang/StringBuilder;Ljava/util/regex/Pattern;I)I
            istore 6 /* endPos */
        30: .line 208
            aload 1 /* sb */
            iload 8 /* prevComa */
            iload 6 /* endPos */
            invokevirtual java.lang.StringBuilder.substring:(II)Ljava/lang/String;
            astore 11 /* expression */
        start local 11 // java.lang.String expression
        31: .line 209
            aload 0 /* this */
            aload 11 /* expression */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.selectsMultipleColumns:(Ljava/lang/String;)Z
            ifeq 34
        32: .line 210
            iconst_1
            istore 10 /* selectsMultipleColumns */
        33: .line 211
            goto 42
        34: .line 213
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 11 /* expression */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.getAlias:(Ljava/lang/String;)Ljava/lang/String;
            astore 12 /* alias */
        start local 12 // java.lang.String alias
        35: .line 214
            aload 12 /* alias */
            ifnonnull 41
        36: .line 216
            ldc "page"
            iload 9 /* unique */
            invokestatic org.hibernate.internal.util.StringHelper.generateAlias:(Ljava/lang/String;I)Ljava/lang/String;
            astore 12 /* alias */
        37: .line 217
            aload 1 /* sb */
            iload 6 /* endPos */
            aload 3 /* separator */
            invokevirtual java.lang.String.length:()I
            isub
            invokevirtual java.lang.StringBuilder.substring:(I)Ljava/lang/String;
            aload 3 /* separator */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            istore 13 /* endWithSeparator */
        start local 13 // boolean endWithSeparator
        38: .line 218
            aload 1 /* sb */
            iload 6 /* endPos */
            iload 13 /* endWithSeparator */
            ifeq 39
            iconst_2
            goto 40
      StackMap locals: org.hibernate.dialect.pagination.SQLServer2005LimitHandler java.lang.StringBuilder int java.lang.String java.util.List int int int int int int java.lang.String java.lang.String int
      StackMap stack: java.lang.StringBuilder int
        39: iconst_1
      StackMap locals: org.hibernate.dialect.pagination.SQLServer2005LimitHandler java.lang.StringBuilder int java.lang.String java.util.List int int int int int int java.lang.String java.lang.String int
      StackMap stack: java.lang.StringBuilder int int
        40: isub
            new java.lang.StringBuilder
            dup
            ldc " as "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 12 /* alias */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.insert:(ILjava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 13 // boolean endWithSeparator
        41: .line 220
      StackMap locals:
      StackMap stack:
            aload 4 /* aliases */
            aload 12 /* alias */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // java.lang.String alias
        42: .line 224
      StackMap locals:
      StackMap stack:
            iload 10 /* selectsMultipleColumns */
            ifeq 43
            ldc "*"
            goto 44
      StackMap locals:
      StackMap stack:
        43: ldc ", "
            aload 4 /* aliases */
            invokestatic java.lang.String.join:(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
        44: areturn
        end local 11 // java.lang.String expression
        end local 10 // boolean selectsMultipleColumns
        end local 9 // int unique
        end local 8 // int prevComa
        end local 7 // int nextComa
        end local 6 // int endPos
        end local 5 // int startPos
        end local 4 // java.util.List aliases
        end local 3 // java.lang.String separator
        end local 2 // int offset
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   45     0                    this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0   45     1                      sb  Ljava/lang/StringBuilder;
            0   45     2                  offset  I
            1   45     3               separator  Ljava/lang/String;
            2   45     4                 aliases  Ljava/util/List<Ljava/lang/String;>;
            3   45     5                startPos  I
            4   45     6                  endPos  I
            5   45     7                nextComa  I
            6   45     8                prevComa  I
            7   45     9                  unique  I
            8   45    10  selectsMultipleColumns  Z
           15   28    11              expression  Ljava/lang/String;
           19   27    12                   alias  Ljava/lang/String;
           23   26    13         aliasExprLength  I
           31   45    11              expression  Ljava/lang/String;
           35   42    12                   alias  Ljava/lang/String;
           38   41    13        endWithSeparator  Z
    MethodParameters:
        Name  Flags
      sb      
      offset  

  private int getSelectColumnsStartPosition(java.lang.StringBuilder, int);
    descriptor: (Ljava/lang/StringBuilder;I)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.StringBuilder sb
        start local 2 // int offset
         0: .line 235
            aload 0 /* this */
            aload 1 /* sb */
            iload 2 /* offset */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.getSelectStartPosition:(Ljava/lang/StringBuilder;I)I
            istore 3 /* startPos */
        start local 3 // int startPos
         1: .line 237
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iload 3 /* startPos */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            astore 4 /* sql */
        start local 4 // java.lang.String sql
         2: .line 238
            aload 4 /* sql */
            ldc "select distinct "
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 239
            iload 3 /* startPos */
            ldc "select distinct "
            invokevirtual java.lang.String.length:()I
            iadd
            ireturn
         4: .line 241
      StackMap locals: int java.lang.String
      StackMap stack:
            aload 4 /* sql */
            ldc "select "
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 6
         5: .line 242
            iload 3 /* startPos */
            ldc "select "
            invokevirtual java.lang.String.length:()I
            iadd
            ireturn
         6: .line 244
      StackMap locals:
      StackMap stack:
            iload 3 /* startPos */
            ireturn
        end local 4 // java.lang.String sql
        end local 3 // int startPos
        end local 2 // int offset
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0    7     1        sb  Ljava/lang/StringBuilder;
            0    7     2    offset  I
            1    7     3  startPos  I
            2    7     4       sql  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      sb      
      offset  

  private int getSelectStartPosition(java.lang.StringBuilder, int);
    descriptor: (Ljava/lang/StringBuilder;I)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.StringBuilder sb
        start local 2 // int offset
         0: .line 255
            aload 1 /* sb */
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.SELECT_PATTERN:Ljava/util/regex/Pattern;
            iload 2 /* offset */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOfPattern:(Ljava/lang/StringBuilder;Ljava/util/regex/Pattern;I)I
            ireturn
        end local 2 // int offset
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0    1     1      sb  Ljava/lang/StringBuilder;
            0    1     2  offset  I
    MethodParameters:
        Name  Flags
      sb      
      offset  

  private boolean selectsMultipleColumns(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.String expression
         0: .line 264
            aload 1 /* expression */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            ldc "(?i)(.)*\\s"
            ldc ""
            invokevirtual java.lang.String.replaceFirst:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 2 /* lastExpr */
        start local 2 // java.lang.String lastExpr
         1: .line 265
            ldc "*"
            aload 2 /* lastExpr */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 2
            aload 2 /* lastExpr */
            ldc ".*"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 2
            iconst_0
            ireturn
      StackMap locals: java.lang.String
      StackMap stack:
         2: iconst_1
            ireturn
        end local 2 // java.lang.String lastExpr
        end local 1 // java.lang.String expression
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0    3     1  expression  Ljava/lang/String;
            1    3     2    lastExpr  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      expression  

  private java.lang.String getAlias(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.String expression
         0: .line 281
            aload 1 /* expression */
            ldc "(\\((.)*\\))"
            ldc ""
            invokevirtual java.lang.String.replaceFirst:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 1 /* expression */
         1: .line 285
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.ALIAS_PATTERN:Ljava/util/regex/Pattern;
            aload 1 /* expression */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 2 /* matcher */
        start local 2 // java.util.regex.Matcher matcher
         2: .line 287
            aconst_null
            astore 3 /* alias */
        start local 3 // java.lang.String alias
         3: .line 288
            aload 2 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 7
            aload 2 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            iconst_1
            if_icmple 7
         4: .line 290
            aload 2 /* matcher */
            iconst_3
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            astore 3 /* alias */
         5: .line 291
            aload 3 /* alias */
            ifnonnull 7
         6: .line 293
            aload 2 /* matcher */
            iconst_0
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            astore 3 /* alias */
         7: .line 297
      StackMap locals: java.util.regex.Matcher java.lang.String
      StackMap stack:
            aload 3 /* alias */
            ifnull 8
            aload 3 /* alias */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            goto 9
      StackMap locals:
      StackMap stack:
         8: aconst_null
      StackMap locals:
      StackMap stack: java.lang.String
         9: areturn
        end local 3 // java.lang.String alias
        end local 2 // java.util.regex.Matcher matcher
        end local 1 // java.lang.String expression
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0   10     1  expression  Ljava/lang/String;
            2   10     2     matcher  Ljava/util/regex/Matcher;
            3   10     3       alias  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      expression  

  protected void encloseWithOuterQuery(java.lang.StringBuilder, int);
    descriptor: (Ljava/lang/StringBuilder;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.StringBuilder sql
        start local 2 // int offset
         0: .line 307
            aload 1 /* sql */
            iload 2 /* offset */
            ldc "SELECT inner_query.*, ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP) as __hibernate_row_nr__ FROM ( "
            invokevirtual java.lang.StringBuilder.insert:(ILjava/lang/String;)Ljava/lang/StringBuilder;
            pop
         1: .line 308
            aload 1 /* sql */
            ldc " ) inner_query "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 309
            return
        end local 2 // int offset
        end local 1 // java.lang.StringBuilder sql
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0    3     1     sql  Ljava/lang/StringBuilder;
            0    3     2  offset  I
    MethodParameters:
        Name  Flags
      sql     
      offset  

  protected void addTopExpression(java.lang.StringBuilder, int);
    descriptor: (Ljava/lang/StringBuilder;I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.StringBuilder sql
        start local 2 // int offset
         0: .line 320
            aload 1 /* sql */
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.SELECT_PATTERN:Ljava/util/regex/Pattern;
            iload 2 /* offset */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOfPattern:(Ljava/lang/StringBuilder;Ljava/util/regex/Pattern;I)I
            istore 3 /* selectPos */
        start local 3 // int selectPos
         1: .line 321
            aload 1 /* sql */
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.SELECT_DISTINCT_PATTERN:Ljava/util/regex/Pattern;
            iload 2 /* offset */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOfPattern:(Ljava/lang/StringBuilder;Ljava/util/regex/Pattern;I)I
            istore 4 /* selectDistinctPos */
        start local 4 // int selectDistinctPos
         2: .line 322
            iload 3 /* selectPos */
            iload 4 /* selectDistinctPos */
            if_icmpne 5
         3: .line 324
            aload 1 /* sql */
            iload 4 /* selectDistinctPos */
            ldc "select distinct"
            invokevirtual java.lang.String.length:()I
            iadd
            ldc " TOP(?)"
            invokevirtual java.lang.StringBuilder.insert:(ILjava/lang/String;)Ljava/lang/StringBuilder;
            pop
         4: .line 325
            goto 6
         5: .line 328
      StackMap locals: int int
      StackMap stack:
            aload 1 /* sql */
            iload 3 /* selectPos */
            ldc "select"
            invokevirtual java.lang.String.length:()I
            iadd
            ldc " TOP(?)"
            invokevirtual java.lang.StringBuilder.insert:(ILjava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 330
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.topAdded:Z
         7: .line 331
            return
        end local 4 // int selectDistinctPos
        end local 3 // int selectPos
        end local 2 // int offset
        end local 1 // java.lang.StringBuilder sql
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    8     0               this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0    8     1                sql  Ljava/lang/StringBuilder;
            0    8     2             offset  I
            1    8     3          selectPos  I
            2    8     4  selectDistinctPos  I
    MethodParameters:
        Name  Flags
      sql     
      offset  

  private static int shallowIndexOfPattern(java.lang.StringBuilder, java.util.regex.Pattern, int);
    descriptor: (Ljava/lang/StringBuilder;Ljava/util/regex/Pattern;I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // java.lang.StringBuilder sb
        start local 1 // java.util.regex.Pattern pattern
        start local 2 // int fromIndex
         0: .line 344
            iconst_m1
            istore 3 /* index */
        start local 3 // int index
         1: .line 345
            aload 0 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* matchString */
        start local 4 // java.lang.String matchString
         2: .line 348
            aload 4 /* matchString */
            invokevirtual java.lang.String.length:()I
            iload 2 /* fromIndex */
            if_icmplt 3
            iload 2 /* fromIndex */
            ifge 4
         3: .line 349
      StackMap locals: int java.lang.String
      StackMap stack:
            iconst_m1
            ireturn
         4: .line 352
      StackMap locals:
      StackMap stack:
            aload 4 /* matchString */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.generateIgnoreRanges:(Ljava/lang/String;)Ljava/util/List;
            astore 5 /* ignoreRangeList */
        start local 5 // java.util.List ignoreRangeList
         5: .line 354
            aload 1 /* pattern */
            aload 4 /* matchString */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 6 /* matcher */
        start local 6 // java.util.regex.Matcher matcher
         6: .line 355
            aload 6 /* matcher */
            iload 2 /* fromIndex */
            aload 4 /* matchString */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.util.regex.Matcher.region:(II)Ljava/util/regex/Matcher;
            pop
         7: .line 357
            aload 5 /* ignoreRangeList */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 15
         8: .line 360
            aload 6 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 16
            aload 6 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            ifle 16
         9: .line 361
            aload 6 /* matcher */
            invokevirtual java.util.regex.Matcher.start:()I
            istore 3 /* index */
        10: .line 363
            goto 16
        11: .line 368
      StackMap locals: java.util.List java.util.regex.Matcher
      StackMap stack:
            aload 6 /* matcher */
            invokevirtual java.util.regex.Matcher.start:()I
            istore 7 /* position */
        start local 7 // int position
        12: .line 369
            aload 5 /* ignoreRangeList */
            iload 7 /* position */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.isPositionIgnorable:(Ljava/util/List;I)Z
            ifne 15
        13: .line 370
            iload 7 /* position */
            istore 3 /* index */
        14: .line 371
            goto 16
        end local 7 // int position
        15: .line 367
      StackMap locals:
      StackMap stack:
            aload 6 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 16
            aload 6 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            ifgt 11
        16: .line 375
      StackMap locals:
      StackMap stack:
            iload 3 /* index */
            ireturn
        end local 6 // java.util.regex.Matcher matcher
        end local 5 // java.util.List ignoreRangeList
        end local 4 // java.lang.String matchString
        end local 3 // int index
        end local 2 // int fromIndex
        end local 1 // java.util.regex.Pattern pattern
        end local 0 // java.lang.StringBuilder sb
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   17     0               sb  Ljava/lang/StringBuilder;
            0   17     1          pattern  Ljava/util/regex/Pattern;
            0   17     2        fromIndex  I
            1   17     3            index  I
            2   17     4      matchString  Ljava/lang/String;
            5   17     5  ignoreRangeList  Ljava/util/List<Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler$IgnoreRange;>;
            6   17     6          matcher  Ljava/util/regex/Matcher;
           12   15     7         position  I
    MethodParameters:
           Name  Flags
      sb         final
      pattern    final
      fromIndex  

  private static java.util.regex.Pattern buildShallowIndexPattern(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Ljava/util/regex/Pattern;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.String pattern
        start local 1 // boolean wordBoundary
         0: .line 388
            new java.lang.StringBuilder
            dup
            ldc "("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         1: .line 389
            iload 1 /* wordBoundary */
            ifeq 2
            ldc "\\b"
            goto 3
      StackMap locals:
      StackMap stack: java.lang.StringBuilder
         2: ldc ""
      StackMap locals: java.lang.String int
      StackMap stack: java.lang.StringBuilder java.lang.String
         3: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 390
            aload 0 /* pattern */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 391
            iload 1 /* wordBoundary */
            ifeq 6
            ldc "\\b"
            goto 7
      StackMap locals:
      StackMap stack: java.lang.StringBuilder
         6: ldc ""
      StackMap locals: java.lang.String int
      StackMap stack: java.lang.StringBuilder java.lang.String
         7: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 392
            ldc ")(?![^\\(|\\[]*(\\)|\\]))"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         9: .line 388
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 393
            iconst_2
        11: .line 387
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
            areturn
        end local 1 // boolean wordBoundary
        end local 0 // java.lang.String pattern
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0       pattern  Ljava/lang/String;
            0   12     1  wordBoundary  Z
    MethodParameters:
              Name  Flags
      pattern       
      wordBoundary  

  private static java.util.List<org.hibernate.dialect.pagination.SQLServer2005LimitHandler$IgnoreRange> generateIgnoreRanges(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // java.lang.String sql
         0: .line 405
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* ignoreRangeList */
        start local 1 // java.util.List ignoreRangeList
         1: .line 407
            iconst_0
            istore 2 /* depth */
        start local 2 // int depth
         2: .line 408
            iconst_m1
            istore 3 /* start */
        start local 3 // int start
         3: .line 409
            iconst_0
            istore 4 /* insideAStringValue */
        start local 4 // boolean insideAStringValue
         4: .line 410
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         5: goto 26
         6: .line 411
      StackMap locals: java.lang.String java.util.List int int int int
      StackMap stack:
            aload 0 /* sql */
            iload 5 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 6 /* ch */
        start local 6 // char ch
         7: .line 412
            iload 6 /* ch */
            bipush 39
            if_icmpne 12
         8: .line 413
            iload 4 /* insideAStringValue */
            ifeq 9
            iconst_0
            goto 10
      StackMap locals: int
      StackMap stack:
         9: iconst_1
      StackMap locals:
      StackMap stack: int
        10: istore 4 /* insideAStringValue */
        11: .line 414
            goto 25
        12: .line 415
      StackMap locals:
      StackMap stack:
            iload 6 /* ch */
            bipush 40
            if_icmpne 17
            iload 4 /* insideAStringValue */
            ifne 17
        13: .line 416
            iinc 2 /* depth */ 1
        14: .line 417
            iload 2 /* depth */
            iconst_1
            if_icmpne 25
        15: .line 418
            iload 5 /* i */
            istore 3 /* start */
        16: .line 420
            goto 25
        17: .line 421
      StackMap locals:
      StackMap stack:
            iload 6 /* ch */
            bipush 41
            if_icmpne 25
            iload 4 /* insideAStringValue */
            ifne 25
        18: .line 422
            iload 2 /* depth */
            ifle 24
        19: .line 423
            iload 2 /* depth */
            iconst_1
            if_icmpne 22
        20: .line 424
            aload 1 /* ignoreRangeList */
            new org.hibernate.dialect.pagination.SQLServer2005LimitHandler$IgnoreRange
            dup
            iload 3 /* start */
            iload 5 /* i */
            invokespecial org.hibernate.dialect.pagination.SQLServer2005LimitHandler$IgnoreRange.<init>:(II)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        21: .line 425
            iconst_m1
            istore 3 /* start */
        22: .line 427
      StackMap locals:
      StackMap stack:
            iinc 2 /* depth */ -1
        23: .line 428
            goto 25
        24: .line 430
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Found an unmatched ')' at position "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 5 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* sql */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // char ch
        25: .line 410
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        26: iload 5 /* i */
            aload 0 /* sql */
            invokevirtual java.lang.String.length:()I
            if_icmplt 6
        end local 5 // int i
        27: .line 435
            iload 2 /* depth */
            ifeq 29
        28: .line 436
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unmatched parenthesis in rendered SQL ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* depth */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " depth): "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* sql */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        29: .line 439
      StackMap locals:
      StackMap stack:
            aload 1 /* ignoreRangeList */
            areturn
        end local 4 // boolean insideAStringValue
        end local 3 // int start
        end local 2 // int depth
        end local 1 // java.util.List ignoreRangeList
        end local 0 // java.lang.String sql
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   30     0                 sql  Ljava/lang/String;
            1   30     1     ignoreRangeList  Ljava/util/List<Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler$IgnoreRange;>;
            2   30     2               depth  I
            3   30     3               start  I
            4   30     4  insideAStringValue  Z
            5   27     5                   i  I
            7   25     6                  ch  C
    Signature: (Ljava/lang/String;)Ljava/util/List<Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler$IgnoreRange;>;
    MethodParameters:
      Name  Flags
      sql   

  private static boolean isPositionIgnorable(java.util.List<org.hibernate.dialect.pagination.SQLServer2005LimitHandler$IgnoreRange>, );
    descriptor: (Ljava/util/List;I)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.util.List ignoreRangeList
        start local 1 // int position
         0: .line 450
            aload 0 /* ignoreRangeList */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: java.util.List int top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.hibernate.dialect.pagination.SQLServer2005LimitHandler$IgnoreRange
            astore 2 /* ignoreRange */
        start local 2 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler$IgnoreRange ignoreRange
         2: .line 451
            aload 2 /* ignoreRange */
            iload 1 /* position */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler$IgnoreRange.isWithinRange:(I)Z
            ifeq 4
         3: .line 452
            iconst_1
            ireturn
        end local 2 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler$IgnoreRange ignoreRange
         4: .line 450
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 455
            iconst_0
            ireturn
        end local 1 // int position
        end local 0 // java.util.List ignoreRangeList
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0  ignoreRangeList  Ljava/util/List<Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler$IgnoreRange;>;
            0    6     1         position  I
            2    4     2      ignoreRange  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler$IgnoreRange;
    Signature: (Ljava/util/List<Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler$IgnoreRange;>;I)Z
    MethodParameters:
                 Name  Flags
      ignoreRangeList  
      position         

  private int getStatementIndex(java.lang.StringBuilder);
    descriptor: (Ljava/lang/StringBuilder;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.StringBuilder sql
         0: .line 483
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_CTE:Ljava/util/regex/Pattern;
            aload 1 /* sql */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 2 /* matcher */
        start local 2 // java.util.regex.Matcher matcher
         1: .line 484
            aload 2 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 4
            aload 2 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            ifle 4
         2: .line 485
            aload 0 /* this */
            iconst_1
            putfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.isCTE:Z
         3: .line 486
            aload 0 /* this */
            aload 1 /* sql */
            aload 2 /* matcher */
            invokevirtual java.util.regex.Matcher.end:()I
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.locateQueryInCTEStatement:(Ljava/lang/StringBuilder;I)I
            ireturn
         4: .line 488
      StackMap locals: java.util.regex.Matcher
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // java.util.regex.Matcher matcher
        end local 1 // java.lang.StringBuilder sql
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0    5     1      sql  Ljava/lang/StringBuilder;
            1    5     2  matcher  Ljava/util/regex/Matcher;
    MethodParameters:
      Name  Flags
      sql   

  private int locateQueryInCTEStatement(java.lang.StringBuilder, int);
    descriptor: (Ljava/lang/StringBuilder;I)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=4, args_size=3
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.StringBuilder sql
        start local 2 // int offset
         0: .line 503
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_EXPRESSION_NAME:Ljava/util/regex/Pattern;
            aload 1 /* sql */
            iload 2 /* offset */
            invokevirtual java.lang.StringBuilder.substring:(I)Ljava/lang/String;
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 3 /* matcher */
        start local 3 // java.util.regex.Matcher matcher
         1: .line 504
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 38
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            ifle 38
         2: .line 505
            iload 2 /* offset */
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.end:()I
            iadd
            istore 2 /* offset */
         3: .line 506
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_COLUMN_NAMES_START:Ljava/util/regex/Pattern;
            aload 1 /* sql */
            iload 2 /* offset */
            invokevirtual java.lang.StringBuilder.substring:(I)Ljava/lang/String;
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 3 /* matcher */
         4: .line 507
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 22
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            ifle 22
         5: .line 508
            iload 2 /* offset */
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.end:()I
            iadd
            istore 2 /* offset */
         6: .line 509
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_COLUMN_NAMES_END:Ljava/util/regex/Pattern;
            aload 1 /* sql */
            iload 2 /* offset */
            invokevirtual java.lang.StringBuilder.substring:(I)Ljava/lang/String;
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 3 /* matcher */
         7: .line 510
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 15
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            ifle 15
         8: .line 511
            iload 2 /* offset */
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.end:()I
            iadd
            istore 2 /* offset */
         9: .line 512
            iload 2 /* offset */
            aload 0 /* this */
            aload 1 /* sql */
            iload 2 /* offset */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.advanceOverCTEInnerQuery:(Ljava/lang/StringBuilder;I)I
            iadd
            istore 2 /* offset */
        10: .line 513
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_COMMA:Ljava/util/regex/Pattern;
            aload 1 /* sql */
            iload 2 /* offset */
            invokevirtual java.lang.StringBuilder.substring:(I)Ljava/lang/String;
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 3 /* matcher */
        11: .line 514
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 14
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            ifle 14
        12: .line 516
            iload 2 /* offset */
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.end:()I
            iadd
            istore 2 /* offset */
        13: .line 517
            goto 0
        14: .line 520
      StackMap locals: java.util.regex.Matcher
      StackMap stack:
            iload 2 /* offset */
            ireturn
        15: .line 524
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
        16: .line 526
            getstatic java.util.Locale.ROOT:Ljava/util/Locale;
        17: .line 527
            ldc "Failed to parse CTE expression columns at offset %d, SQL [%s]"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        18: .line 528
            iload 2 /* offset */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
        19: .line 529
            aload 1 /* sql */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
        20: .line 525
            invokestatic java.lang.String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        21: .line 524
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        22: .line 535
      StackMap locals:
      StackMap stack:
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_AS:Ljava/util/regex/Pattern;
            aload 1 /* sql */
            iload 2 /* offset */
            invokevirtual java.lang.StringBuilder.substring:(I)Ljava/lang/String;
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 3 /* matcher */
        23: .line 536
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 31
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            ifle 31
        24: .line 537
            iload 2 /* offset */
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.end:()I
            iadd
            istore 2 /* offset */
        25: .line 538
            iload 2 /* offset */
            aload 0 /* this */
            aload 1 /* sql */
            iload 2 /* offset */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.advanceOverCTEInnerQuery:(Ljava/lang/StringBuilder;I)I
            iadd
            istore 2 /* offset */
        26: .line 539
            getstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.WITH_COMMA:Ljava/util/regex/Pattern;
            aload 1 /* sql */
            iload 2 /* offset */
            invokevirtual java.lang.StringBuilder.substring:(I)Ljava/lang/String;
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 3 /* matcher */
        27: .line 540
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 30
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            ifle 30
        28: .line 542
            iload 2 /* offset */
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.end:()I
            iadd
            istore 2 /* offset */
        29: .line 543
            goto 0
        30: .line 546
      StackMap locals:
      StackMap stack:
            iload 2 /* offset */
            ireturn
        31: .line 550
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
        32: .line 552
            getstatic java.util.Locale.ROOT:Ljava/util/Locale;
        33: .line 553
            ldc "Failed to locate AS keyword in CTE query at offset %d, SQL [%s]"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        34: .line 554
            iload 2 /* offset */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
        35: .line 555
            aload 1 /* sql */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
        36: .line 551
            invokestatic java.lang.String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        37: .line 550
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        38: .line 562
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
        39: .line 564
            getstatic java.util.Locale.ROOT:Ljava/util/Locale;
        40: .line 565
            ldc "Failed to locate CTE expression name at offset %d, SQL [%s]"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        41: .line 566
            iload 2 /* offset */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
        42: .line 567
            aload 1 /* sql */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
        43: .line 563
            invokestatic java.lang.String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        44: .line 562
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.util.regex.Matcher matcher
        end local 2 // int offset
        end local 1 // java.lang.StringBuilder sql
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   45     0     this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0   45     1      sql  Ljava/lang/StringBuilder;
            0   45     2   offset  I
            1   45     3  matcher  Ljava/util/regex/Matcher;
    MethodParameters:
        Name  Flags
      sql     
      offset  

  private int advanceOverCTEInnerQuery(java.lang.StringBuilder, int);
    descriptor: (Ljava/lang/StringBuilder;I)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.StringBuilder sql
        start local 2 // int offset
         0: .line 584
            iconst_0
            istore 3 /* brackets */
        start local 3 // int brackets
         1: .line 585
            iload 2 /* offset */
            istore 4 /* index */
        start local 4 // int index
         2: .line 586
            iconst_0
            istore 5 /* inString */
        start local 5 // boolean inString
         3: .line 587
            goto 18
         4: .line 588
      StackMap locals: int int int
      StackMap stack:
            aload 1 /* sql */
            iload 4 /* index */
            invokevirtual java.lang.StringBuilder.charAt:(I)C
            bipush 39
            if_icmpne 7
         5: .line 589
            iconst_1
            istore 5 /* inString */
         6: .line 590
            goto 17
         7: .line 591
      StackMap locals:
      StackMap stack:
            aload 1 /* sql */
            iload 4 /* index */
            invokevirtual java.lang.StringBuilder.charAt:(I)C
            bipush 39
            if_icmpne 10
            iload 5 /* inString */
            ifeq 10
         8: .line 592
            iconst_0
            istore 5 /* inString */
         9: .line 593
            goto 17
        10: .line 594
      StackMap locals:
      StackMap stack:
            aload 1 /* sql */
            iload 4 /* index */
            invokevirtual java.lang.StringBuilder.charAt:(I)C
            bipush 40
            if_icmpne 13
            iload 5 /* inString */
            ifne 13
        11: .line 595
            iinc 3 /* brackets */ 1
        12: .line 596
            goto 17
        13: .line 597
      StackMap locals:
      StackMap stack:
            aload 1 /* sql */
            iload 4 /* index */
            invokevirtual java.lang.StringBuilder.charAt:(I)C
            bipush 41
            if_icmpne 17
            iload 5 /* inString */
            ifne 17
        14: .line 598
            iinc 3 /* brackets */ -1
        15: .line 599
            iload 3 /* brackets */
            ifne 17
        16: .line 600
            goto 19
        17: .line 587
      StackMap locals:
      StackMap stack:
            iinc 4 /* index */ 1
      StackMap locals:
      StackMap stack:
        18: iload 4 /* index */
            aload 1 /* sql */
            invokevirtual java.lang.StringBuilder.length:()I
            if_icmplt 4
        19: .line 605
      StackMap locals:
      StackMap stack:
            iload 3 /* brackets */
            ifle 23
        20: .line 606
            new java.lang.IllegalArgumentException
            dup
        21: .line 607
            ldc "Failed to parse the CTE query inner query because closing ')' was not found."
        22: .line 606
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        23: .line 611
      StackMap locals:
      StackMap stack:
            iload 4 /* index */
            iload 2 /* offset */
            isub
            iconst_1
            iadd
            ireturn
        end local 5 // boolean inString
        end local 4 // int index
        end local 3 // int brackets
        end local 2 // int offset
        end local 1 // java.lang.StringBuilder sql
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   24     0      this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0   24     1       sql  Ljava/lang/StringBuilder;
            0   24     2    offset  I
            1   24     3  brackets  I
            2   24     4     index  I
            3   24     5  inString  Z
    MethodParameters:
        Name  Flags
      sql     
      offset  
}
SourceFile: "SQLServer2005LimitHandler.java"
NestMembers:
  org.hibernate.dialect.pagination.SQLServer2005LimitHandler$IgnoreRange
InnerClasses:
  IgnoreRange = org.hibernate.dialect.pagination.SQLServer2005LimitHandler$IgnoreRange of org.hibernate.dialect.pagination.SQLServer2005LimitHandler