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 SELECT_WITH_SPACE;
    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.util.regex.Pattern ALIAS_PATTERN;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 49
            ldc "(?i)\\sas\\s(.)+$"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.ALIAS_PATTERN:Ljava/util/regex/Pattern;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.String, org.hibernate.engine.spi.RowSelection);
    descriptor: (Ljava/lang/String;Lorg/hibernate/engine/spi/RowSelection;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, 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 63
            aload 0 /* this */
            aload 1 /* sql */
            aload 2 /* selection */
            invokespecial org.hibernate.dialect.pagination.AbstractLimitHandler.<init>:(Ljava/lang/String;Lorg/hibernate/engine/spi/RowSelection;)V
         1: .line 54
            aload 0 /* this */
            iconst_1
            putfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.hasOffset:Z
         2: .line 64
            return
        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    3     0       this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0    3     1        sql  Ljava/lang/String;
            0    3     2  selection  Lorg/hibernate/engine/spi/RowSelection;
    MethodParameters:
           Name  Flags
      sql        
      selection  

  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 getProcessedSql();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
         0: .line 112
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.sql:Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 113
            aload 1 /* sb */
            aload 1 /* 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 1 /* sb */
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.length:()I
            iconst_1
            isub
            invokevirtual java.lang.StringBuilder.setLength:(I)V
         3: .line 117
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 0 /* this */
            getfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.selection:Lorg/hibernate/engine/spi/RowSelection;
            invokestatic org.hibernate.dialect.pagination.LimitHelper.hasFirstRow:(Lorg/hibernate/engine/spi/RowSelection;)Z
            ifeq 12
         4: .line 118
            aload 0 /* this */
            aload 1 /* sb */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.fillAliasInSelectClause:(Ljava/lang/StringBuilder;)Ljava/lang/String;
            astore 2 /* selectClause */
        start local 2 // java.lang.String selectClause
         5: .line 120
            aload 1 /* sb */
            ldc "order by"
            iconst_0
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOfWord:(Ljava/lang/StringBuilder;Ljava/lang/String;I)I
            istore 3 /* orderByIndex */
        start local 3 // int orderByIndex
         6: .line 121
            iload 3 /* orderByIndex */
            ifle 8
         7: .line 123
            aload 0 /* this */
            aload 1 /* sb */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.addTopExpression:(Ljava/lang/StringBuilder;)V
         8: .line 126
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* sb */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.encloseWithOuterQuery:(Ljava/lang/StringBuilder;)V
         9: .line 129
            aload 1 /* sb */
            iconst_0
            ldc "WITH query AS ("
            invokevirtual java.lang.StringBuilder.insert:(ILjava/lang/String;)Ljava/lang/StringBuilder;
            ldc ") SELECT "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* 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
        10: .line 130
            aload 1 /* sb */
            ldc "WHERE __hibernate_row_nr__ >= ? AND __hibernate_row_nr__ < ?"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 3 // int orderByIndex
        end local 2 // java.lang.String selectClause
        11: .line 131
            goto 14
        12: .line 133
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.hasOffset:Z
        13: .line 134
            aload 0 /* this */
            aload 1 /* sb */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.addTopExpression:(Ljava/lang/StringBuilder;)V
        14: .line 137
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            1   15     1            sb  Ljava/lang/StringBuilder;
            5   11     2  selectClause  Ljava/lang/String;
            6   11     3  orderByIndex  I

  public int bindLimitParametersAtStartOfQuery(java.sql.PreparedStatement, int);
    descriptor: (Ljava/sql/PreparedStatement;I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.sql.PreparedStatement statement
        start local 2 // int index
         0: .line 142
            aload 0 /* this */
            getfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.topAdded:Z
            ifeq 3
         1: .line 144
            aload 1 /* statement */
            iload 2 /* index */
            aload 0 /* this */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.getMaxOrLimit:()I
            iconst_1
            isub
            invokeinterface java.sql.PreparedStatement.setInt:(II)V
         2: .line 145
            iconst_1
            ireturn
         3: .line 147
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // int index
        end local 1 // java.sql.PreparedStatement statement
        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  statement  Ljava/sql/PreparedStatement;
            0    4     2      index  I
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
           Name  Flags
      statement  
      index      

  public int bindLimitParametersAtEndOfQuery(java.sql.PreparedStatement, int);
    descriptor: (Ljava/sql/PreparedStatement;I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.sql.PreparedStatement statement
        start local 2 // int index
         0: .line 152
            aload 0 /* this */
            getfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.hasOffset:Z
            ifeq 1
            aload 0 /* this */
            aload 1 /* statement */
            iload 2 /* index */
            invokespecial org.hibernate.dialect.pagination.AbstractLimitHandler.bindLimitParametersAtEndOfQuery:(Ljava/sql/PreparedStatement;I)I
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 2 // int index
        end local 1 // java.sql.PreparedStatement statement
        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  statement  Ljava/sql/PreparedStatement;
            0    3     2      index  I
    Exceptions:
      throws java.sql.SQLException
    MethodParameters:
           Name  Flags
      statement  
      index      

  protected java.lang.String fillAliasInSelectClause(java.lang.StringBuilder);
    descriptor: (Ljava/lang/StringBuilder;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=12, args_size=2
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.StringBuilder sb
         0: .line 165
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 2 /* aliases */
        start local 2 // java.util.List aliases
         1: .line 166
            aload 1 /* sb */
            ldc "select "
            iconst_0
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOf:(Ljava/lang/StringBuilder;Ljava/lang/String;I)I
            istore 3 /* startPos */
        start local 3 // int startPos
         2: .line 167
            aload 1 /* sb */
            ldc "from"
            iload 3 /* startPos */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOfWord:(Ljava/lang/StringBuilder;Ljava/lang/String;I)I
            istore 4 /* endPos */
        start local 4 // int endPos
         3: .line 168
            iload 3 /* startPos */
            istore 5 /* nextComa */
        start local 5 // int nextComa
         4: .line 169
            iload 3 /* startPos */
            istore 6 /* prevComa */
        start local 6 // int prevComa
         5: .line 170
            iconst_0
            istore 7 /* unique */
        start local 7 // int unique
         6: .line 171
            iconst_0
            istore 8 /* selectsMultipleColumns */
        start local 8 // boolean selectsMultipleColumns
         7: .line 173
            goto 27
         8: .line 174
      StackMap locals: org.hibernate.dialect.pagination.SQLServer2005LimitHandler java.lang.StringBuilder java.util.List int int int int int int
      StackMap stack:
            iload 5 /* nextComa */
            istore 6 /* prevComa */
         9: .line 175
            aload 1 /* sb */
            ldc ","
            iload 5 /* nextComa */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOf:(Ljava/lang/StringBuilder;Ljava/lang/String;I)I
            istore 5 /* nextComa */
        10: .line 176
            iload 5 /* nextComa */
            iload 4 /* endPos */
            if_icmple 12
        11: .line 177
            goto 28
        12: .line 179
      StackMap locals:
      StackMap stack:
            iload 5 /* nextComa */
            iconst_m1
            if_icmpeq 27
        13: .line 180
            aload 1 /* sb */
            iload 6 /* prevComa */
            iload 5 /* nextComa */
            invokevirtual java.lang.StringBuilder.substring:(II)Ljava/lang/String;
            astore 9 /* expression */
        start local 9 // java.lang.String expression
        14: .line 181
            aload 0 /* this */
            aload 9 /* expression */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.selectsMultipleColumns:(Ljava/lang/String;)Z
            ifeq 17
        15: .line 182
            iconst_1
            istore 8 /* selectsMultipleColumns */
        16: .line 183
            goto 26
        17: .line 185
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 9 /* expression */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.getAlias:(Ljava/lang/String;)Ljava/lang/String;
            astore 10 /* alias */
        start local 10 // java.lang.String alias
        18: .line 186
            aload 10 /* alias */
            ifnonnull 25
        19: .line 188
            ldc "page"
            iload 7 /* unique */
            invokestatic org.hibernate.internal.util.StringHelper.generateAlias:(Ljava/lang/String;I)Ljava/lang/String;
            astore 10 /* alias */
        20: .line 189
            aload 1 /* sb */
            iload 5 /* nextComa */
            new java.lang.StringBuilder
            dup
            ldc " as "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 10 /* 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
        21: .line 190
            new java.lang.StringBuilder
            dup
            ldc " as "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 10 /* 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 11 /* aliasExprLength */
        start local 11 // int aliasExprLength
        22: .line 191
            iinc 7 /* unique */ 1
        23: .line 192
            iload 5 /* nextComa */
            iload 11 /* aliasExprLength */
            iadd
            istore 5 /* nextComa */
        24: .line 193
            iload 4 /* endPos */
            iload 11 /* aliasExprLength */
            iadd
            istore 4 /* endPos */
        end local 11 // int aliasExprLength
        25: .line 195
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* aliases */
            aload 10 /* alias */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 10 // java.lang.String alias
        26: .line 197
      StackMap locals:
      StackMap stack:
            iinc 5 /* nextComa */ 1
        end local 9 // java.lang.String expression
        27: .line 173
      StackMap locals:
      StackMap stack:
            iload 5 /* nextComa */
            iconst_m1
            if_icmpne 8
        28: .line 202
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            ldc "from"
            iload 3 /* startPos */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOfWord:(Ljava/lang/StringBuilder;Ljava/lang/String;I)I
            istore 4 /* endPos */
        29: .line 203
            aload 1 /* sb */
            iload 6 /* prevComa */
            iload 4 /* endPos */
            invokevirtual java.lang.StringBuilder.substring:(II)Ljava/lang/String;
            astore 9 /* expression */
        start local 9 // java.lang.String expression
        30: .line 204
            aload 0 /* this */
            aload 9 /* expression */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.selectsMultipleColumns:(Ljava/lang/String;)Z
            ifeq 33
        31: .line 205
            iconst_1
            istore 8 /* selectsMultipleColumns */
        32: .line 206
            goto 38
        33: .line 208
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 9 /* expression */
            invokevirtual org.hibernate.dialect.pagination.SQLServer2005LimitHandler.getAlias:(Ljava/lang/String;)Ljava/lang/String;
            astore 10 /* alias */
        start local 10 // java.lang.String alias
        34: .line 209
            aload 10 /* alias */
            ifnonnull 37
        35: .line 211
            ldc "page"
            iload 7 /* unique */
            invokestatic org.hibernate.internal.util.StringHelper.generateAlias:(Ljava/lang/String;I)Ljava/lang/String;
            astore 10 /* alias */
        36: .line 212
            aload 1 /* sb */
            iload 4 /* endPos */
            iconst_1
            isub
            new java.lang.StringBuilder
            dup
            ldc " as "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 10 /* 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
        37: .line 214
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* aliases */
            aload 10 /* alias */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 10 // java.lang.String alias
        38: .line 218
      StackMap locals:
      StackMap stack:
            iload 8 /* selectsMultipleColumns */
            ifeq 39
            ldc "*"
            goto 40
      StackMap locals:
      StackMap stack:
        39: ldc ", "
            aload 2 /* aliases */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            invokestatic org.hibernate.internal.util.StringHelper.join:(Ljava/lang/String;Ljava/util/Iterator;)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
        40: areturn
        end local 9 // java.lang.String expression
        end local 8 // boolean selectsMultipleColumns
        end local 7 // int unique
        end local 6 // int prevComa
        end local 5 // int nextComa
        end local 4 // int endPos
        end local 3 // int startPos
        end local 2 // java.util.List aliases
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   41     0                    this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0   41     1                      sb  Ljava/lang/StringBuilder;
            1   41     2                 aliases  Ljava/util/List<Ljava/lang/String;>;
            2   41     3                startPos  I
            3   41     4                  endPos  I
            4   41     5                nextComa  I
            5   41     6                prevComa  I
            6   41     7                  unique  I
            7   41     8  selectsMultipleColumns  Z
           14   27     9              expression  Ljava/lang/String;
           18   26    10                   alias  Ljava/lang/String;
           22   25    11         aliasExprLength  I
           30   41     9              expression  Ljava/lang/String;
           34   38    10                   alias  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      sb    

  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 227
            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;
            astore 2 /* lastExpr */
        start local 2 // java.lang.String lastExpr
         1: .line 228
            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=3, args_size=2
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.String expression
         0: .line 240
            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
         1: .line 241
            aload 2 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 3
         2: .line 244
            aload 2 /* matcher */
            iconst_0
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            ldc "(?i)(.)*\\sas\\s"
            ldc ""
            invokevirtual java.lang.String.replaceFirst:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            areturn
         3: .line 246
      StackMap locals: java.util.regex.Matcher
      StackMap stack:
            aconst_null
            areturn
        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    4     0        this  Lorg/hibernate/dialect/pagination/SQLServer2005LimitHandler;
            0    4     1  expression  Ljava/lang/String;
            1    4     2     matcher  Ljava/util/regex/Matcher;
    MethodParameters:
            Name  Flags
      expression  

  protected void encloseWithOuterQuery(java.lang.StringBuilder);
    descriptor: (Ljava/lang/StringBuilder;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.StringBuilder sql
         0: .line 255
            aload 1 /* sql */
            iconst_0
            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 256
            aload 1 /* sql */
            ldc " ) inner_query "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 257
            return
        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;
    MethodParameters:
      Name  Flags
      sql   

  protected void addTopExpression(java.lang.StringBuilder);
    descriptor: (Ljava/lang/StringBuilder;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.hibernate.dialect.pagination.SQLServer2005LimitHandler this
        start local 1 // java.lang.StringBuilder sql
         0: .line 266
            aload 1 /* sql */
            ldc "distinct"
            iconst_0
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOfWord:(Ljava/lang/StringBuilder;Ljava/lang/String;I)I
            istore 2 /* distinctStartPos */
        start local 2 // int distinctStartPos
         1: .line 267
            iload 2 /* distinctStartPos */
            ifle 4
         2: .line 269
            aload 1 /* sql */
            iload 2 /* distinctStartPos */
            ldc "distinct"
            invokevirtual java.lang.String.length:()I
            iadd
            ldc " TOP(?)"
            invokevirtual java.lang.StringBuilder.insert:(ILjava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 270
            goto 6
         4: .line 272
      StackMap locals: int
      StackMap stack:
            aload 1 /* sql */
            ldc "select "
            iconst_0
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOf:(Ljava/lang/StringBuilder;Ljava/lang/String;I)I
            istore 3 /* selectStartPos */
        start local 3 // int selectStartPos
         5: .line 274
            aload 1 /* sql */
            iload 3 /* selectStartPos */
            ldc "select"
            invokevirtual java.lang.String.length:()I
            iadd
            ldc " TOP(?)"
            invokevirtual java.lang.StringBuilder.insert:(ILjava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 3 // int selectStartPos
         6: .line 276
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.hibernate.dialect.pagination.SQLServer2005LimitHandler.topAdded:Z
         7: .line 277
            return
        end local 2 // int distinctStartPos
        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;
            1    8     2  distinctStartPos  I
            5    6     3    selectStartPos  I
    MethodParameters:
      Name  Flags
      sql   

  private static int shallowIndexOfWord(java.lang.StringBuilder, java.lang.String, int);
    descriptor: (Ljava/lang/StringBuilder;Ljava/lang/String;I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // java.lang.StringBuilder sb
        start local 1 // java.lang.String search
        start local 2 // int fromIndex
         0: .line 290
            aload 0 /* sb */
            new java.lang.StringBuilder
            dup
            bipush 32
            invokestatic java.lang.String.valueOf:(C)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* search */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iload 2 /* fromIndex */
            invokestatic org.hibernate.dialect.pagination.SQLServer2005LimitHandler.shallowIndexOf:(Ljava/lang/StringBuilder;Ljava/lang/String;I)I
            istore 3 /* index */
        start local 3 // int index
         1: .line 292
            iload 3 /* index */
            iconst_m1
            if_icmpeq 2
            iload 3 /* index */
            iconst_1
            iadd
            goto 3
      StackMap locals: int
      StackMap stack:
         2: iconst_m1
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 3 // int index
        end local 2 // int fromIndex
        end local 1 // java.lang.String search
        end local 0 // java.lang.StringBuilder sb
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0         sb  Ljava/lang/StringBuilder;
            0    4     1     search  Ljava/lang/String;
            0    4     2  fromIndex  I
            1    4     3      index  I
    MethodParameters:
           Name  Flags
      sb         final
      search     final
      fromIndex  

  private static int shallowIndexOf(java.lang.StringBuilder, java.lang.String, int);
    descriptor: (Ljava/lang/StringBuilder;Ljava/lang/String;I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=11, args_size=3
        start local 0 // java.lang.StringBuilder sb
        start local 1 // java.lang.String search
        start local 2 // int fromIndex
         0: .line 306
            aload 0 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            getstatic java.util.Locale.ROOT:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 3 /* lowercase */
        start local 3 // java.lang.String lowercase
         1: .line 307
            aload 3 /* lowercase */
            invokevirtual java.lang.String.length:()I
            istore 4 /* len */
        start local 4 // int len
         2: .line 308
            aload 1 /* search */
            invokevirtual java.lang.String.length:()I
            istore 5 /* searchlen */
        start local 5 // int searchlen
         3: .line 309
            iconst_m1
            istore 6 /* pos */
        start local 6 // int pos
         4: .line 310
            iconst_0
            istore 7 /* depth */
        start local 7 // int depth
         5: .line 311
            iload 2 /* fromIndex */
            istore 8 /* cur */
        start local 8 // int cur
         6: .line 313
      StackMap locals: java.lang.StringBuilder java.lang.String int java.lang.String int int int int int
      StackMap stack:
            aload 3 /* lowercase */
            aload 1 /* search */
            iload 8 /* cur */
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;I)I
            istore 6 /* pos */
         7: .line 314
            iload 6 /* pos */
            iconst_m1
            if_icmpeq 19
         8: .line 315
            iload 8 /* cur */
            istore 9 /* iter */
        start local 9 // int iter
         9: goto 17
        10: .line 316
      StackMap locals: int
      StackMap stack:
            aload 0 /* sb */
            iload 9 /* iter */
            invokevirtual java.lang.StringBuilder.charAt:(I)C
            istore 10 /* c */
        start local 10 // char c
        11: .line 317
            iload 10 /* c */
            bipush 40
            if_icmpne 14
        12: .line 318
            iinc 7 /* depth */ 1
        13: .line 319
            goto 16
        14: .line 320
      StackMap locals: int
      StackMap stack:
            iload 10 /* c */
            bipush 41
            if_icmpne 16
        15: .line 321
            iinc 7 /* depth */ -1
        end local 10 // char c
        16: .line 315
      StackMap locals:
      StackMap stack:
            iinc 9 /* iter */ 1
      StackMap locals:
      StackMap stack:
        17: iload 9 /* iter */
            iload 6 /* pos */
            if_icmplt 10
        end local 9 // int iter
        18: .line 324
            iload 6 /* pos */
            iload 5 /* searchlen */
            iadd
            istore 8 /* cur */
        19: .line 326
      StackMap locals:
      StackMap stack:
            iload 8 /* cur */
            iload 4 /* len */
            if_icmpge 20
            iload 7 /* depth */
            ifeq 20
            iload 6 /* pos */
            iconst_m1
            if_icmpne 6
        20: .line 327
      StackMap locals:
      StackMap stack:
            iload 7 /* depth */
            ifne 21
            iload 6 /* pos */
            goto 22
      StackMap locals:
      StackMap stack:
        21: iconst_m1
      StackMap locals:
      StackMap stack: int
        22: ireturn
        end local 8 // int cur
        end local 7 // int depth
        end local 6 // int pos
        end local 5 // int searchlen
        end local 4 // int len
        end local 3 // java.lang.String lowercase
        end local 2 // int fromIndex
        end local 1 // java.lang.String search
        end local 0 // java.lang.StringBuilder sb
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   23     0         sb  Ljava/lang/StringBuilder;
            0   23     1     search  Ljava/lang/String;
            0   23     2  fromIndex  I
            1   23     3  lowercase  Ljava/lang/String;
            2   23     4        len  I
            3   23     5  searchlen  I
            4   23     6        pos  I
            5   23     7      depth  I
            6   23     8        cur  I
            9   18     9       iter  I
           11   16    10          c  C
    MethodParameters:
           Name  Flags
      sb         
      search     
      fromIndex  
}
SourceFile: "SQLServer2005LimitHandler.java"