public final class com.oracle.truffle.api.ArrayUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.api.ArrayUtils
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.ArrayUtils this
         0: .line 53
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 54
            return
        end local 0 // com.oracle.truffle.api.ArrayUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/ArrayUtils;

  public static int indexOf(java.lang.String, int, int, char[]);
    descriptor: (Ljava/lang/String;II[C)I
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // java.lang.String haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // char[] needle
         0: .line 66
            aload 0 /* haystack */
            invokevirtual java.lang.String.length:()I
            iload 1 /* fromIndex */
            iload 2 /* maxIndex */
            aload 3 /* needle */
            arraylength
            invokestatic com.oracle.truffle.api.ArrayUtils.checkArgs:(IIII)V
         1: .line 67
            aload 0 /* haystack */
            iload 1 /* fromIndex */
            iload 2 /* maxIndex */
            aload 3 /* needle */
            invokestatic com.oracle.truffle.api.ArrayUtils.runIndexOf:(Ljava/lang/String;II[C)I
            ireturn
        end local 3 // char[] needle
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // java.lang.String haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0   haystack  Ljava/lang/String;
            0    2     1  fromIndex  I
            0    2     2   maxIndex  I
            0    2     3     needle  [C
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      needle     

  private static int runIndexOf(java.lang.String, int, int, char[]);
    descriptor: (Ljava/lang/String;II[C)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=9, args_size=4
        start local 0 // java.lang.String haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // char[] needle
         0: .line 71
            iload 1 /* fromIndex */
            istore 4 /* i */
        start local 4 // int i
         1: goto 9
         2: .line 72
      StackMap locals: int
      StackMap stack:
            aload 3 /* needle */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 7
      StackMap locals: java.lang.String int int char[] int top int int char[]
      StackMap stack:
         3: aload 8
            iload 6
            caload
            istore 5 /* c */
        start local 5 // char c
         4: .line 73
            aload 0 /* haystack */
            iload 4 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            iload 5 /* c */
            if_icmpne 6
         5: .line 74
            iload 4 /* i */
            ireturn
        end local 5 // char c
         6: .line 72
      StackMap locals:
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
         7: iload 6
            iload 7
            if_icmplt 3
         8: .line 71
            iinc 4 /* i */ 1
      StackMap locals: java.lang.String int int char[] int
      StackMap stack:
         9: iload 4 /* i */
            iload 2 /* maxIndex */
            if_icmplt 2
        end local 4 // int i
        10: .line 78
            iconst_m1
            ireturn
        end local 3 // char[] needle
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // java.lang.String haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0   haystack  Ljava/lang/String;
            0   11     1  fromIndex  I
            0   11     2   maxIndex  I
            0   11     3     needle  [C
            1   10     4          i  I
            4    6     5          c  C
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      needle     

  public static int indexOf(char[], int, int, char[]);
    descriptor: ([CII[C)I
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // char[] haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // char[] needle
         0: .line 91
            aload 0 /* haystack */
            arraylength
            iload 1 /* fromIndex */
            iload 2 /* maxIndex */
            aload 3 /* needle */
            arraylength
            invokestatic com.oracle.truffle.api.ArrayUtils.checkArgs:(IIII)V
         1: .line 92
            aload 0 /* haystack */
            iload 1 /* fromIndex */
            iload 2 /* maxIndex */
            aload 3 /* needle */
            invokestatic com.oracle.truffle.api.ArrayUtils.runIndexOf:([CII[C)I
            ireturn
        end local 3 // char[] needle
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // char[] haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0   haystack  [C
            0    2     1  fromIndex  I
            0    2     2   maxIndex  I
            0    2     3     needle  [C
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      needle     

  private static int runIndexOf(char[], int, int, char[]);
    descriptor: ([CII[C)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=9, args_size=4
        start local 0 // char[] haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // char[] needle
         0: .line 96
            iload 1 /* fromIndex */
            istore 4 /* i */
        start local 4 // int i
         1: goto 9
         2: .line 97
      StackMap locals: int
      StackMap stack:
            aload 3 /* needle */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 7
      StackMap locals: char[] int int char[] int top int int char[]
      StackMap stack:
         3: aload 8
            iload 6
            caload
            istore 5 /* c */
        start local 5 // char c
         4: .line 98
            aload 0 /* haystack */
            iload 4 /* i */
            caload
            iload 5 /* c */
            if_icmpne 6
         5: .line 99
            iload 4 /* i */
            ireturn
        end local 5 // char c
         6: .line 97
      StackMap locals:
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
         7: iload 6
            iload 7
            if_icmplt 3
         8: .line 96
            iinc 4 /* i */ 1
      StackMap locals: char[] int int char[] int
      StackMap stack:
         9: iload 4 /* i */
            iload 2 /* maxIndex */
            if_icmplt 2
        end local 4 // int i
        10: .line 103
            iconst_m1
            ireturn
        end local 3 // char[] needle
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // char[] haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0   haystack  [C
            0   11     1  fromIndex  I
            0   11     2   maxIndex  I
            0   11     3     needle  [C
            1   10     4          i  I
            4    6     5          c  C
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      needle     

  public static int indexOf(byte[], int, int, byte[]);
    descriptor: ([BII[B)I
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // byte[] haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // byte[] needle
         0: .line 116
            aload 0 /* haystack */
            arraylength
            iload 1 /* fromIndex */
            iload 2 /* maxIndex */
            aload 3 /* needle */
            arraylength
            invokestatic com.oracle.truffle.api.ArrayUtils.checkArgs:(IIII)V
         1: .line 117
            aload 0 /* haystack */
            iload 1 /* fromIndex */
            iload 2 /* maxIndex */
            aload 3 /* needle */
            invokestatic com.oracle.truffle.api.ArrayUtils.runIndexOf:([BII[B)I
            ireturn
        end local 3 // byte[] needle
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // byte[] haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0   haystack  [B
            0    2     1  fromIndex  I
            0    2     2   maxIndex  I
            0    2     3     needle  [B
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      needle     

  private static int runIndexOf(byte[], int, int, byte[]);
    descriptor: ([BII[B)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=9, args_size=4
        start local 0 // byte[] haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // byte[] needle
         0: .line 121
            iload 1 /* fromIndex */
            istore 4 /* i */
        start local 4 // int i
         1: goto 9
         2: .line 122
      StackMap locals: int
      StackMap stack:
            aload 3 /* needle */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 7
      StackMap locals: byte[] int int byte[] int top int int byte[]
      StackMap stack:
         3: aload 8
            iload 6
            baload
            istore 5 /* c */
        start local 5 // byte c
         4: .line 123
            aload 0 /* haystack */
            iload 4 /* i */
            baload
            iload 5 /* c */
            if_icmpne 6
         5: .line 124
            iload 4 /* i */
            ireturn
        end local 5 // byte c
         6: .line 122
      StackMap locals:
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
         7: iload 6
            iload 7
            if_icmplt 3
         8: .line 121
            iinc 4 /* i */ 1
      StackMap locals: byte[] int int byte[] int
      StackMap stack:
         9: iload 4 /* i */
            iload 2 /* maxIndex */
            if_icmplt 2
        end local 4 // int i
        10: .line 128
            iconst_m1
            ireturn
        end local 3 // byte[] needle
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // byte[] haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0   haystack  [B
            0   11     1  fromIndex  I
            0   11     2   maxIndex  I
            0   11     3     needle  [B
            1   10     4          i  I
            4    6     5          c  B
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      needle     

  private static void checkArgs(int, int, int, int);
    descriptor: (IIII)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // int length
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // int nValues
         0: .line 132
            iload 1 /* fromIndex */
            ifge 2
         1: .line 133
            ldc "fromIndex must be positive"
            invokestatic com.oracle.truffle.api.ArrayUtils.illegalArgumentException:(Ljava/lang/String;)V
         2: .line 135
      StackMap locals:
      StackMap stack:
            iload 2 /* maxIndex */
            iload 0 /* length */
            if_icmpgt 3
            iload 2 /* maxIndex */
            iload 1 /* fromIndex */
            if_icmpge 4
         3: .line 136
      StackMap locals:
      StackMap stack:
            ldc "maxIndex out of range"
            invokestatic com.oracle.truffle.api.ArrayUtils.illegalArgumentException:(Ljava/lang/String;)V
         4: .line 138
      StackMap locals:
      StackMap stack:
            iload 3 /* nValues */
            ifne 6
         5: .line 139
            ldc "no search values provided"
            invokestatic com.oracle.truffle.api.ArrayUtils.illegalArgumentException:(Ljava/lang/String;)V
         6: .line 141
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int nValues
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // int length
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0     length  I
            0    7     1  fromIndex  I
            0    7     2   maxIndex  I
            0    7     3    nValues  I
    MethodParameters:
           Name  Flags
      length     
      fromIndex  
      maxIndex   
      nValues    

  private static int runIndexOfWithOrMask(byte[], int, int, byte, byte);
    descriptor: ([BIIBB)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=5
        start local 0 // byte[] haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // byte needle
        start local 4 // byte mask
         0: .line 144
            iload 1 /* fromIndex */
            istore 5 /* i */
        start local 5 // int i
         1: goto 5
         2: .line 145
      StackMap locals: int
      StackMap stack:
            aload 0 /* haystack */
            iload 5 /* i */
            baload
            iload 4 /* mask */
            ior
            iload 3 /* needle */
            if_icmpne 4
         3: .line 146
            iload 5 /* i */
            ireturn
         4: .line 144
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 5 /* i */
            iload 2 /* maxIndex */
            if_icmplt 2
        end local 5 // int i
         6: .line 149
            iconst_m1
            ireturn
        end local 4 // byte mask
        end local 3 // byte needle
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // byte[] haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0   haystack  [B
            0    7     1  fromIndex  I
            0    7     2   maxIndex  I
            0    7     3     needle  B
            0    7     4       mask  B
            1    6     5          i  I
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      needle     
      mask       

  private static int runIndexOfWithOrMask(char[], int, int, char, char);
    descriptor: ([CIICC)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=5
        start local 0 // char[] haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // char needle
        start local 4 // char mask
         0: .line 153
            iload 1 /* fromIndex */
            istore 5 /* i */
        start local 5 // int i
         1: goto 5
         2: .line 154
      StackMap locals: int
      StackMap stack:
            aload 0 /* haystack */
            iload 5 /* i */
            caload
            iload 4 /* mask */
            ior
            iload 3 /* needle */
            if_icmpne 4
         3: .line 155
            iload 5 /* i */
            ireturn
         4: .line 153
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 5 /* i */
            iload 2 /* maxIndex */
            if_icmplt 2
        end local 5 // int i
         6: .line 158
            iconst_m1
            ireturn
        end local 4 // char mask
        end local 3 // char needle
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // char[] haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0   haystack  [C
            0    7     1  fromIndex  I
            0    7     2   maxIndex  I
            0    7     3     needle  C
            0    7     4       mask  C
            1    6     5          i  I
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      needle     
      mask       

  private static int runIndexOfWithOrMask(java.lang.String, int, int, char, char);
    descriptor: (Ljava/lang/String;IICC)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=5
        start local 0 // java.lang.String haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // char needle
        start local 4 // char mask
         0: .line 162
            iload 1 /* fromIndex */
            istore 5 /* i */
        start local 5 // int i
         1: goto 5
         2: .line 163
      StackMap locals: int
      StackMap stack:
            aload 0 /* haystack */
            iload 5 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            iload 4 /* mask */
            ior
            iload 3 /* needle */
            if_icmpne 4
         3: .line 164
            iload 5 /* i */
            ireturn
         4: .line 162
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 5 /* i */
            iload 2 /* maxIndex */
            if_icmplt 2
        end local 5 // int i
         6: .line 167
            iconst_m1
            ireturn
        end local 4 // char mask
        end local 3 // char needle
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // java.lang.String haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0   haystack  Ljava/lang/String;
            0    7     1  fromIndex  I
            0    7     2   maxIndex  I
            0    7     3     needle  C
            0    7     4       mask  C
            1    6     5          i  I
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      needle     
      mask       

  private static int runIndexOf2ConsecutiveWithOrMask(byte[], int, int, byte, byte, byte, byte);
    descriptor: ([BIIBBBB)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=8, args_size=7
        start local 0 // byte[] haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // byte c1
        start local 4 // byte c2
        start local 5 // byte mask1
        start local 6 // byte mask2
         0: .line 171
            iload 1 /* fromIndex */
            iconst_1
            iadd
            istore 7 /* i */
        start local 7 // int i
         1: goto 5
         2: .line 172
      StackMap locals: int
      StackMap stack:
            aload 0 /* haystack */
            iload 7 /* i */
            iconst_1
            isub
            baload
            iload 5 /* mask1 */
            ior
            iload 3 /* c1 */
            if_icmpne 4
            aload 0 /* haystack */
            iload 7 /* i */
            baload
            iload 6 /* mask2 */
            ior
            iload 4 /* c2 */
            if_icmpne 4
         3: .line 173
            iload 7 /* i */
            iconst_1
            isub
            ireturn
         4: .line 171
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 7 /* i */
            iload 2 /* maxIndex */
            if_icmplt 2
        end local 7 // int i
         6: .line 176
            iconst_m1
            ireturn
        end local 6 // byte mask2
        end local 5 // byte mask1
        end local 4 // byte c2
        end local 3 // byte c1
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // byte[] haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0   haystack  [B
            0    7     1  fromIndex  I
            0    7     2   maxIndex  I
            0    7     3         c1  B
            0    7     4         c2  B
            0    7     5      mask1  B
            0    7     6      mask2  B
            1    6     7          i  I
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      c1         
      c2         
      mask1      
      mask2      

  private static int runIndexOf2ConsecutiveWithOrMask(char[], int, int, char, char, char, char);
    descriptor: ([CIICCCC)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=8, args_size=7
        start local 0 // char[] haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // char c1
        start local 4 // char c2
        start local 5 // char mask1
        start local 6 // char mask2
         0: .line 180
            iload 1 /* fromIndex */
            iconst_1
            iadd
            istore 7 /* i */
        start local 7 // int i
         1: goto 5
         2: .line 181
      StackMap locals: int
      StackMap stack:
            aload 0 /* haystack */
            iload 7 /* i */
            iconst_1
            isub
            caload
            iload 5 /* mask1 */
            ior
            iload 3 /* c1 */
            if_icmpne 4
            aload 0 /* haystack */
            iload 7 /* i */
            caload
            iload 6 /* mask2 */
            ior
            iload 4 /* c2 */
            if_icmpne 4
         3: .line 182
            iload 7 /* i */
            iconst_1
            isub
            ireturn
         4: .line 180
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 7 /* i */
            iload 2 /* maxIndex */
            if_icmplt 2
        end local 7 // int i
         6: .line 185
            iconst_m1
            ireturn
        end local 6 // char mask2
        end local 5 // char mask1
        end local 4 // char c2
        end local 3 // char c1
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // char[] haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0   haystack  [C
            0    7     1  fromIndex  I
            0    7     2   maxIndex  I
            0    7     3         c1  C
            0    7     4         c2  C
            0    7     5      mask1  C
            0    7     6      mask2  C
            1    6     7          i  I
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      c1         
      c2         
      mask1      
      mask2      

  private static int runIndexOf2ConsecutiveWithOrMask(java.lang.String, int, int, char, char, char, char);
    descriptor: (Ljava/lang/String;IICCCC)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=8, args_size=7
        start local 0 // java.lang.String haystack
        start local 1 // int fromIndex
        start local 2 // int maxIndex
        start local 3 // char c1
        start local 4 // char c2
        start local 5 // char mask1
        start local 6 // char mask2
         0: .line 189
            iload 1 /* fromIndex */
            iconst_1
            iadd
            istore 7 /* i */
        start local 7 // int i
         1: goto 5
         2: .line 190
      StackMap locals: int
      StackMap stack:
            aload 0 /* haystack */
            iload 7 /* i */
            iconst_1
            isub
            invokevirtual java.lang.String.charAt:(I)C
            iload 5 /* mask1 */
            ior
            iload 3 /* c1 */
            if_icmpne 4
            aload 0 /* haystack */
            iload 7 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            iload 6 /* mask2 */
            ior
            iload 4 /* c2 */
            if_icmpne 4
         3: .line 191
            iload 7 /* i */
            iconst_1
            isub
            ireturn
         4: .line 189
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 7 /* i */
            iload 2 /* maxIndex */
            if_icmplt 2
        end local 7 // int i
         6: .line 194
            iconst_m1
            ireturn
        end local 6 // char mask2
        end local 5 // char mask1
        end local 4 // char c2
        end local 3 // char c1
        end local 2 // int maxIndex
        end local 1 // int fromIndex
        end local 0 // java.lang.String haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0   haystack  Ljava/lang/String;
            0    7     1  fromIndex  I
            0    7     2   maxIndex  I
            0    7     3         c1  C
            0    7     4         c2  C
            0    7     5      mask1  C
            0    7     6      mask2  C
            1    6     7          i  I
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      maxIndex   
      c1         
      c2         
      mask1      
      mask2      

  public static int indexOfWithOrMask(byte[], int, int, byte[], byte[]);
    descriptor: ([BII[B[B)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=9, args_size=5
        start local 0 // byte[] haystack
        start local 1 // int fromIndex
        start local 2 // int length
        start local 3 // byte[] needle
        start local 4 // byte[] mask
         0: .line 210
            aload 0 /* haystack */
            arraylength
            iload 1 /* fromIndex */
            iload 2 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.checkArgsIndexOf:(III)V
         1: .line 211
            aload 4 /* mask */
            ifnull 3
         2: .line 212
            aload 3 /* needle */
            arraylength
            aload 4 /* mask */
            arraylength
            invokestatic com.oracle.truffle.api.ArrayUtils.checkMaskLengthIndexOf:(II)V
         3: .line 214
      StackMap locals:
      StackMap stack:
            aload 3 /* needle */
            arraylength
            ifne 5
         4: .line 215
            iload 1 /* fromIndex */
            ireturn
         5: .line 217
      StackMap locals:
      StackMap stack:
            iload 2 /* length */
            aload 3 /* needle */
            arraylength
            isub
            ifge 7
         6: .line 218
            iconst_m1
            ireturn
         7: .line 219
      StackMap locals:
      StackMap stack:
            aload 3 /* needle */
            arraylength
            iconst_1
            if_icmpne 11
         8: .line 220
            aload 0 /* haystack */
            iload 1 /* fromIndex */
            iload 1 /* fromIndex */
            iload 2 /* length */
            iadd
            aload 3 /* needle */
            iconst_0
            baload
            aload 4 /* mask */
            ifnonnull 9
            iconst_0
            goto 10
      StackMap locals: byte[] int int byte[] byte[]
      StackMap stack: byte[] int int int
         9: aload 4 /* mask */
            iconst_0
            baload
      StackMap locals: byte[] int int byte[] byte[]
      StackMap stack: byte[] int int int int
        10: invokestatic com.oracle.truffle.api.ArrayUtils.runIndexOfWithOrMask:([BIIBB)I
            ireturn
        11: .line 222
      StackMap locals:
      StackMap stack:
            iload 1 /* fromIndex */
            iload 2 /* length */
            iadd
            aload 3 /* needle */
            arraylength
            iconst_2
            isub
            isub
            istore 5 /* max */
        start local 5 // int max
        12: .line 223
            iload 1 /* fromIndex */
            istore 6 /* index */
        start local 6 // int index
        13: .line 224
            aload 4 /* mask */
            ifnonnull 14
            iconst_0
            goto 15
      StackMap locals: int int
      StackMap stack:
        14: aload 4 /* mask */
            iconst_0
            baload
      StackMap locals:
      StackMap stack: int
        15: istore 7 /* mask0 */
        start local 7 // byte mask0
        16: .line 225
            aload 4 /* mask */
            ifnonnull 17
            iconst_0
            goto 18
      StackMap locals: int
      StackMap stack:
        17: aload 4 /* mask */
            iconst_1
            baload
      StackMap locals:
      StackMap stack: int
        18: istore 8 /* mask1 */
        start local 8 // byte mask1
        19: .line 226
            goto 26
        20: .line 227
      StackMap locals: int
      StackMap stack:
            aload 0 /* haystack */
            iload 6 /* index */
            iload 5 /* max */
            aload 3 /* needle */
            iconst_0
            baload
            aload 3 /* needle */
            iconst_1
            baload
            iload 7 /* mask0 */
            iload 8 /* mask1 */
            invokestatic com.oracle.truffle.api.ArrayUtils.runIndexOf2ConsecutiveWithOrMask:([BIIBBBB)I
            istore 6 /* index */
        21: .line 228
            iload 6 /* index */
            ifge 23
        22: .line 229
            iconst_m1
            ireturn
        23: .line 231
      StackMap locals:
      StackMap stack:
            aload 3 /* needle */
            arraylength
            iconst_2
            if_icmpeq 24
            aload 0 /* haystack */
            iload 6 /* index */
            aload 3 /* needle */
            iconst_0
            aload 3 /* needle */
            arraylength
            aload 4 /* mask */
            invokestatic com.oracle.truffle.api.ArrayUtils.regionEqualsWithOrMask:([BI[BII[B)Z
            ifeq 25
        24: .line 232
      StackMap locals:
      StackMap stack:
            iload 6 /* index */
            ireturn
        25: .line 234
      StackMap locals:
      StackMap stack:
            iinc 6 /* index */ 1
        26: .line 226
      StackMap locals:
      StackMap stack:
            iload 6 /* index */
            iload 5 /* max */
            iconst_1
            isub
            if_icmplt 20
        27: .line 236
            iconst_m1
            ireturn
        end local 8 // byte mask1
        end local 7 // byte mask0
        end local 6 // int index
        end local 5 // int max
        end local 4 // byte[] mask
        end local 3 // byte[] needle
        end local 2 // int length
        end local 1 // int fromIndex
        end local 0 // byte[] haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   28     0   haystack  [B
            0   28     1  fromIndex  I
            0   28     2     length  I
            0   28     3     needle  [B
            0   28     4       mask  [B
           12   28     5        max  I
           13   28     6      index  I
           16   28     7      mask0  B
           19   28     8      mask1  B
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      length     
      needle     
      mask       

  public static int indexOfWithOrMask(char[], int, int, char[], char[]);
    descriptor: ([CII[C[C)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=9, args_size=5
        start local 0 // char[] haystack
        start local 1 // int fromIndex
        start local 2 // int length
        start local 3 // char[] needle
        start local 4 // char[] mask
         0: .line 253
            aload 0 /* haystack */
            arraylength
            iload 1 /* fromIndex */
            iload 2 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.checkArgsIndexOf:(III)V
         1: .line 254
            aload 4 /* mask */
            ifnull 3
         2: .line 255
            aload 3 /* needle */
            arraylength
            aload 4 /* mask */
            arraylength
            invokestatic com.oracle.truffle.api.ArrayUtils.checkMaskLengthIndexOf:(II)V
         3: .line 257
      StackMap locals:
      StackMap stack:
            aload 3 /* needle */
            arraylength
            ifne 5
         4: .line 258
            iload 1 /* fromIndex */
            ireturn
         5: .line 260
      StackMap locals:
      StackMap stack:
            iload 2 /* length */
            aload 3 /* needle */
            arraylength
            isub
            ifge 7
         6: .line 261
            iconst_m1
            ireturn
         7: .line 262
      StackMap locals:
      StackMap stack:
            aload 3 /* needle */
            arraylength
            iconst_1
            if_icmpne 11
         8: .line 263
            aload 0 /* haystack */
            iload 1 /* fromIndex */
            iload 1 /* fromIndex */
            iload 2 /* length */
            iadd
            aload 3 /* needle */
            iconst_0
            caload
            aload 4 /* mask */
            ifnonnull 9
            iconst_0
            goto 10
      StackMap locals: char[] int int char[] char[]
      StackMap stack: char[] int int int
         9: aload 4 /* mask */
            iconst_0
            caload
      StackMap locals: char[] int int char[] char[]
      StackMap stack: char[] int int int int
        10: invokestatic com.oracle.truffle.api.ArrayUtils.runIndexOfWithOrMask:([CIICC)I
            ireturn
        11: .line 265
      StackMap locals:
      StackMap stack:
            aload 4 /* mask */
            ifnonnull 12
            iconst_0
            goto 13
      StackMap locals:
      StackMap stack:
        12: aload 4 /* mask */
            iconst_0
            caload
      StackMap locals:
      StackMap stack: int
        13: istore 5 /* mask0 */
        start local 5 // char mask0
        14: .line 266
            aload 4 /* mask */
            ifnonnull 15
            iconst_0
            goto 16
      StackMap locals: int
      StackMap stack:
        15: aload 4 /* mask */
            iconst_1
            caload
      StackMap locals:
      StackMap stack: int
        16: istore 6 /* mask1 */
        start local 6 // char mask1
        17: .line 267
            iload 1 /* fromIndex */
            iload 2 /* length */
            iadd
            aload 3 /* needle */
            arraylength
            iconst_2
            isub
            isub
            istore 7 /* max */
        start local 7 // int max
        18: .line 268
            iload 1 /* fromIndex */
            istore 8 /* index */
        start local 8 // int index
        19: .line 269
            goto 26
        20: .line 270
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* haystack */
            iload 8 /* index */
            iload 7 /* max */
            aload 3 /* needle */
            iconst_0
            caload
            aload 3 /* needle */
            iconst_1
            caload
            iload 5 /* mask0 */
            iload 6 /* mask1 */
            invokestatic com.oracle.truffle.api.ArrayUtils.runIndexOf2ConsecutiveWithOrMask:([CIICCCC)I
            istore 8 /* index */
        21: .line 271
            iload 8 /* index */
            ifge 23
        22: .line 272
            iconst_m1
            ireturn
        23: .line 274
      StackMap locals:
      StackMap stack:
            aload 3 /* needle */
            arraylength
            iconst_2
            if_icmpeq 24
            aload 0 /* haystack */
            iload 8 /* index */
            aload 3 /* needle */
            iconst_0
            aload 3 /* needle */
            arraylength
            aload 4 /* mask */
            invokestatic com.oracle.truffle.api.ArrayUtils.regionEqualsWithOrMask:([CI[CII[C)Z
            ifeq 25
        24: .line 275
      StackMap locals:
      StackMap stack:
            iload 8 /* index */
            ireturn
        25: .line 277
      StackMap locals:
      StackMap stack:
            iinc 8 /* index */ 1
        26: .line 269
      StackMap locals:
      StackMap stack:
            iload 8 /* index */
            iload 7 /* max */
            iconst_1
            isub
            if_icmplt 20
        27: .line 279
            iconst_m1
            ireturn
        end local 8 // int index
        end local 7 // int max
        end local 6 // char mask1
        end local 5 // char mask0
        end local 4 // char[] mask
        end local 3 // char[] needle
        end local 2 // int length
        end local 1 // int fromIndex
        end local 0 // char[] haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   28     0   haystack  [C
            0   28     1  fromIndex  I
            0   28     2     length  I
            0   28     3     needle  [C
            0   28     4       mask  [C
           14   28     5      mask0  C
           17   28     6      mask1  C
           18   28     7        max  I
           19   28     8      index  I
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      length     
      needle     
      mask       

  public static int indexOfWithOrMask(java.lang.String, int, int, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=9, args_size=5
        start local 0 // java.lang.String haystack
        start local 1 // int fromIndex
        start local 2 // int length
        start local 3 // java.lang.String needle
        start local 4 // java.lang.String mask
         0: .line 296
            aload 0 /* haystack */
            invokevirtual java.lang.String.length:()I
            iload 1 /* fromIndex */
            iload 2 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.checkArgsIndexOf:(III)V
         1: .line 297
            aload 4 /* mask */
            ifnull 3
         2: .line 298
            aload 3 /* needle */
            invokevirtual java.lang.String.length:()I
            aload 4 /* mask */
            invokevirtual java.lang.String.length:()I
            invokestatic com.oracle.truffle.api.ArrayUtils.checkMaskLengthIndexOf:(II)V
         3: .line 300
      StackMap locals:
      StackMap stack:
            aload 3 /* needle */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 5
         4: .line 301
            iload 1 /* fromIndex */
            ireturn
         5: .line 303
      StackMap locals:
      StackMap stack:
            iload 2 /* length */
            aload 3 /* needle */
            invokevirtual java.lang.String.length:()I
            isub
            ifge 7
         6: .line 304
            iconst_m1
            ireturn
         7: .line 305
      StackMap locals:
      StackMap stack:
            aload 3 /* needle */
            invokevirtual java.lang.String.length:()I
            iconst_1
            if_icmpne 11
         8: .line 306
            aload 0 /* haystack */
            iload 1 /* fromIndex */
            iload 1 /* fromIndex */
            iload 2 /* length */
            iadd
            aload 3 /* needle */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            aload 4 /* mask */
            ifnonnull 9
            iconst_0
            goto 10
      StackMap locals: java.lang.String int int java.lang.String java.lang.String
      StackMap stack: java.lang.String int int int
         9: aload 4 /* mask */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
      StackMap locals: java.lang.String int int java.lang.String java.lang.String
      StackMap stack: java.lang.String int int int int
        10: invokestatic com.oracle.truffle.api.ArrayUtils.runIndexOfWithOrMask:(Ljava/lang/String;IICC)I
            ireturn
        11: .line 308
      StackMap locals:
      StackMap stack:
            aload 4 /* mask */
            ifnonnull 12
            iconst_0
            goto 13
      StackMap locals:
      StackMap stack:
        12: aload 4 /* mask */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
      StackMap locals:
      StackMap stack: int
        13: istore 5 /* mask0 */
        start local 5 // char mask0
        14: .line 309
            aload 4 /* mask */
            ifnonnull 15
            iconst_0
            goto 16
      StackMap locals: int
      StackMap stack:
        15: aload 4 /* mask */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
      StackMap locals:
      StackMap stack: int
        16: istore 6 /* mask1 */
        start local 6 // char mask1
        17: .line 310
            iload 1 /* fromIndex */
            iload 2 /* length */
            iadd
            aload 3 /* needle */
            invokevirtual java.lang.String.length:()I
            iconst_2
            isub
            isub
            istore 7 /* max */
        start local 7 // int max
        18: .line 311
            iload 1 /* fromIndex */
            istore 8 /* index */
        start local 8 // int index
        19: .line 312
            goto 26
        20: .line 313
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* haystack */
            iload 8 /* index */
            iload 7 /* max */
            aload 3 /* needle */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            aload 3 /* needle */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            iload 5 /* mask0 */
            iload 6 /* mask1 */
            invokestatic com.oracle.truffle.api.ArrayUtils.runIndexOf2ConsecutiveWithOrMask:(Ljava/lang/String;IICCCC)I
            istore 8 /* index */
        21: .line 314
            iload 8 /* index */
            ifge 23
        22: .line 315
            iconst_m1
            ireturn
        23: .line 317
      StackMap locals:
      StackMap stack:
            aload 3 /* needle */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmpeq 24
            aload 0 /* haystack */
            iload 8 /* index */
            aload 3 /* needle */
            iconst_0
            aload 3 /* needle */
            invokevirtual java.lang.String.length:()I
            aload 4 /* mask */
            invokestatic com.oracle.truffle.api.ArrayUtils.regionEqualsWithOrMask:(Ljava/lang/String;ILjava/lang/String;IILjava/lang/String;)Z
            ifeq 25
        24: .line 318
      StackMap locals:
      StackMap stack:
            iload 8 /* index */
            ireturn
        25: .line 320
      StackMap locals:
      StackMap stack:
            iinc 8 /* index */ 1
        26: .line 312
      StackMap locals:
      StackMap stack:
            iload 8 /* index */
            iload 7 /* max */
            iconst_1
            isub
            if_icmplt 20
        27: .line 322
            iconst_m1
            ireturn
        end local 8 // int index
        end local 7 // int max
        end local 6 // char mask1
        end local 5 // char mask0
        end local 4 // java.lang.String mask
        end local 3 // java.lang.String needle
        end local 2 // int length
        end local 1 // int fromIndex
        end local 0 // java.lang.String haystack
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   28     0   haystack  Ljava/lang/String;
            0   28     1  fromIndex  I
            0   28     2     length  I
            0   28     3     needle  Ljava/lang/String;
            0   28     4       mask  Ljava/lang/String;
           14   28     5      mask0  C
           17   28     6      mask1  C
           18   28     7        max  I
           19   28     8      index  I
    MethodParameters:
           Name  Flags
      haystack   
      fromIndex  
      length     
      needle     
      mask       

  private static void checkArgsIndexOf(int, int, int);
    descriptor: (III)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // int hayStackLength
        start local 1 // int fromIndex
        start local 2 // int length
         0: .line 327
            iload 1 /* fromIndex */
            iflt 1
            iload 2 /* length */
            ifge 2
         1: .line 328
      StackMap locals:
      StackMap stack:
            ldc "fromIndex and length must be positive"
            invokestatic com.oracle.truffle.api.ArrayUtils.illegalArgumentException:(Ljava/lang/String;)V
         2: .line 330
      StackMap locals:
      StackMap stack:
            iload 1 /* fromIndex */
            iload 2 /* length */
            iadd
            iload 0 /* hayStackLength */
            if_icmple 4
         3: .line 331
            ldc "length out of range"
            invokestatic com.oracle.truffle.api.ArrayUtils.illegalArgumentException:(Ljava/lang/String;)V
         4: .line 333
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int length
        end local 1 // int fromIndex
        end local 0 // int hayStackLength
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0  hayStackLength  I
            0    5     1       fromIndex  I
            0    5     2          length  I
    MethodParameters:
                Name  Flags
      hayStackLength  
      fromIndex       
      length          

  private static void checkMaskLengthIndexOf(int, int);
    descriptor: (II)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // int needleLength
        start local 1 // int maskLength
         0: .line 336
            iload 0 /* needleLength */
            iload 1 /* maskLength */
            if_icmpeq 2
         1: .line 337
            ldc "mask and needle length must be equal"
            invokestatic com.oracle.truffle.api.ArrayUtils.illegalArgumentException:(Ljava/lang/String;)V
         2: .line 339
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int maskLength
        end local 0 // int needleLength
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  needleLength  I
            0    3     1    maskLength  I
    MethodParameters:
              Name  Flags
      needleLength  
      maskLength    

  private static boolean runRegionEquals(byte[], int, byte[], int, int);
    descriptor: ([BI[BII)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // byte[] a1
        start local 1 // int fromIndex1
        start local 2 // byte[] a2
        start local 3 // int fromIndex2
        start local 4 // int length
         0: .line 342
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         1: goto 5
         2: .line 343
      StackMap locals: int
      StackMap stack:
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            iload 5 /* i */
            iadd
            baload
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            iload 5 /* i */
            iadd
            baload
            if_icmpeq 4
         3: .line 344
            iconst_0
            ireturn
         4: .line 342
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 5 /* i */
            iload 4 /* length */
            if_icmplt 2
        end local 5 // int i
         6: .line 347
            iconst_1
            ireturn
        end local 4 // int length
        end local 3 // int fromIndex2
        end local 2 // byte[] a2
        end local 1 // int fromIndex1
        end local 0 // byte[] a1
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0          a1  [B
            0    7     1  fromIndex1  I
            0    7     2          a2  [B
            0    7     3  fromIndex2  I
            0    7     4      length  I
            1    6     5           i  I
    MethodParameters:
            Name  Flags
      a1          
      fromIndex1  
      a2          
      fromIndex2  
      length      

  private static boolean runRegionEquals(char[], int, char[], int, int);
    descriptor: ([CI[CII)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // char[] a1
        start local 1 // int fromIndex1
        start local 2 // char[] a2
        start local 3 // int fromIndex2
        start local 4 // int length
         0: .line 351
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         1: goto 5
         2: .line 352
      StackMap locals: int
      StackMap stack:
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            iload 5 /* i */
            iadd
            caload
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            iload 5 /* i */
            iadd
            caload
            if_icmpeq 4
         3: .line 353
            iconst_0
            ireturn
         4: .line 351
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 5 /* i */
            iload 4 /* length */
            if_icmplt 2
        end local 5 // int i
         6: .line 356
            iconst_1
            ireturn
        end local 4 // int length
        end local 3 // int fromIndex2
        end local 2 // char[] a2
        end local 1 // int fromIndex1
        end local 0 // char[] a1
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0          a1  [C
            0    7     1  fromIndex1  I
            0    7     2          a2  [C
            0    7     3  fromIndex2  I
            0    7     4      length  I
            1    6     5           i  I
    MethodParameters:
            Name  Flags
      a1          
      fromIndex1  
      a2          
      fromIndex2  
      length      

  private static boolean runRegionEquals(java.lang.String, int, java.lang.String, int, int);
    descriptor: (Ljava/lang/String;ILjava/lang/String;II)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // java.lang.String a1
        start local 1 // int fromIndex1
        start local 2 // java.lang.String a2
        start local 3 // int fromIndex2
        start local 4 // int length
         0: .line 360
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         1: goto 5
         2: .line 361
      StackMap locals: int
      StackMap stack:
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            iload 5 /* i */
            iadd
            invokevirtual java.lang.String.charAt:(I)C
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            iload 5 /* i */
            iadd
            invokevirtual java.lang.String.charAt:(I)C
            if_icmpeq 4
         3: .line 362
            iconst_0
            ireturn
         4: .line 360
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 5 /* i */
            iload 4 /* length */
            if_icmplt 2
        end local 5 // int i
         6: .line 365
            iconst_1
            ireturn
        end local 4 // int length
        end local 3 // int fromIndex2
        end local 2 // java.lang.String a2
        end local 1 // int fromIndex1
        end local 0 // java.lang.String a1
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0          a1  Ljava/lang/String;
            0    7     1  fromIndex1  I
            0    7     2          a2  Ljava/lang/String;
            0    7     3  fromIndex2  I
            0    7     4      length  I
            1    6     5           i  I
    MethodParameters:
            Name  Flags
      a1          
      fromIndex1  
      a2          
      fromIndex2  
      length      

  public static boolean regionEqualsWithOrMask(byte[], int, byte[], int, int, byte[]);
    descriptor: ([BI[BII[B)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // byte[] a1
        start local 1 // int fromIndex1
        start local 2 // byte[] a2
        start local 3 // int fromIndex2
        start local 4 // int length
        start local 5 // byte[] mask
         0: .line 378
            aload 0 /* a1 */
            invokestatic com.oracle.truffle.api.ArrayUtils.requireNonNull:(Ljava/lang/Object;)V
         1: .line 379
            aload 2 /* a2 */
            invokestatic com.oracle.truffle.api.ArrayUtils.requireNonNull:(Ljava/lang/Object;)V
         2: .line 380
            iload 1 /* fromIndex1 */
            iload 3 /* fromIndex2 */
            iload 4 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.checkArgsRegionEquals:(III)V
         3: .line 381
            aload 0 /* a1 */
            arraylength
            iload 1 /* fromIndex1 */
            aload 2 /* a2 */
            arraylength
            iload 3 /* fromIndex2 */
            iload 4 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.regionEqualsOutOfBounds:(IIIII)Z
            ifeq 5
         4: .line 382
            iconst_0
            ireturn
         5: .line 384
      StackMap locals:
      StackMap stack:
            aload 5 /* mask */
            ifnonnull 7
         6: .line 385
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            iload 4 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.runRegionEquals:([BI[BII)Z
            ireturn
         7: .line 387
      StackMap locals:
      StackMap stack:
            iload 4 /* length */
            aload 5 /* mask */
            arraylength
            invokestatic com.oracle.truffle.api.ArrayUtils.checkMaskLengthRegionEquals:(II)V
         8: .line 388
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            aload 5 /* mask */
            invokestatic com.oracle.truffle.api.ArrayUtils.runRegionEqualsWithOrMask:([BI[BI[B)Z
            ireturn
        end local 5 // byte[] mask
        end local 4 // int length
        end local 3 // int fromIndex2
        end local 2 // byte[] a2
        end local 1 // int fromIndex1
        end local 0 // byte[] a1
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0          a1  [B
            0    9     1  fromIndex1  I
            0    9     2          a2  [B
            0    9     3  fromIndex2  I
            0    9     4      length  I
            0    9     5        mask  [B
    MethodParameters:
            Name  Flags
      a1          
      fromIndex1  
      a2          
      fromIndex2  
      length      
      mask        

  private static boolean runRegionEqualsWithOrMask(byte[], int, byte[], int, byte[]);
    descriptor: ([BI[BI[B)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // byte[] a1
        start local 1 // int fromIndex1
        start local 2 // byte[] a2
        start local 3 // int fromIndex2
        start local 4 // byte[] mask
         0: .line 392
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         1: goto 5
         2: .line 393
      StackMap locals: int
      StackMap stack:
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            iload 5 /* i */
            iadd
            baload
            aload 4 /* mask */
            iload 5 /* i */
            baload
            ior
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            iload 5 /* i */
            iadd
            baload
            if_icmpeq 4
         3: .line 394
            iconst_0
            ireturn
         4: .line 392
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 5 /* i */
            aload 4 /* mask */
            arraylength
            if_icmplt 2
        end local 5 // int i
         6: .line 397
            iconst_1
            ireturn
        end local 4 // byte[] mask
        end local 3 // int fromIndex2
        end local 2 // byte[] a2
        end local 1 // int fromIndex1
        end local 0 // byte[] a1
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0          a1  [B
            0    7     1  fromIndex1  I
            0    7     2          a2  [B
            0    7     3  fromIndex2  I
            0    7     4        mask  [B
            1    6     5           i  I
    MethodParameters:
            Name  Flags
      a1          
      fromIndex1  
      a2          
      fromIndex2  
      mask        

  public static boolean regionEqualsWithOrMask(char[], int, char[], int, int, char[]);
    descriptor: ([CI[CII[C)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // char[] a1
        start local 1 // int fromIndex1
        start local 2 // char[] a2
        start local 3 // int fromIndex2
        start local 4 // int length
        start local 5 // char[] mask
         0: .line 410
            aload 0 /* a1 */
            invokestatic com.oracle.truffle.api.ArrayUtils.requireNonNull:(Ljava/lang/Object;)V
         1: .line 411
            aload 2 /* a2 */
            invokestatic com.oracle.truffle.api.ArrayUtils.requireNonNull:(Ljava/lang/Object;)V
         2: .line 412
            iload 1 /* fromIndex1 */
            iload 3 /* fromIndex2 */
            iload 4 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.checkArgsRegionEquals:(III)V
         3: .line 413
            aload 0 /* a1 */
            arraylength
            iload 1 /* fromIndex1 */
            aload 2 /* a2 */
            arraylength
            iload 3 /* fromIndex2 */
            iload 4 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.regionEqualsOutOfBounds:(IIIII)Z
            ifeq 5
         4: .line 414
            iconst_0
            ireturn
         5: .line 416
      StackMap locals:
      StackMap stack:
            aload 5 /* mask */
            ifnonnull 7
         6: .line 417
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            iload 4 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.runRegionEquals:([CI[CII)Z
            ireturn
         7: .line 419
      StackMap locals:
      StackMap stack:
            iload 4 /* length */
            aload 5 /* mask */
            arraylength
            invokestatic com.oracle.truffle.api.ArrayUtils.checkMaskLengthRegionEquals:(II)V
         8: .line 420
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            aload 5 /* mask */
            invokestatic com.oracle.truffle.api.ArrayUtils.runRegionEqualsWithOrMask:([CI[CI[C)Z
            ireturn
        end local 5 // char[] mask
        end local 4 // int length
        end local 3 // int fromIndex2
        end local 2 // char[] a2
        end local 1 // int fromIndex1
        end local 0 // char[] a1
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0          a1  [C
            0    9     1  fromIndex1  I
            0    9     2          a2  [C
            0    9     3  fromIndex2  I
            0    9     4      length  I
            0    9     5        mask  [C
    MethodParameters:
            Name  Flags
      a1          
      fromIndex1  
      a2          
      fromIndex2  
      length      
      mask        

  private static boolean runRegionEqualsWithOrMask(char[], int, char[], int, char[]);
    descriptor: ([CI[CI[C)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // char[] a1
        start local 1 // int fromIndex1
        start local 2 // char[] a2
        start local 3 // int fromIndex2
        start local 4 // char[] mask
         0: .line 424
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         1: goto 5
         2: .line 425
      StackMap locals: int
      StackMap stack:
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            iload 5 /* i */
            iadd
            caload
            aload 4 /* mask */
            iload 5 /* i */
            caload
            ior
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            iload 5 /* i */
            iadd
            caload
            if_icmpeq 4
         3: .line 426
            iconst_0
            ireturn
         4: .line 424
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 5 /* i */
            aload 4 /* mask */
            arraylength
            if_icmplt 2
        end local 5 // int i
         6: .line 429
            iconst_1
            ireturn
        end local 4 // char[] mask
        end local 3 // int fromIndex2
        end local 2 // char[] a2
        end local 1 // int fromIndex1
        end local 0 // char[] a1
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0          a1  [C
            0    7     1  fromIndex1  I
            0    7     2          a2  [C
            0    7     3  fromIndex2  I
            0    7     4        mask  [C
            1    6     5           i  I
    MethodParameters:
            Name  Flags
      a1          
      fromIndex1  
      a2          
      fromIndex2  
      mask        

  public static boolean regionEqualsWithOrMask(java.lang.String, int, java.lang.String, int, int, java.lang.String);
    descriptor: (Ljava/lang/String;ILjava/lang/String;IILjava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // java.lang.String a1
        start local 1 // int fromIndex1
        start local 2 // java.lang.String a2
        start local 3 // int fromIndex2
        start local 4 // int length
        start local 5 // java.lang.String mask
         0: .line 443
            aload 0 /* a1 */
            invokestatic com.oracle.truffle.api.ArrayUtils.requireNonNull:(Ljava/lang/Object;)V
         1: .line 444
            aload 2 /* a2 */
            invokestatic com.oracle.truffle.api.ArrayUtils.requireNonNull:(Ljava/lang/Object;)V
         2: .line 445
            iload 1 /* fromIndex1 */
            iload 3 /* fromIndex2 */
            iload 4 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.checkArgsRegionEquals:(III)V
         3: .line 446
            aload 0 /* a1 */
            invokevirtual java.lang.String.length:()I
            iload 1 /* fromIndex1 */
            aload 2 /* a2 */
            invokevirtual java.lang.String.length:()I
            iload 3 /* fromIndex2 */
            iload 4 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.regionEqualsOutOfBounds:(IIIII)Z
            ifeq 5
         4: .line 447
            iconst_0
            ireturn
         5: .line 449
      StackMap locals:
      StackMap stack:
            aload 5 /* mask */
            ifnonnull 7
         6: .line 450
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            iload 4 /* length */
            invokestatic com.oracle.truffle.api.ArrayUtils.runRegionEquals:(Ljava/lang/String;ILjava/lang/String;II)Z
            ireturn
         7: .line 452
      StackMap locals:
      StackMap stack:
            iload 4 /* length */
            aload 5 /* mask */
            invokevirtual java.lang.String.length:()I
            invokestatic com.oracle.truffle.api.ArrayUtils.checkMaskLengthRegionEquals:(II)V
         8: .line 453
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            aload 5 /* mask */
            invokestatic com.oracle.truffle.api.ArrayUtils.runRegionEqualsWithOrMask:(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)Z
            ireturn
        end local 5 // java.lang.String mask
        end local 4 // int length
        end local 3 // int fromIndex2
        end local 2 // java.lang.String a2
        end local 1 // int fromIndex1
        end local 0 // java.lang.String a1
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0          a1  Ljava/lang/String;
            0    9     1  fromIndex1  I
            0    9     2          a2  Ljava/lang/String;
            0    9     3  fromIndex2  I
            0    9     4      length  I
            0    9     5        mask  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      a1          
      fromIndex1  
      a2          
      fromIndex2  
      length      
      mask        

  private static boolean runRegionEqualsWithOrMask(java.lang.String, int, java.lang.String, int, java.lang.String);
    descriptor: (Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // java.lang.String a1
        start local 1 // int fromIndex1
        start local 2 // java.lang.String a2
        start local 3 // int fromIndex2
        start local 4 // java.lang.String mask
         0: .line 457
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         1: goto 5
         2: .line 458
      StackMap locals: int
      StackMap stack:
            aload 0 /* a1 */
            iload 1 /* fromIndex1 */
            iload 5 /* i */
            iadd
            invokevirtual java.lang.String.charAt:(I)C
            aload 4 /* mask */
            iload 5 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            ior
            aload 2 /* a2 */
            iload 3 /* fromIndex2 */
            iload 5 /* i */
            iadd
            invokevirtual java.lang.String.charAt:(I)C
            if_icmpeq 4
         3: .line 459
            iconst_0
            ireturn
         4: .line 457
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 5 /* i */
            aload 4 /* mask */
            invokevirtual java.lang.String.length:()I
            if_icmplt 2
        end local 5 // int i
         6: .line 462
            iconst_1
            ireturn
        end local 4 // java.lang.String mask
        end local 3 // int fromIndex2
        end local 2 // java.lang.String a2
        end local 1 // int fromIndex1
        end local 0 // java.lang.String a1
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0          a1  Ljava/lang/String;
            0    7     1  fromIndex1  I
            0    7     2          a2  Ljava/lang/String;
            0    7     3  fromIndex2  I
            0    7     4        mask  Ljava/lang/String;
            1    6     5           i  I
    MethodParameters:
            Name  Flags
      a1          
      fromIndex1  
      a2          
      fromIndex2  
      mask        

  private static void checkArgsRegionEquals(int, int, int);
    descriptor: (III)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // int fromIndex1
        start local 1 // int fromIndex2
        start local 2 // int length
         0: .line 466
            iload 0 /* fromIndex1 */
            iflt 1
            iload 1 /* fromIndex2 */
            iflt 1
            iload 2 /* length */
            ifge 2
         1: .line 467
      StackMap locals:
      StackMap stack:
            ldc "length, fromIndex1 and fromIndex2 must be positive"
            invokestatic com.oracle.truffle.api.ArrayUtils.illegalArgumentException:(Ljava/lang/String;)V
         2: .line 469
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int length
        end local 1 // int fromIndex2
        end local 0 // int fromIndex1
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0  fromIndex1  I
            0    3     1  fromIndex2  I
            0    3     2      length  I
    MethodParameters:
            Name  Flags
      fromIndex1  
      fromIndex2  
      length      

  private static void checkMaskLengthRegionEquals(int, int);
    descriptor: (II)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // int length
        start local 1 // int maskLength
         0: .line 472
            iload 0 /* length */
            iload 1 /* maskLength */
            if_icmple 2
         1: .line 473
            ldc "mask length must be greater or equal to length"
            invokestatic com.oracle.truffle.api.ArrayUtils.illegalArgumentException:(Ljava/lang/String;)V
         2: .line 475
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int maskLength
        end local 0 // int length
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0      length  I
            0    3     1  maskLength  I
    MethodParameters:
            Name  Flags
      length      
      maskLength  

  private static boolean regionEqualsOutOfBounds(int, int, int, int, int);
    descriptor: (IIIII)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // int a1Length
        start local 1 // int fromIndex1
        start local 2 // int a2Length
        start local 3 // int fromIndex2
        start local 4 // int length
         0: .line 478
            iload 0 /* a1Length */
            iload 1 /* fromIndex1 */
            isub
            iload 4 /* length */
            if_icmplt 1
            iload 2 /* a2Length */
            iload 3 /* fromIndex2 */
            isub
            iload 4 /* length */
            if_icmplt 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 4 // int length
        end local 3 // int fromIndex2
        end local 2 // int a2Length
        end local 1 // int fromIndex1
        end local 0 // int a1Length
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0    a1Length  I
            0    2     1  fromIndex1  I
            0    2     2    a2Length  I
            0    2     3  fromIndex2  I
            0    2     4      length  I
    MethodParameters:
            Name  Flags
      a1Length    
      fromIndex1  
      a2Length    
      fromIndex2  
      length      

  private static void requireNonNull(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object obj
         0: .line 482
            aload 0 /* obj */
            ifnonnull 3
         1: .line 483
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 484
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         3: .line 486
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0   obj  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      obj   

  private static void illegalArgumentException(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String msg
         0: .line 489
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         1: .line 490
            new java.lang.IllegalArgumentException
            dup
            aload 0 /* msg */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.String msg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   msg  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      msg   
}
SourceFile: "ArrayUtils.java"