public final class com.oracle.truffle.js.runtime.RegexCompilerInterface
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.js.runtime.RegexCompilerInterface
  super_class: java.lang.Object
{
  private static final java.lang.String REPEATED_REG_EXP_FLAG_MSG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "Repeated RegExp flag: %c"

  private static final java.lang.String UNSUPPORTED_REG_EXP_FLAG_MSG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "Invalid regular expression flags"

  private static final java.lang.String UNSUPPORTED_REG_EXP_FLAG_MSG_NASHORN;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "Unsupported RegExp flag: %c"

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.runtime.RegexCompilerInterface this
         0: .line 55
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 56
            return
        end local 0 // com.oracle.truffle.js.runtime.RegexCompilerInterface this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/runtime/RegexCompilerInterface;

  public static java.lang.Object compile(java.lang.String, java.lang.String, com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.runtime.util.TRegexUtil$CompileRegexNode);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/runtime/util/TRegexUtil$CompileRegexNode;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // java.lang.String pattern
        start local 1 // java.lang.String flags
        start local 2 // com.oracle.truffle.js.runtime.JSContext context
        start local 3 // com.oracle.truffle.js.runtime.util.TRegexUtil$CompileRegexNode compileRegexNode
         0: .line 61
            aload 1 /* flags */
            aload 2 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getEcmaScriptVersion:()I
            aload 2 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.isOptionNashornCompatibilityMode:()Z
            invokestatic com.oracle.truffle.js.runtime.RegexCompilerInterface.validateFlags:(Ljava/lang/String;IZ)V
         1: .line 63
            aload 3 /* compileRegexNode */
            aload 2 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getRegexEngine:()Ljava/lang/Object;
            aload 0 /* pattern */
            aload 1 /* flags */
            invokevirtual com.oracle.truffle.js.runtime.util.TRegexUtil$CompileRegexNode.execute:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
         2: areturn
         3: .line 64
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.exception.AbstractTruffleException
            astore 4 /* e */
        start local 4 // com.oracle.truffle.api.exception.AbstractTruffleException e
         4: .line 65
            aload 4 /* e */
            invokestatic com.oracle.truffle.js.runtime.RegexCompilerInterface.rethrowAsSyntaxError:(Lcom/oracle/truffle/api/exception/AbstractTruffleException;)Lcom/oracle/truffle/api/exception/AbstractTruffleException;
            athrow
        end local 4 // com.oracle.truffle.api.exception.AbstractTruffleException e
        end local 3 // com.oracle.truffle.js.runtime.util.TRegexUtil$CompileRegexNode compileRegexNode
        end local 2 // com.oracle.truffle.js.runtime.JSContext context
        end local 1 // java.lang.String flags
        end local 0 // java.lang.String pattern
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0           pattern  Ljava/lang/String;
            0    5     1             flags  Ljava/lang/String;
            0    5     2           context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    5     3  compileRegexNode  Lcom/oracle/truffle/js/runtime/util/TRegexUtil$CompileRegexNode;
            4    5     4                 e  Lcom/oracle/truffle/api/exception/AbstractTruffleException;
      Exception table:
        from    to  target  type
           1     2       3  Class com.oracle.truffle.api.exception.AbstractTruffleException
    MethodParameters:
                  Name  Flags
      pattern           
      flags             
      context           
      compileRegexNode  

  public static void validate(com.oracle.truffle.js.runtime.JSContext, java.lang.String, java.lang.String, int);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/String;Ljava/lang/String;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // java.lang.String pattern
        start local 2 // java.lang.String flags
        start local 3 // int ecmaScriptVersion
         0: .line 71
            aload 0 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.isOptionNashornCompatibilityMode:()Z
            ifeq 2
            aload 2 /* flags */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 2
         1: .line 72
            aload 2 /* flags */
            iload 3 /* ecmaScriptVersion */
            iconst_1
            invokestatic com.oracle.truffle.js.runtime.RegexCompilerInterface.validateFlags:(Ljava/lang/String;IZ)V
         2: .line 75
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.js.runtime.util.TRegexUtil$ValidateRegexNode.getUncached:()Lcom/oracle/truffle/js/runtime/util/TRegexUtil$ValidateRegexNode;
            aload 0 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getRegexEngine:()Ljava/lang/Object;
            aload 1 /* pattern */
            aload 2 /* flags */
            invokevirtual com.oracle.truffle.js.runtime.util.TRegexUtil$ValidateRegexNode.execute:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
            pop
         3: .line 76
            goto 6
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.exception.AbstractTruffleException
         4: astore 4 /* e */
        start local 4 // com.oracle.truffle.api.exception.AbstractTruffleException e
         5: .line 77
            aload 4 /* e */
            invokestatic com.oracle.truffle.js.runtime.RegexCompilerInterface.rethrowAsSyntaxError:(Lcom/oracle/truffle/api/exception/AbstractTruffleException;)Lcom/oracle/truffle/api/exception/AbstractTruffleException;
            athrow
        end local 4 // com.oracle.truffle.api.exception.AbstractTruffleException e
         6: .line 79
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int ecmaScriptVersion
        end local 2 // java.lang.String flags
        end local 1 // java.lang.String pattern
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    7     0            context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    7     1            pattern  Ljava/lang/String;
            0    7     2              flags  Ljava/lang/String;
            0    7     3  ecmaScriptVersion  I
            5    6     4                  e  Lcom/oracle/truffle/api/exception/AbstractTruffleException;
      Exception table:
        from    to  target  type
           2     3       4  Class com.oracle.truffle.api.exception.AbstractTruffleException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
                   Name  Flags
      context            
      pattern            
      flags              
      ecmaScriptVersion  

  public static void validateFlags(java.lang.String, int, boolean);
    descriptor: (Ljava/lang/String;IZ)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=12, args_size=3
        start local 0 // java.lang.String flags
        start local 1 // int ecmaScriptVersion
        start local 2 // boolean nashornCompat
         0: .line 84
            iconst_0
            istore 3 /* ignoreCase */
        start local 3 // boolean ignoreCase
         1: .line 85
            iconst_0
            istore 4 /* multiline */
        start local 4 // boolean multiline
         2: .line 86
            iconst_0
            istore 5 /* global */
        start local 5 // boolean global
         3: .line 87
            iconst_0
            istore 6 /* sticky */
        start local 6 // boolean sticky
         4: .line 88
            iconst_0
            istore 7 /* unicode */
        start local 7 // boolean unicode
         5: .line 89
            iconst_0
            istore 8 /* dotAll */
        start local 8 // boolean dotAll
         6: .line 91
            iconst_0
            istore 9 /* i */
        start local 9 // int i
         7: goto 37
         8: .line 92
      StackMap locals: java.lang.String int int int int int int int int int
      StackMap stack:
            aload 0 /* flags */
            iload 9 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 10 /* ch */
        start local 10 // char ch
         9: .line 94
            iload 10 /* ch */
            lookupswitch { // 6
                  103: 16
                  105: 10
                  109: 13
                  115: 27
                  117: 23
                  121: 19
              default: 31
          }
        10: .line 96
      StackMap locals: int
      StackMap stack:
            iload 3 /* ignoreCase */
            istore 11 /* repeated */
        start local 11 // boolean repeated
        11: .line 97
            iconst_1
            istore 3 /* ignoreCase */
        12: .line 98
            goto 34
        end local 11 // boolean repeated
        13: .line 100
      StackMap locals:
      StackMap stack:
            iload 4 /* multiline */
            istore 11 /* repeated */
        start local 11 // boolean repeated
        14: .line 101
            iconst_1
            istore 4 /* multiline */
        15: .line 102
            goto 34
        end local 11 // boolean repeated
        16: .line 104
      StackMap locals:
      StackMap stack:
            iload 5 /* global */
            istore 11 /* repeated */
        start local 11 // boolean repeated
        17: .line 105
            iconst_1
            istore 5 /* global */
        18: .line 106
            goto 34
        end local 11 // boolean repeated
        19: .line 108
      StackMap locals:
      StackMap stack:
            iload 1 /* ecmaScriptVersion */
            bipush 6
            if_icmplt 23
        20: .line 109
            iload 6 /* sticky */
            istore 11 /* repeated */
        start local 11 // boolean repeated
        21: .line 110
            iconst_1
            istore 6 /* sticky */
        22: .line 111
            goto 34
        end local 11 // boolean repeated
        23: .line 115
      StackMap locals:
      StackMap stack:
            iload 1 /* ecmaScriptVersion */
            bipush 6
            if_icmplt 27
        24: .line 116
            iload 7 /* unicode */
            istore 11 /* repeated */
        start local 11 // boolean repeated
        25: .line 117
            iconst_1
            istore 7 /* unicode */
        26: .line 118
            goto 34
        end local 11 // boolean repeated
        27: .line 122
      StackMap locals:
      StackMap stack:
            iload 1 /* ecmaScriptVersion */
            bipush 9
            if_icmplt 31
        28: .line 123
            iload 8 /* dotAll */
            istore 11 /* repeated */
        start local 11 // boolean repeated
        29: .line 124
            iconst_1
            istore 8 /* dotAll */
        30: .line 125
            goto 34
        end local 11 // boolean repeated
        31: .line 129
      StackMap locals:
      StackMap stack:
            iload 2 /* nashornCompat */
            ifeq 33
        32: .line 130
            ldc "Unsupported RegExp flag: %c"
            iload 10 /* ch */
            invokestatic com.oracle.truffle.js.runtime.RegexCompilerInterface.throwFlagError:(Ljava/lang/String;C)Ljava/lang/RuntimeException;
            athrow
        33: .line 132
      StackMap locals:
      StackMap stack:
            ldc "Invalid regular expression flags"
            invokestatic com.oracle.truffle.js.runtime.RegexCompilerInterface.throwFlagError:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        start local 11 // boolean repeated
        34: .line 135
      StackMap locals: int
      StackMap stack:
            iload 11 /* repeated */
            ifeq 36
        35: .line 136
            ldc "Repeated RegExp flag: %c"
            iload 10 /* ch */
            invokestatic com.oracle.truffle.js.runtime.RegexCompilerInterface.throwFlagError:(Ljava/lang/String;C)Ljava/lang/RuntimeException;
            athrow
        end local 11 // boolean repeated
        end local 10 // char ch
        36: .line 91
      StackMap locals:
      StackMap stack:
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        37: iload 9 /* i */
            aload 0 /* flags */
            invokevirtual java.lang.String.length:()I
            if_icmplt 8
        end local 9 // int i
        38: .line 139
            return
        end local 8 // boolean dotAll
        end local 7 // boolean unicode
        end local 6 // boolean sticky
        end local 5 // boolean global
        end local 4 // boolean multiline
        end local 3 // boolean ignoreCase
        end local 2 // boolean nashornCompat
        end local 1 // int ecmaScriptVersion
        end local 0 // java.lang.String flags
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   39     0              flags  Ljava/lang/String;
            0   39     1  ecmaScriptVersion  I
            0   39     2      nashornCompat  Z
            1   39     3         ignoreCase  Z
            2   39     4          multiline  Z
            3   39     5             global  Z
            4   39     6             sticky  Z
            5   39     7            unicode  Z
            6   39     8             dotAll  Z
            7   38     9                  i  I
            9   36    10                 ch  C
           11   13    11           repeated  Z
           14   16    11           repeated  Z
           17   19    11           repeated  Z
           21   23    11           repeated  Z
           25   27    11           repeated  Z
           29   31    11           repeated  Z
           34   36    11           repeated  Z
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
                   Name  Flags
      flags              
      ecmaScriptVersion  
      nashornCompat      

  private static java.lang.RuntimeException throwFlagError(java.lang.String, char);
    descriptor: (Ljava/lang/String;C)Ljava/lang/RuntimeException;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // java.lang.String msg
        start local 1 // char flag
         0: .line 143
            aload 0 /* msg */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            iload 1 /* flag */
            invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokestatic com.oracle.truffle.js.runtime.Errors.createSyntaxError:(Ljava/lang/String;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
        end local 1 // char flag
        end local 0 // java.lang.String msg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   msg  Ljava/lang/String;
            0    1     1  flag  C
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
      Name  Flags
      msg   
      flag  

  private static java.lang.RuntimeException throwFlagError(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/RuntimeException;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String msg
         0: .line 148
            aload 0 /* msg */
            invokestatic com.oracle.truffle.js.runtime.Errors.createSyntaxError:(Ljava/lang/String;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
        end local 0 // java.lang.String msg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   msg  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
      Name  Flags
      msg   

  private static com.oracle.truffle.api.exception.AbstractTruffleException rethrowAsSyntaxError(com.oracle.truffle.api.exception.AbstractTruffleException);
    descriptor: (Lcom/oracle/truffle/api/exception/AbstractTruffleException;)Lcom/oracle/truffle/api/exception/AbstractTruffleException;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.exception.AbstractTruffleException e
         0: .line 155
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getUncached:()Lcom/oracle/truffle/api/interop/InteropLibrary;
            aload 0 /* e */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.getExceptionType:(Ljava/lang/Object;)Lcom/oracle/truffle/api/interop/ExceptionType;
            astore 1 /* exceptionType */
        start local 1 // com.oracle.truffle.api.interop.ExceptionType exceptionType
         1: .line 156
            goto 4
        end local 1 // com.oracle.truffle.api.interop.ExceptionType exceptionType
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.UnsupportedMessageException
         2: pop
         3: .line 157
            invokestatic com.oracle.truffle.js.runtime.Errors.shouldNotReachHere:()Ljava/lang/RuntimeException;
            athrow
        start local 1 // com.oracle.truffle.api.interop.ExceptionType exceptionType
         4: .line 159
      StackMap locals: com.oracle.truffle.api.interop.ExceptionType
      StackMap stack:
            aload 1 /* exceptionType */
            getstatic com.oracle.truffle.api.interop.ExceptionType.PARSE_ERROR:Lcom/oracle/truffle/api/interop/ExceptionType;
            if_acmpne 6
         5: .line 160
            aload 0 /* e */
            invokevirtual com.oracle.truffle.api.exception.AbstractTruffleException.getMessage:()Ljava/lang/String;
            invokestatic com.oracle.truffle.js.runtime.Errors.createSyntaxError:(Ljava/lang/String;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
         6: .line 162
      StackMap locals:
      StackMap stack:
            aload 0 /* e */
            athrow
        end local 1 // com.oracle.truffle.api.interop.ExceptionType exceptionType
        end local 0 // com.oracle.truffle.api.exception.AbstractTruffleException e
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0              e  Lcom/oracle/truffle/api/exception/AbstractTruffleException;
            1    2     1  exceptionType  Lcom/oracle/truffle/api/interop/ExceptionType;
            4    7     1  exceptionType  Lcom/oracle/truffle/api/interop/ExceptionType;
      Exception table:
        from    to  target  type
           0     1       2  Class com.oracle.truffle.api.interop.UnsupportedMessageException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
      Name  Flags
      e     
}
SourceFile: "RegexCompilerInterface.java"
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract CompileRegexNode = com.oracle.truffle.js.runtime.util.TRegexUtil$CompileRegexNode of com.oracle.truffle.js.runtime.util.TRegexUtil
  public abstract ValidateRegexNode = com.oracle.truffle.js.runtime.util.TRegexUtil$ValidateRegexNode of com.oracle.truffle.js.runtime.util.TRegexUtil