public class org.hsqldb.lib.KMPSearchAlgorithm
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.hsqldb.lib.KMPSearchAlgorithm
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.hsqldb.lib.KMPSearchAlgorithm this
         0: .line 91
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.hsqldb.lib.KMPSearchAlgorithm this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/hsqldb/lib/KMPSearchAlgorithm;

  public static long search(java.io.InputStream, byte[], int[]);
    descriptor: (Ljava/io/InputStream;[B[I)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // java.io.InputStream inputStream
        start local 1 // byte[] pattern
        start local 2 // int[] table
         0: .line 113
            aload 0 /* inputStream */
            ifnull 1
            aload 1 /* pattern */
            ifnull 1
            aload 1 /* pattern */
            arraylength
            ifne 2
         1: .line 114
      StackMap locals:
      StackMap stack:
            ldc -1
            lreturn
         2: .line 118
      StackMap locals:
      StackMap stack:
            aload 1 /* pattern */
            arraylength
            istore 3 /* patternLength */
        start local 3 // int patternLength
         3: .line 121
            ldc -1
            lstore 4 /* streamIndex */
        start local 4 // long streamIndex
         4: .line 124
            iload 3 /* patternLength */
            iconst_1
            if_icmpne 13
         5: .line 125
            aload 1 /* pattern */
            iconst_0
            baload
            istore 7 /* byteToFind */
        start local 7 // int byteToFind
         6: .line 127
            goto 10
        start local 6 // int currentByte
         7: .line 128
      StackMap locals: java.io.InputStream byte[] int[] int long int int
      StackMap stack:
            lload 4 /* streamIndex */
            lconst_1
            ladd
            lstore 4 /* streamIndex */
         8: .line 130
            iload 6 /* currentByte */
            iload 7 /* byteToFind */
            if_icmpne 10
         9: .line 131
            lload 4 /* streamIndex */
            lreturn
        end local 6 // int currentByte
        10: .line 127
      StackMap locals: java.io.InputStream byte[] int[] int long top int
      StackMap stack:
            iconst_m1
            aload 0 /* inputStream */
            invokevirtual java.io.InputStream.read:()I
            dup
            istore 6 /* currentByte */
        start local 6 // int currentByte
        11: if_icmpne 7
        12: .line 135
            ldc -1
            lreturn
        end local 7 // int byteToFind
        end local 6 // int currentByte
        13: .line 138
      StackMap locals: java.io.InputStream byte[] int[] int long
      StackMap stack:
            iconst_0
            istore 7 /* patternIndex */
        start local 7 // int patternIndex
        14: .line 140
            aload 2 /* table */
            ifnonnull 26
        15: .line 141
            aload 1 /* pattern */
            invokestatic org.hsqldb.lib.KMPSearchAlgorithm.computeTable:([B)[I
            astore 2 /* table */
        16: .line 144
            goto 26
        start local 6 // int currentByte
        17: .line 145
      StackMap locals: int int
      StackMap stack:
            lload 4 /* streamIndex */
            lconst_1
            ladd
            lstore 4 /* streamIndex */
        18: .line 147
            iload 6 /* currentByte */
            aload 1 /* pattern */
            iload 7 /* patternIndex */
            baload
            if_icmpne 21
        19: .line 148
            iinc 7 /* patternIndex */ 1
        20: .line 149
            goto 24
      StackMap locals:
      StackMap stack:
        21: iload 7 /* patternIndex */
            ifle 24
        22: .line 150
            aload 2 /* table */
            iload 7 /* patternIndex */
            iaload
            istore 7 /* patternIndex */
        23: .line 152
            iinc 7 /* patternIndex */ 1
        24: .line 155
      StackMap locals:
      StackMap stack:
            iload 7 /* patternIndex */
            iload 3 /* patternLength */
            if_icmpne 26
        25: .line 156
            lload 4 /* streamIndex */
            iload 3 /* patternLength */
            iconst_1
            isub
            i2l
            lsub
            lreturn
        end local 6 // int currentByte
        26: .line 144
      StackMap locals: java.io.InputStream byte[] int[] int long top int
      StackMap stack:
            iconst_m1
            aload 0 /* inputStream */
            invokevirtual java.io.InputStream.read:()I
            dup
            istore 6 /* currentByte */
        start local 6 // int currentByte
        27: if_icmpne 17
        28: .line 160
            ldc -1
            lreturn
        end local 7 // int patternIndex
        end local 6 // int currentByte
        end local 4 // long streamIndex
        end local 3 // int patternLength
        end local 2 // int[] table
        end local 1 // byte[] pattern
        end local 0 // java.io.InputStream inputStream
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   29     0    inputStream  Ljava/io/InputStream;
            0   29     1        pattern  [B
            0   29     2          table  [I
            3   29     3  patternLength  I
            4   29     4    streamIndex  J
            7   10     6    currentByte  I
           11   13     6    currentByte  I
           17   26     6    currentByte  I
           27   29     6    currentByte  I
            6   13     7     byteToFind  I
           14   29     7   patternIndex  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      inputStream  final
      pattern      final
      table        

  public static long search(java.io.Reader, char[], int[]);
    descriptor: (Ljava/io/Reader;[C[I)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // java.io.Reader reader
        start local 1 // char[] pattern
        start local 2 // int[] table
         0: .line 182
            aload 0 /* reader */
            ifnull 1
            aload 1 /* pattern */
            ifnull 1
            aload 1 /* pattern */
            arraylength
            ifne 2
         1: .line 183
      StackMap locals:
      StackMap stack:
            ldc -1
            lreturn
         2: .line 187
      StackMap locals:
      StackMap stack:
            aload 1 /* pattern */
            arraylength
            istore 3 /* patternLength */
        start local 3 // int patternLength
         3: .line 190
            ldc -1
            lstore 4 /* streamIndex */
        start local 4 // long streamIndex
         4: .line 193
            iload 3 /* patternLength */
            iconst_1
            if_icmpne 13
         5: .line 194
            aload 1 /* pattern */
            iconst_0
            caload
            istore 7 /* characterToFind */
        start local 7 // int characterToFind
         6: .line 196
            goto 10
        start local 6 // int currentCharacter
         7: .line 197
      StackMap locals: java.io.Reader char[] int[] int long int int
      StackMap stack:
            lload 4 /* streamIndex */
            lconst_1
            ladd
            lstore 4 /* streamIndex */
         8: .line 199
            iload 6 /* currentCharacter */
            iload 7 /* characterToFind */
            if_icmpne 10
         9: .line 200
            lload 4 /* streamIndex */
            lreturn
        end local 6 // int currentCharacter
        10: .line 196
      StackMap locals: java.io.Reader char[] int[] int long top int
      StackMap stack:
            iconst_m1
            aload 0 /* reader */
            invokevirtual java.io.Reader.read:()I
            dup
            istore 6 /* currentCharacter */
        start local 6 // int currentCharacter
        11: if_icmpne 7
        12: .line 204
            ldc -1
            lreturn
        end local 7 // int characterToFind
        end local 6 // int currentCharacter
        13: .line 207
      StackMap locals: java.io.Reader char[] int[] int long
      StackMap stack:
            iconst_0
            istore 7 /* patternIndex */
        start local 7 // int patternIndex
        14: .line 209
            aload 2 /* table */
            ifnonnull 26
        15: .line 210
            aload 1 /* pattern */
            invokestatic org.hsqldb.lib.KMPSearchAlgorithm.computeTable:([C)[I
            astore 2 /* table */
        16: .line 213
            goto 26
        start local 6 // int currentCharacter
        17: .line 214
      StackMap locals: int int
      StackMap stack:
            lload 4 /* streamIndex */
            lconst_1
            ladd
            lstore 4 /* streamIndex */
        18: .line 216
            iload 6 /* currentCharacter */
            aload 1 /* pattern */
            iload 7 /* patternIndex */
            caload
            if_icmpne 21
        19: .line 217
            iinc 7 /* patternIndex */ 1
        20: .line 218
            goto 24
      StackMap locals:
      StackMap stack:
        21: iload 7 /* patternIndex */
            ifle 24
        22: .line 219
            aload 2 /* table */
            iload 7 /* patternIndex */
            iaload
            istore 7 /* patternIndex */
        23: .line 221
            iinc 7 /* patternIndex */ 1
        24: .line 224
      StackMap locals:
      StackMap stack:
            iload 7 /* patternIndex */
            iload 3 /* patternLength */
            if_icmpne 26
        25: .line 225
            lload 4 /* streamIndex */
            iload 3 /* patternLength */
            iconst_1
            isub
            i2l
            lsub
            lreturn
        end local 6 // int currentCharacter
        26: .line 213
      StackMap locals: java.io.Reader char[] int[] int long top int
      StackMap stack:
            iconst_m1
            aload 0 /* reader */
            invokevirtual java.io.Reader.read:()I
            dup
            istore 6 /* currentCharacter */
        start local 6 // int currentCharacter
        27: if_icmpne 17
        28: .line 229
            ldc -1
            lreturn
        end local 7 // int patternIndex
        end local 6 // int currentCharacter
        end local 4 // long streamIndex
        end local 3 // int patternLength
        end local 2 // int[] table
        end local 1 // char[] pattern
        end local 0 // java.io.Reader reader
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   29     0            reader  Ljava/io/Reader;
            0   29     1           pattern  [C
            0   29     2             table  [I
            3   29     3     patternLength  I
            4   29     4       streamIndex  J
            7   10     6  currentCharacter  I
           11   13     6  currentCharacter  I
           17   26     6  currentCharacter  I
           27   29     6  currentCharacter  I
            6   13     7   characterToFind  I
           14   29     7      patternIndex  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      reader   final
      pattern  final
      table    

  public static int search(byte[], byte[], int[], int);
    descriptor: ([B[B[II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=10, args_size=4
        start local 0 // byte[] source
        start local 1 // byte[] pattern
        start local 2 // int[] table
        start local 3 // int start
         0: .line 250
            aload 0 /* source */
            ifnull 1
            aload 1 /* pattern */
            ifnull 1
            aload 1 /* pattern */
            arraylength
            ifne 2
         1: .line 251
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
         2: .line 255
      StackMap locals:
      StackMap stack:
            aload 0 /* source */
            arraylength
            istore 4 /* sourceLength */
        start local 4 // int sourceLength
         3: .line 256
            aload 1 /* pattern */
            arraylength
            istore 5 /* patternLength */
        start local 5 // int patternLength
         4: .line 259
            iload 3 /* start */
            istore 6 /* sourceIndex */
        start local 6 // int sourceIndex
         5: .line 261
            iload 5 /* patternLength */
            iconst_1
            if_icmpne 13
         6: .line 262
            aload 1 /* pattern */
            iconst_0
            baload
            istore 7 /* byteToFind */
        start local 7 // int byteToFind
         7: .line 264
            goto 11
         8: .line 265
      StackMap locals: byte[] byte[] int[] int int int int int
      StackMap stack:
            aload 0 /* source */
            iload 6 /* sourceIndex */
            baload
            iload 7 /* byteToFind */
            if_icmpne 10
         9: .line 266
            iload 6 /* sourceIndex */
            ireturn
        10: .line 264
      StackMap locals:
      StackMap stack:
            iinc 6 /* sourceIndex */ 1
      StackMap locals:
      StackMap stack:
        11: iload 6 /* sourceIndex */
            iload 4 /* sourceLength */
            if_icmplt 8
        12: .line 270
            iconst_m1
            ireturn
        end local 7 // int byteToFind
        13: .line 274
      StackMap locals:
      StackMap stack:
            iload 3 /* start */
            istore 7 /* matchStart */
        start local 7 // int matchStart
        14: .line 275
            iconst_0
            istore 8 /* patternIndex */
        start local 8 // int patternIndex
        15: .line 278
            aload 2 /* table */
            ifnonnull 27
        16: .line 279
            aload 1 /* pattern */
            invokestatic org.hsqldb.lib.KMPSearchAlgorithm.computeTable:([B)[I
            astore 2 /* table */
        17: .line 283
            goto 27
        18: .line 285
      StackMap locals: int int
      StackMap stack:
            aload 0 /* source */
            iload 6 /* sourceIndex */
            baload
            aload 1 /* pattern */
            iload 8 /* patternIndex */
            baload
            if_icmpne 21
        19: .line 286
            iinc 8 /* patternIndex */ 1
        20: .line 287
            goto 26
        21: .line 288
      StackMap locals:
      StackMap stack:
            aload 2 /* table */
            iload 8 /* patternIndex */
            iaload
            istore 9 /* tableValue */
        start local 9 // int tableValue
        22: .line 290
            iload 7 /* matchStart */
            iload 8 /* patternIndex */
            iload 9 /* tableValue */
            isub
            iadd
            istore 7 /* matchStart */
        23: .line 292
            iload 8 /* patternIndex */
            ifle 25
        24: .line 293
            iload 9 /* tableValue */
            istore 8 /* patternIndex */
        25: .line 296
      StackMap locals: int
      StackMap stack:
            iinc 8 /* patternIndex */ 1
        end local 9 // int tableValue
        26: .line 299
      StackMap locals:
      StackMap stack:
            iload 7 /* matchStart */
            iload 8 /* patternIndex */
            iadd
            istore 6 /* sourceIndex */
        27: .line 283
      StackMap locals:
      StackMap stack:
            iload 6 /* sourceIndex */
            iload 4 /* sourceLength */
            if_icmpge 30
        28: .line 284
            iload 8 /* patternIndex */
            iload 5 /* patternLength */
        29: .line 283
            if_icmplt 18
        30: .line 302
      StackMap locals:
      StackMap stack:
            iload 8 /* patternIndex */
            iload 5 /* patternLength */
            if_icmpne 32
        31: .line 303
            iload 7 /* matchStart */
            ireturn
        32: .line 305
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
        end local 8 // int patternIndex
        end local 7 // int matchStart
        end local 6 // int sourceIndex
        end local 5 // int patternLength
        end local 4 // int sourceLength
        end local 3 // int start
        end local 2 // int[] table
        end local 1 // byte[] pattern
        end local 0 // byte[] source
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   33     0         source  [B
            0   33     1        pattern  [B
            0   33     2          table  [I
            0   33     3          start  I
            3   33     4   sourceLength  I
            4   33     5  patternLength  I
            5   33     6    sourceIndex  I
            7   13     7     byteToFind  I
           14   33     7     matchStart  I
           15   33     8   patternIndex  I
           22   26     9     tableValue  I
    MethodParameters:
         Name  Flags
      source   final
      pattern  final
      table    
      start    final

  public static int search(char[], char[], int[], int);
    descriptor: ([C[C[II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=10, args_size=4
        start local 0 // char[] source
        start local 1 // char[] pattern
        start local 2 // int[] table
        start local 3 // int start
         0: .line 323
            aload 0 /* source */
            ifnull 1
            aload 1 /* pattern */
            ifnull 1
            aload 1 /* pattern */
            arraylength
            ifne 2
         1: .line 324
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
         2: .line 327
      StackMap locals:
      StackMap stack:
            aload 0 /* source */
            arraylength
            istore 4 /* sourceLength */
        start local 4 // int sourceLength
         3: .line 328
            aload 1 /* pattern */
            arraylength
            istore 5 /* patternLength */
        start local 5 // int patternLength
         4: .line 329
            iload 3 /* start */
            istore 6 /* sourceIndex */
        start local 6 // int sourceIndex
         5: .line 331
            iload 5 /* patternLength */
            iconst_1
            if_icmpne 13
         6: .line 332
            aload 1 /* pattern */
            iconst_0
            caload
            istore 7 /* characterToFind */
        start local 7 // int characterToFind
         7: .line 334
            goto 11
         8: .line 335
      StackMap locals: char[] char[] int[] int int int int int
      StackMap stack:
            aload 0 /* source */
            iload 6 /* sourceIndex */
            caload
            iload 7 /* characterToFind */
            if_icmpne 10
         9: .line 336
            iload 6 /* sourceIndex */
            ireturn
        10: .line 334
      StackMap locals:
      StackMap stack:
            iinc 6 /* sourceIndex */ 1
      StackMap locals:
      StackMap stack:
        11: iload 6 /* sourceIndex */
            iload 4 /* sourceLength */
            if_icmplt 8
        12: .line 340
            iconst_m1
            ireturn
        end local 7 // int characterToFind
        13: .line 344
      StackMap locals:
      StackMap stack:
            iload 3 /* start */
            istore 7 /* matchStart */
        start local 7 // int matchStart
        14: .line 345
            iconst_0
            istore 8 /* patternIndex */
        start local 8 // int patternIndex
        15: .line 348
            aload 2 /* table */
            ifnonnull 27
        16: .line 349
            aload 1 /* pattern */
            invokestatic org.hsqldb.lib.KMPSearchAlgorithm.computeTable:([C)[I
            astore 2 /* table */
        17: .line 353
            goto 27
        18: .line 355
      StackMap locals: int int
      StackMap stack:
            aload 0 /* source */
            iload 6 /* sourceIndex */
            caload
            aload 1 /* pattern */
            iload 8 /* patternIndex */
            caload
            if_icmpne 21
        19: .line 356
            iinc 8 /* patternIndex */ 1
        20: .line 357
            goto 26
        21: .line 358
      StackMap locals:
      StackMap stack:
            aload 2 /* table */
            iload 8 /* patternIndex */
            iaload
            istore 9 /* tableValue */
        start local 9 // int tableValue
        22: .line 360
            iload 7 /* matchStart */
            iload 8 /* patternIndex */
            iload 9 /* tableValue */
            isub
            iadd
            istore 7 /* matchStart */
        23: .line 362
            iload 8 /* patternIndex */
            ifle 25
        24: .line 363
            iload 9 /* tableValue */
            istore 8 /* patternIndex */
        25: .line 366
      StackMap locals: int
      StackMap stack:
            iinc 8 /* patternIndex */ 1
        end local 9 // int tableValue
        26: .line 369
      StackMap locals:
      StackMap stack:
            iload 7 /* matchStart */
            iload 8 /* patternIndex */
            iadd
            istore 6 /* sourceIndex */
        27: .line 353
      StackMap locals:
      StackMap stack:
            iload 6 /* sourceIndex */
            iload 4 /* sourceLength */
            if_icmpge 30
        28: .line 354
            iload 8 /* patternIndex */
            iload 5 /* patternLength */
        29: .line 353
            if_icmplt 18
        30: .line 372
      StackMap locals:
      StackMap stack:
            iload 8 /* patternIndex */
            iload 5 /* patternLength */
            if_icmpne 32
        31: .line 373
            iload 7 /* matchStart */
            ireturn
        32: .line 375
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
        end local 8 // int patternIndex
        end local 7 // int matchStart
        end local 6 // int sourceIndex
        end local 5 // int patternLength
        end local 4 // int sourceLength
        end local 3 // int start
        end local 2 // int[] table
        end local 1 // char[] pattern
        end local 0 // char[] source
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   33     0           source  [C
            0   33     1          pattern  [C
            0   33     2            table  [I
            0   33     3            start  I
            3   33     4     sourceLength  I
            4   33     5    patternLength  I
            5   33     6      sourceIndex  I
            7   13     7  characterToFind  I
           14   33     7       matchStart  I
           15   33     8     patternIndex  I
           22   26     9       tableValue  I
    MethodParameters:
         Name  Flags
      source   final
      pattern  final
      table    
      start    final

  public static int search(java.lang.String, java.lang.String, int[], int);
    descriptor: (Ljava/lang/String;Ljava/lang/String;[II)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=10, args_size=4
        start local 0 // java.lang.String source
        start local 1 // java.lang.String pattern
        start local 2 // int[] table
        start local 3 // int start
         0: .line 392
            aload 0 /* source */
            ifnull 1
            aload 1 /* pattern */
            ifnull 1
            aload 1 /* pattern */
            invokevirtual java.lang.String.length:()I
            ifne 2
         1: .line 393
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
         2: .line 396
      StackMap locals:
      StackMap stack:
            aload 1 /* pattern */
            invokevirtual java.lang.String.length:()I
            istore 4 /* patternLength */
        start local 4 // int patternLength
         3: .line 399
            iload 4 /* patternLength */
            iconst_1
            if_icmpne 5
         4: .line 400
            aload 0 /* source */
            aload 1 /* pattern */
            iload 3 /* start */
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;I)I
            ireturn
         5: .line 404
      StackMap locals: int
      StackMap stack:
            aload 0 /* source */
            invokevirtual java.lang.String.length:()I
            istore 5 /* sourceLength */
        start local 5 // int sourceLength
         6: .line 407
            iload 3 /* start */
            istore 6 /* matchStart */
        start local 6 // int matchStart
         7: .line 408
            iload 3 /* start */
            istore 7 /* sourceIndex */
        start local 7 // int sourceIndex
         8: .line 409
            iconst_0
            istore 8 /* patternIndex */
        start local 8 // int patternIndex
         9: .line 412
            aload 2 /* table */
            ifnonnull 21
        10: .line 413
            aload 1 /* pattern */
            invokestatic org.hsqldb.lib.KMPSearchAlgorithm.computeTable:(Ljava/lang/String;)[I
            astore 2 /* table */
        11: .line 417
            goto 21
        12: .line 419
      StackMap locals: java.lang.String java.lang.String int[] int int int int int int
      StackMap stack:
            aload 0 /* source */
            iload 7 /* sourceIndex */
            invokevirtual java.lang.String.charAt:(I)C
            aload 1 /* pattern */
            iload 8 /* patternIndex */
            invokevirtual java.lang.String.charAt:(I)C
            if_icmpne 15
        13: .line 420
            iinc 8 /* patternIndex */ 1
        14: .line 421
            goto 20
        15: .line 422
      StackMap locals:
      StackMap stack:
            aload 2 /* table */
            iload 8 /* patternIndex */
            iaload
            istore 9 /* tableValue */
        start local 9 // int tableValue
        16: .line 424
            iload 6 /* matchStart */
            iload 8 /* patternIndex */
            iload 9 /* tableValue */
            isub
            iadd
            istore 6 /* matchStart */
        17: .line 426
            iload 8 /* patternIndex */
            ifle 19
        18: .line 427
            iload 9 /* tableValue */
            istore 8 /* patternIndex */
        19: .line 430
      StackMap locals: int
      StackMap stack:
            iinc 8 /* patternIndex */ 1
        end local 9 // int tableValue
        20: .line 433
      StackMap locals:
      StackMap stack:
            iload 6 /* matchStart */
            iload 8 /* patternIndex */
            iadd
            istore 7 /* sourceIndex */
        21: .line 417
      StackMap locals:
      StackMap stack:
            iload 7 /* sourceIndex */
            iload 5 /* sourceLength */
            if_icmpge 24
        22: .line 418
            iload 8 /* patternIndex */
            iload 4 /* patternLength */
        23: .line 417
            if_icmplt 12
        24: .line 436
      StackMap locals:
      StackMap stack:
            iload 8 /* patternIndex */
            iload 4 /* patternLength */
            if_icmpne 26
        25: .line 437
            iload 6 /* matchStart */
            ireturn
        26: .line 439
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
        end local 8 // int patternIndex
        end local 7 // int sourceIndex
        end local 6 // int matchStart
        end local 5 // int sourceLength
        end local 4 // int patternLength
        end local 3 // int start
        end local 2 // int[] table
        end local 1 // java.lang.String pattern
        end local 0 // java.lang.String source
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   27     0         source  Ljava/lang/String;
            0   27     1        pattern  Ljava/lang/String;
            0   27     2          table  [I
            0   27     3          start  I
            3   27     4  patternLength  I
            6   27     5   sourceLength  I
            7   27     6     matchStart  I
            8   27     7    sourceIndex  I
            9   27     8   patternIndex  I
           16   20     9     tableValue  I
    MethodParameters:
         Name  Flags
      source   final
      pattern  final
      table    
      start    final

  public static int[] computeTable(byte[]);
    descriptor: ([B)[I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // byte[] pattern
         0: .line 451
            aload 0 /* pattern */
            ifnonnull 2
         1: .line 452
            new java.lang.IllegalArgumentException
            dup
            ldc "Pattern must  not be null."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 453
      StackMap locals:
      StackMap stack:
            aload 0 /* pattern */
            arraylength
            iconst_2
            if_icmpge 4
         3: .line 454
            new java.lang.IllegalArgumentException
            dup
            ldc "Pattern length must be > 1."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 458
      StackMap locals:
      StackMap stack:
            aload 0 /* pattern */
            arraylength
            newarray 10
            astore 1 /* table */
        start local 1 // int[] table
         5: .line 459
            iconst_2
            istore 2 /* i */
        start local 2 // int i
         6: .line 460
            iconst_0
            istore 3 /* j */
        start local 3 // int j
         7: .line 463
            aload 1 /* table */
            iconst_0
            iconst_m1
            iastore
         8: .line 464
            aload 1 /* table */
            iconst_1
            iconst_0
            iastore
         9: .line 467
            goto 21
        10: .line 468
      StackMap locals: int[] int int
      StackMap stack:
            aload 0 /* pattern */
            iload 2 /* i */
            iconst_1
            isub
            baload
            aload 0 /* pattern */
            iload 3 /* j */
            baload
            if_icmpne 15
        11: .line 469
            aload 1 /* table */
            iload 2 /* i */
            iload 3 /* j */
            iconst_1
            iadd
            iastore
        12: .line 471
            iinc 3 /* j */ 1
        13: .line 472
            iinc 2 /* i */ 1
        14: .line 473
            goto 21
      StackMap locals:
      StackMap stack:
        15: iload 3 /* j */
            ifle 18
        16: .line 474
            aload 1 /* table */
            iload 3 /* j */
            iaload
            istore 3 /* j */
        17: .line 475
            goto 21
        18: .line 476
      StackMap locals:
      StackMap stack:
            aload 1 /* table */
            iload 2 /* i */
            iconst_0
            iastore
        19: .line 478
            iinc 2 /* i */ 1
        20: .line 480
            iconst_0
            istore 3 /* j */
        21: .line 467
      StackMap locals:
      StackMap stack:
            iload 2 /* i */
            aload 0 /* pattern */
            arraylength
            if_icmplt 10
        22: .line 485
            aload 1 /* table */
            areturn
        end local 3 // int j
        end local 2 // int i
        end local 1 // int[] table
        end local 0 // byte[] pattern
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   23     0  pattern  [B
            5   23     1    table  [I
            6   23     2        i  I
            7   23     3        j  I
    MethodParameters:
         Name  Flags
      pattern  final

  public static int[] computeTable(char[]);
    descriptor: ([C)[I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // char[] pattern
         0: .line 490
            aload 0 /* pattern */
            ifnonnull 2
         1: .line 491
            new java.lang.IllegalArgumentException
            dup
            ldc "Pattern must  not be null."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 492
      StackMap locals:
      StackMap stack:
            aload 0 /* pattern */
            arraylength
            iconst_2
            if_icmpge 4
         3: .line 493
            new java.lang.IllegalArgumentException
            dup
            ldc "Pattern length must be > 1."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 496
      StackMap locals:
      StackMap stack:
            aload 0 /* pattern */
            arraylength
            newarray 10
            astore 1 /* table */
        start local 1 // int[] table
         5: .line 497
            iconst_2
            istore 2 /* i */
        start local 2 // int i
         6: .line 498
            iconst_0
            istore 3 /* j */
        start local 3 // int j
         7: .line 500
            aload 1 /* table */
            iconst_0
            iconst_m1
            iastore
         8: .line 501
            aload 1 /* table */
            iconst_1
            iconst_0
            iastore
         9: .line 503
            goto 21
        10: .line 504
      StackMap locals: int[] int int
      StackMap stack:
            aload 0 /* pattern */
            iload 2 /* i */
            iconst_1
            isub
            caload
            aload 0 /* pattern */
            iload 3 /* j */
            caload
            if_icmpne 15
        11: .line 505
            aload 1 /* table */
            iload 2 /* i */
            iload 3 /* j */
            iconst_1
            iadd
            iastore
        12: .line 507
            iinc 3 /* j */ 1
        13: .line 508
            iinc 2 /* i */ 1
        14: .line 509
            goto 21
      StackMap locals:
      StackMap stack:
        15: iload 3 /* j */
            ifle 18
        16: .line 510
            aload 1 /* table */
            iload 3 /* j */
            iaload
            istore 3 /* j */
        17: .line 511
            goto 21
        18: .line 512
      StackMap locals:
      StackMap stack:
            aload 1 /* table */
            iload 2 /* i */
            iconst_0
            iastore
        19: .line 514
            iinc 2 /* i */ 1
        20: .line 516
            iconst_0
            istore 3 /* j */
        21: .line 503
      StackMap locals:
      StackMap stack:
            iload 2 /* i */
            aload 0 /* pattern */
            arraylength
            if_icmplt 10
        22: .line 520
            aload 1 /* table */
            areturn
        end local 3 // int j
        end local 2 // int i
        end local 1 // int[] table
        end local 0 // char[] pattern
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   23     0  pattern  [C
            5   23     1    table  [I
            6   23     2        i  I
            7   23     3        j  I
    MethodParameters:
         Name  Flags
      pattern  final

  public static int[] computeTable(java.lang.String);
    descriptor: (Ljava/lang/String;)[I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // java.lang.String pattern
         0: .line 525
            aload 0 /* pattern */
            ifnonnull 2
         1: .line 526
            new java.lang.IllegalArgumentException
            dup
            ldc "Pattern must  not be null."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 527
      StackMap locals:
      StackMap stack:
            aload 0 /* pattern */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmpge 4
         3: .line 528
            new java.lang.IllegalArgumentException
            dup
            ldc "Pattern length must be > 1."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 531
      StackMap locals:
      StackMap stack:
            aload 0 /* pattern */
            invokevirtual java.lang.String.length:()I
            istore 1 /* patternLength */
        start local 1 // int patternLength
         5: .line 534
            iload 1 /* patternLength */
            newarray 10
            astore 2 /* table */
        start local 2 // int[] table
         6: .line 535
            iconst_2
            istore 3 /* i */
        start local 3 // int i
         7: .line 536
            iconst_0
            istore 4 /* j */
        start local 4 // int j
         8: .line 538
            aload 2 /* table */
            iconst_0
            iconst_m1
            iastore
         9: .line 539
            aload 2 /* table */
            iconst_1
            iconst_0
            iastore
        10: .line 541
            goto 22
        11: .line 542
      StackMap locals: java.lang.String int int[] int int
      StackMap stack:
            aload 0 /* pattern */
            iload 3 /* i */
            iconst_1
            isub
            invokevirtual java.lang.String.charAt:(I)C
            aload 0 /* pattern */
            iload 4 /* j */
            invokevirtual java.lang.String.charAt:(I)C
            if_icmpne 16
        12: .line 543
            aload 2 /* table */
            iload 3 /* i */
            iload 4 /* j */
            iconst_1
            iadd
            iastore
        13: .line 545
            iinc 4 /* j */ 1
        14: .line 546
            iinc 3 /* i */ 1
        15: .line 547
            goto 22
      StackMap locals:
      StackMap stack:
        16: iload 4 /* j */
            ifle 19
        17: .line 548
            aload 2 /* table */
            iload 4 /* j */
            iaload
            istore 4 /* j */
        18: .line 549
            goto 22
        19: .line 550
      StackMap locals:
      StackMap stack:
            aload 2 /* table */
            iload 3 /* i */
            iconst_0
            iastore
        20: .line 552
            iinc 3 /* i */ 1
        21: .line 554
            iconst_0
            istore 4 /* j */
        22: .line 541
      StackMap locals:
      StackMap stack:
            iload 3 /* i */
            iload 1 /* patternLength */
            if_icmplt 11
        23: .line 558
            aload 2 /* table */
            areturn
        end local 4 // int j
        end local 3 // int i
        end local 2 // int[] table
        end local 1 // int patternLength
        end local 0 // java.lang.String pattern
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   24     0        pattern  Ljava/lang/String;
            5   24     1  patternLength  I
            6   24     2          table  [I
            7   24     3              i  I
            8   24     4              j  I
    MethodParameters:
         Name  Flags
      pattern  final
}
SourceFile: "KMPSearchAlgorithm.java"