public class com.oracle.truffle.regex.RegexEngine extends com.oracle.truffle.regex.AbstractConstantKeysObject
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.regex.RegexEngine
  super_class: com.oracle.truffle.regex.AbstractConstantKeysObject
{
  private static final java.lang.String PROP_VALIDATE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "validate"

  private static final com.oracle.truffle.regex.util.TruffleReadOnlyKeysArray KEYS;
    descriptor: Lcom/oracle/truffle/regex/util/TruffleReadOnlyKeysArray;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final com.oracle.truffle.regex.RegexCompiler compiler;
    descriptor: Lcom/oracle/truffle/regex/RegexCompiler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.regex.RegexOptions options;
    descriptor: Lcom/oracle/truffle/regex/RegexOptions;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=0, args_size=0
         0: .line 94
            new com.oracle.truffle.regex.util.TruffleReadOnlyKeysArray
            dup
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "validate"
            aastore
            invokespecial com.oracle.truffle.regex.util.TruffleReadOnlyKeysArray.<init>:([Ljava/lang/String;)V
            putstatic com.oracle.truffle.regex.RegexEngine.KEYS:Lcom/oracle/truffle/regex/util/TruffleReadOnlyKeysArray;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(com.oracle.truffle.regex.RegexCompiler, com.oracle.truffle.regex.RegexOptions);
    descriptor: (Lcom/oracle/truffle/regex/RegexCompiler;Lcom/oracle/truffle/regex/RegexOptions;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.regex.RegexEngine this
        start local 1 // com.oracle.truffle.regex.RegexCompiler compiler
        start local 2 // com.oracle.truffle.regex.RegexOptions options
         0: .line 99
            aload 0 /* this */
            invokespecial com.oracle.truffle.regex.AbstractConstantKeysObject.<init>:()V
         1: .line 100
            aload 0 /* this */
            aload 1 /* compiler */
            putfield com.oracle.truffle.regex.RegexEngine.compiler:Lcom/oracle/truffle/regex/RegexCompiler;
         2: .line 101
            aload 0 /* this */
            aload 2 /* options */
            putfield com.oracle.truffle.regex.RegexEngine.options:Lcom/oracle/truffle/regex/RegexOptions;
         3: .line 102
            return
        end local 2 // com.oracle.truffle.regex.RegexOptions options
        end local 1 // com.oracle.truffle.regex.RegexCompiler compiler
        end local 0 // com.oracle.truffle.regex.RegexEngine this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/oracle/truffle/regex/RegexEngine;
            0    4     1  compiler  Lcom/oracle/truffle/regex/RegexCompiler;
            0    4     2   options  Lcom/oracle/truffle/regex/RegexOptions;
    MethodParameters:
          Name  Flags
      compiler  
      options   

  public com.oracle.truffle.regex.RegexObject compile(com.oracle.truffle.regex.RegexSource);
    descriptor: (Lcom/oracle/truffle/regex/RegexSource;)Lcom/oracle/truffle/regex/RegexObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // com.oracle.truffle.regex.RegexEngine this
        start local 1 // com.oracle.truffle.regex.RegexSource regexSource
         0: .line 106
            aload 0 /* this */
            getfield com.oracle.truffle.regex.RegexEngine.options:Lcom/oracle/truffle/regex/RegexOptions;
            invokevirtual com.oracle.truffle.regex.RegexOptions.getFlavor:()Lcom/oracle/truffle/regex/tregex/parser/flavors/RegexFlavor;
            astore 2 /* flavor */
        start local 2 // com.oracle.truffle.regex.tregex.parser.flavors.RegexFlavor flavor
         1: .line 108
            aload 2 /* flavor */
            ifnull 6
         2: .line 109
            aload 2 /* flavor */
            aload 1 /* regexSource */
            invokeinterface com.oracle.truffle.regex.tregex.parser.flavors.RegexFlavor.forRegex:(Lcom/oracle/truffle/regex/RegexSource;)Lcom/oracle/truffle/regex/tregex/parser/flavors/RegexFlavorProcessor;
            astore 4 /* flavorProcessor */
        start local 4 // com.oracle.truffle.regex.tregex.parser.flavors.RegexFlavorProcessor flavorProcessor
         3: .line 110
            aload 4 /* flavorProcessor */
            invokeinterface com.oracle.truffle.regex.tregex.parser.flavors.RegexFlavorProcessor.validate:()V
         4: .line 111
            new com.oracle.truffle.regex.RegexObject
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.regex.RegexEngine.compiler:Lcom/oracle/truffle/regex/RegexCompiler;
            aload 1 /* regexSource */
            aload 4 /* flavorProcessor */
            invokeinterface com.oracle.truffle.regex.tregex.parser.flavors.RegexFlavorProcessor.getFlags:()Lcom/oracle/truffle/api/interop/TruffleObject;
            aload 4 /* flavorProcessor */
            invokeinterface com.oracle.truffle.regex.tregex.parser.flavors.RegexFlavorProcessor.getNumberOfCaptureGroups:()I
            aload 4 /* flavorProcessor */
            invokeinterface com.oracle.truffle.regex.tregex.parser.flavors.RegexFlavorProcessor.getNamedCaptureGroups:()Ljava/util/Map;
            invokespecial com.oracle.truffle.regex.RegexObject.<init>:(Lcom/oracle/truffle/regex/RegexCompiler;Lcom/oracle/truffle/regex/RegexSource;Lcom/oracle/truffle/api/interop/TruffleObject;ILjava/util/Map;)V
            astore 3 /* regexObject */
        end local 4 // com.oracle.truffle.regex.tregex.parser.flavors.RegexFlavorProcessor flavorProcessor
        start local 3 // com.oracle.truffle.regex.RegexObject regexObject
         5: .line 112
            goto 10
        end local 3 // com.oracle.truffle.regex.RegexObject regexObject
         6: .line 113
      StackMap locals: com.oracle.truffle.regex.tregex.parser.flavors.RegexFlavor
      StackMap stack:
            new com.oracle.truffle.regex.tregex.parser.RegexValidator
            dup
            aload 1 /* regexSource */
            aload 0 /* this */
            getfield com.oracle.truffle.regex.RegexEngine.options:Lcom/oracle/truffle/regex/RegexOptions;
            invokespecial com.oracle.truffle.regex.tregex.parser.RegexValidator.<init>:(Lcom/oracle/truffle/regex/RegexSource;Lcom/oracle/truffle/regex/RegexOptions;)V
            astore 4 /* validator */
        start local 4 // com.oracle.truffle.regex.tregex.parser.RegexValidator validator
         7: .line 114
            aload 4 /* validator */
            invokevirtual com.oracle.truffle.regex.tregex.parser.RegexValidator.validate:()V
         8: .line 115
            aload 0 /* this */
            getfield com.oracle.truffle.regex.RegexEngine.options:Lcom/oracle/truffle/regex/RegexOptions;
            invokevirtual com.oracle.truffle.regex.RegexOptions.getFeatureSet:()Lcom/oracle/truffle/regex/tregex/parser/RegexFeatureSet;
            aload 1 /* regexSource */
            aload 4 /* validator */
            invokevirtual com.oracle.truffle.regex.tregex.parser.RegexValidator.getFeatures:()Lcom/oracle/truffle/regex/tregex/parser/RegexFeatures;
            invokeinterface com.oracle.truffle.regex.tregex.parser.RegexFeatureSet.checkSupport:(Lcom/oracle/truffle/regex/RegexSource;Lcom/oracle/truffle/regex/tregex/parser/RegexFeatures;)V
         9: .line 116
            new com.oracle.truffle.regex.RegexObject
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.regex.RegexEngine.compiler:Lcom/oracle/truffle/regex/RegexCompiler;
            aload 1 /* regexSource */
            aload 1 /* regexSource */
            invokevirtual com.oracle.truffle.regex.RegexSource.getFlags:()Ljava/lang/String;
            invokestatic com.oracle.truffle.regex.RegexFlags.parseFlags:(Ljava/lang/String;)Lcom/oracle/truffle/regex/RegexFlags;
            aload 4 /* validator */
            invokevirtual com.oracle.truffle.regex.tregex.parser.RegexValidator.getNumberOfCaptureGroups:()I
            aload 4 /* validator */
            invokevirtual com.oracle.truffle.regex.tregex.parser.RegexValidator.getNamedCaptureGroups:()Ljava/util/Map;
            invokespecial com.oracle.truffle.regex.RegexObject.<init>:(Lcom/oracle/truffle/regex/RegexCompiler;Lcom/oracle/truffle/regex/RegexSource;Lcom/oracle/truffle/api/interop/TruffleObject;ILjava/util/Map;)V
            astore 3 /* regexObject */
        end local 4 // com.oracle.truffle.regex.tregex.parser.RegexValidator validator
        start local 3 // com.oracle.truffle.regex.RegexObject regexObject
        10: .line 118
      StackMap locals: com.oracle.truffle.regex.RegexObject
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.regex.RegexEngine.options:Lcom/oracle/truffle/regex/RegexOptions;
            invokevirtual com.oracle.truffle.regex.RegexOptions.isRegressionTestMode:()Z
            ifeq 12
        11: .line 120
            aload 3 /* regexObject */
            invokevirtual com.oracle.truffle.regex.RegexObject.getCompiledRegexObject:()Ljava/lang/Object;
            pop
        12: .line 122
      StackMap locals:
      StackMap stack:
            aload 3 /* regexObject */
            areturn
        end local 3 // com.oracle.truffle.regex.RegexObject regexObject
        end local 2 // com.oracle.truffle.regex.tregex.parser.flavors.RegexFlavor flavor
        end local 1 // com.oracle.truffle.regex.RegexSource regexSource
        end local 0 // com.oracle.truffle.regex.RegexEngine this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0             this  Lcom/oracle/truffle/regex/RegexEngine;
            0   13     1      regexSource  Lcom/oracle/truffle/regex/RegexSource;
            1   13     2           flavor  Lcom/oracle/truffle/regex/tregex/parser/flavors/RegexFlavor;
            5    6     3      regexObject  Lcom/oracle/truffle/regex/RegexObject;
           10   13     3      regexObject  Lcom/oracle/truffle/regex/RegexObject;
            3    5     4  flavorProcessor  Lcom/oracle/truffle/regex/tregex/parser/flavors/RegexFlavorProcessor;
            7   10     4        validator  Lcom/oracle/truffle/regex/tregex/parser/RegexValidator;
    Exceptions:
      throws com.oracle.truffle.regex.RegexSyntaxException, com.oracle.truffle.regex.UnsupportedRegexException
    MethodParameters:
             Name  Flags
      regexSource  

  public com.oracle.truffle.regex.util.TruffleReadOnlyKeysArray getKeys();
    descriptor: ()Lcom/oracle/truffle/regex/util/TruffleReadOnlyKeysArray;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.regex.RegexEngine this
         0: .line 127
            getstatic com.oracle.truffle.regex.RegexEngine.KEYS:Lcom/oracle/truffle/regex/util/TruffleReadOnlyKeysArray;
            areturn
        end local 0 // com.oracle.truffle.regex.RegexEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/regex/RegexEngine;

  public java.lang.Object readMemberImpl(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.regex.RegexEngine this
        start local 1 // java.lang.String symbol
         0: .line 132
            aload 1 /* symbol */
            dup
            astore 2
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 1
          -1421272810: 1
              default: 3
          }
      StackMap locals: java.lang.String
      StackMap stack:
         1: aload 2
            ldc "validate"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 2
            goto 3
         2: .line 134
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.regex.RegexEngine$ValidateMethod
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.regex.RegexEngine$ValidateMethod.<init>:(Lcom/oracle/truffle/regex/RegexEngine;)V
            areturn
         3: .line 136
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         4: .line 137
            aload 1 /* symbol */
            invokestatic com.oracle.truffle.api.interop.UnknownIdentifierException.create:(Ljava/lang/String;)Lcom/oracle/truffle/api/interop/UnknownIdentifierException;
            athrow
        end local 1 // java.lang.String symbol
        end local 0 // com.oracle.truffle.regex.RegexEngine this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/regex/RegexEngine;
            0    5     1  symbol  Ljava/lang/String;
    Exceptions:
      throws com.oracle.truffle.api.interop.UnknownIdentifierException
    MethodParameters:
        Name  Flags
      symbol  

  public boolean isExecutable();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.regex.RegexEngine this
         0: .line 143
            iconst_1
            ireturn
        end local 0 // com.oracle.truffle.regex.RegexEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/regex/RegexEngine;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()

  java.lang.Object execute(java.lang.Object[], com.oracle.truffle.regex.runtime.nodes.ToStringNode, com.oracle.truffle.regex.runtime.nodes.ToStringNode, com.oracle.truffle.regex.runtime.nodes.ToStringNode);
    descriptor: ([Ljava/lang/Object;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.oracle.truffle.regex.RegexEngine this
        start local 1 // java.lang.Object[] args
        start local 2 // com.oracle.truffle.regex.runtime.nodes.ToStringNode patternToStringNode
        start local 3 // com.oracle.truffle.regex.runtime.nodes.ToStringNode flagsToStringNode
        start local 4 // com.oracle.truffle.regex.runtime.nodes.ToStringNode encodingToStringNode
         0: .line 151
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* args */
            aload 2 /* patternToStringNode */
            aload 3 /* flagsToStringNode */
            aload 4 /* encodingToStringNode */
            invokevirtual com.oracle.truffle.regex.RegexEngine.argsToRegexSource:([Ljava/lang/Object;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;)Lcom/oracle/truffle/regex/RegexSource;
            invokevirtual com.oracle.truffle.regex.RegexEngine.compile:(Lcom/oracle/truffle/regex/RegexSource;)Lcom/oracle/truffle/regex/RegexObject;
            areturn
        end local 4 // com.oracle.truffle.regex.runtime.nodes.ToStringNode encodingToStringNode
        end local 3 // com.oracle.truffle.regex.runtime.nodes.ToStringNode flagsToStringNode
        end local 2 // com.oracle.truffle.regex.runtime.nodes.ToStringNode patternToStringNode
        end local 1 // java.lang.Object[] args
        end local 0 // com.oracle.truffle.regex.RegexEngine this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Lcom/oracle/truffle/regex/RegexEngine;
            0    1     1                  args  [Ljava/lang/Object;
            0    1     2   patternToStringNode  Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;
            0    1     3     flagsToStringNode  Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;
            0    1     4  encodingToStringNode  Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "patternToStringNode")
        com.oracle.truffle.api.dsl.Cached()
      2:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "flagsToStringNode")
        com.oracle.truffle.api.dsl.Cached()
      3:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "encodingToStringNode")
        com.oracle.truffle.api.dsl.Cached()
    MethodParameters:
                      Name  Flags
      args                  
      patternToStringNode   
      flagsToStringNode     
      encodingToStringNode  

  boolean isMemberInvocable(java.lang.String, com.oracle.truffle.regex.runtime.nodes.StringEqualsNode);
    descriptor: (Ljava/lang/String;Lcom/oracle/truffle/regex/runtime/nodes/StringEqualsNode;)Z
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.regex.RegexEngine this
        start local 1 // java.lang.String member
        start local 2 // com.oracle.truffle.regex.runtime.nodes.StringEqualsNode isValidatePropNode
         0: .line 158
            aload 2 /* isValidatePropNode */
            aload 1 /* member */
            ldc "validate"
            invokevirtual com.oracle.truffle.regex.runtime.nodes.StringEqualsNode.execute:(Ljava/lang/String;Ljava/lang/String;)Z
            ireturn
        end local 2 // com.oracle.truffle.regex.runtime.nodes.StringEqualsNode isValidatePropNode
        end local 1 // java.lang.String member
        end local 0 // com.oracle.truffle.regex.RegexEngine this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0                this  Lcom/oracle/truffle/regex/RegexEngine;
            0    1     1              member  Ljava/lang/String;
            0    1     2  isValidatePropNode  Lcom/oracle/truffle/regex/runtime/nodes/StringEqualsNode;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "isValidatePropNode")
        com.oracle.truffle.api.dsl.Cached()
    MethodParameters:
                    Name  Flags
      member              
      isValidatePropNode  

  java.lang.Object invokeMember(java.lang.String, java.lang.Object[], com.oracle.truffle.regex.runtime.nodes.StringEqualsNode, com.oracle.truffle.regex.runtime.nodes.ToStringNode, com.oracle.truffle.regex.runtime.nodes.ToStringNode, com.oracle.truffle.regex.runtime.nodes.ToStringNode);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;Lcom/oracle/truffle/regex/runtime/nodes/StringEqualsNode;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;)Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=5, locals=7, args_size=7
        start local 0 // com.oracle.truffle.regex.RegexEngine this
        start local 1 // java.lang.String member
        start local 2 // java.lang.Object[] args
        start local 3 // com.oracle.truffle.regex.runtime.nodes.StringEqualsNode isValidatePropNode
        start local 4 // com.oracle.truffle.regex.runtime.nodes.ToStringNode patternToStringNode
        start local 5 // com.oracle.truffle.regex.runtime.nodes.ToStringNode flagsToStringNode
        start local 6 // com.oracle.truffle.regex.runtime.nodes.ToStringNode encodingToStringNode
         0: .line 167
            aload 3 /* isValidatePropNode */
            aload 1 /* member */
            ldc "validate"
            invokevirtual com.oracle.truffle.regex.runtime.nodes.StringEqualsNode.execute:(Ljava/lang/String;Ljava/lang/String;)Z
            ifne 3
         1: .line 168
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 169
            aload 1 /* member */
            invokestatic com.oracle.truffle.api.interop.UnknownIdentifierException.create:(Ljava/lang/String;)Lcom/oracle/truffle/api/interop/UnknownIdentifierException;
            athrow
         3: .line 171
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* args */
            aload 4 /* patternToStringNode */
            aload 5 /* flagsToStringNode */
            aload 6 /* encodingToStringNode */
            invokevirtual com.oracle.truffle.regex.RegexEngine.argsToRegexSource:([Ljava/lang/Object;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;)Lcom/oracle/truffle/regex/RegexSource;
            invokestatic com.oracle.truffle.regex.tregex.parser.RegexValidator.validate:(Lcom/oracle/truffle/regex/RegexSource;)V
         4: .line 172
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
        end local 6 // com.oracle.truffle.regex.runtime.nodes.ToStringNode encodingToStringNode
        end local 5 // com.oracle.truffle.regex.runtime.nodes.ToStringNode flagsToStringNode
        end local 4 // com.oracle.truffle.regex.runtime.nodes.ToStringNode patternToStringNode
        end local 3 // com.oracle.truffle.regex.runtime.nodes.StringEqualsNode isValidatePropNode
        end local 2 // java.lang.Object[] args
        end local 1 // java.lang.String member
        end local 0 // com.oracle.truffle.regex.RegexEngine this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    5     0                  this  Lcom/oracle/truffle/regex/RegexEngine;
            0    5     1                member  Ljava/lang/String;
            0    5     2                  args  [Ljava/lang/Object;
            0    5     3    isValidatePropNode  Lcom/oracle/truffle/regex/runtime/nodes/StringEqualsNode;
            0    5     4   patternToStringNode  Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;
            0    5     5     flagsToStringNode  Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;
            0    5     6  encodingToStringNode  Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;
    Exceptions:
      throws com.oracle.truffle.api.interop.UnknownIdentifierException, com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "isValidatePropNode")
        com.oracle.truffle.api.dsl.Cached()
      3:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "patternToStringNode")
        com.oracle.truffle.api.dsl.Cached()
      4:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "flagsToStringNode")
        com.oracle.truffle.api.dsl.Cached()
      5:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "encodingToStringNode")
        com.oracle.truffle.api.dsl.Cached()
    MethodParameters:
                      Name  Flags
      member                
      args                  
      isValidatePropNode    
      patternToStringNode   
      flagsToStringNode     
      encodingToStringNode  

  private com.oracle.truffle.regex.RegexSource argsToRegexSource(java.lang.Object[], com.oracle.truffle.regex.runtime.nodes.ToStringNode, com.oracle.truffle.regex.runtime.nodes.ToStringNode, com.oracle.truffle.regex.runtime.nodes.ToStringNode);
    descriptor: ([Ljava/lang/Object;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;)Lcom/oracle/truffle/regex/RegexSource;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // com.oracle.truffle.regex.RegexEngine this
        start local 1 // java.lang.Object[] args
        start local 2 // com.oracle.truffle.regex.runtime.nodes.ToStringNode patternToStringNode
        start local 3 // com.oracle.truffle.regex.runtime.nodes.ToStringNode flagsToStringNode
        start local 4 // com.oracle.truffle.regex.runtime.nodes.ToStringNode encodingToStringNode
         0: .line 203
            aload 1 /* args */
            arraylength
            ifeq 1
            aload 1 /* args */
            arraylength
            iconst_3
            if_icmple 3
         1: .line 204
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 205
            iconst_3
            aload 1 /* args */
            arraylength
            invokestatic com.oracle.truffle.api.interop.ArityException.create:(II)Lcom/oracle/truffle/api/interop/ArityException;
            athrow
         3: .line 207
      StackMap locals:
      StackMap stack:
            aload 2 /* patternToStringNode */
            aload 1 /* args */
            iconst_0
            aaload
            invokevirtual com.oracle.truffle.regex.runtime.nodes.ToStringNode.execute:(Ljava/lang/Object;)Ljava/lang/String;
            astore 5 /* pattern */
        start local 5 // java.lang.String pattern
         4: .line 208
            aload 1 /* args */
            arraylength
            iconst_2
            if_icmplt 5
            aload 3 /* flagsToStringNode */
            aload 1 /* args */
            iconst_1
            aaload
            invokevirtual com.oracle.truffle.regex.runtime.nodes.ToStringNode.execute:(Ljava/lang/Object;)Ljava/lang/String;
            goto 6
      StackMap locals: java.lang.String
      StackMap stack:
         5: ldc ""
      StackMap locals:
      StackMap stack: java.lang.String
         6: astore 6 /* flags */
        start local 6 // java.lang.String flags
         7: .line 210
            aload 1 /* args */
            arraylength
            iconst_3
            if_icmpne 10
         8: .line 211
            aload 4 /* encodingToStringNode */
            aload 1 /* args */
            iconst_2
            aaload
            invokevirtual com.oracle.truffle.regex.runtime.nodes.ToStringNode.execute:(Ljava/lang/Object;)Ljava/lang/String;
            invokestatic com.oracle.truffle.regex.tregex.string.Encodings.getEncoding:(Ljava/lang/String;)Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
            astore 7 /* encoding */
        start local 7 // com.oracle.truffle.regex.tregex.string.Encodings$Encoding encoding
         9: .line 212
            goto 13
        end local 7 // com.oracle.truffle.regex.tregex.string.Encodings$Encoding encoding
        10: .line 213
      StackMap locals: java.lang.String
      StackMap stack:
            aload 6 /* flags */
            bipush 117
            invokevirtual java.lang.String.indexOf:(I)I
            iflt 11
            aload 0 /* this */
            getfield com.oracle.truffle.regex.RegexEngine.options:Lcom/oracle/truffle/regex/RegexOptions;
            invokevirtual com.oracle.truffle.regex.RegexOptions.isUTF16ExplodeAstralSymbols:()Z
            ifne 11
            getstatic com.oracle.truffle.regex.tregex.string.Encodings.UTF_16:Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
            goto 12
      StackMap locals:
      StackMap stack:
        11: getstatic com.oracle.truffle.regex.tregex.string.Encodings.UTF_16_RAW:Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
      StackMap locals:
      StackMap stack: com.oracle.truffle.regex.tregex.string.Encodings$Encoding
        12: astore 7 /* encoding */
        start local 7 // com.oracle.truffle.regex.tregex.string.Encodings$Encoding encoding
        13: .line 215
      StackMap locals: com.oracle.truffle.regex.tregex.string.Encodings$Encoding
      StackMap stack:
            new com.oracle.truffle.regex.RegexSource
            dup
            aload 5 /* pattern */
            aload 6 /* flags */
            aload 7 /* encoding */
            invokespecial com.oracle.truffle.regex.RegexSource.<init>:(Ljava/lang/String;Ljava/lang/String;Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;)V
            areturn
        end local 7 // com.oracle.truffle.regex.tregex.string.Encodings$Encoding encoding
        end local 6 // java.lang.String flags
        end local 5 // java.lang.String pattern
        end local 4 // com.oracle.truffle.regex.runtime.nodes.ToStringNode encodingToStringNode
        end local 3 // com.oracle.truffle.regex.runtime.nodes.ToStringNode flagsToStringNode
        end local 2 // com.oracle.truffle.regex.runtime.nodes.ToStringNode patternToStringNode
        end local 1 // java.lang.Object[] args
        end local 0 // com.oracle.truffle.regex.RegexEngine this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   14     0                  this  Lcom/oracle/truffle/regex/RegexEngine;
            0   14     1                  args  [Ljava/lang/Object;
            0   14     2   patternToStringNode  Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;
            0   14     3     flagsToStringNode  Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;
            0   14     4  encodingToStringNode  Lcom/oracle/truffle/regex/runtime/nodes/ToStringNode;
            4   14     5               pattern  Ljava/lang/String;
            7   14     6                 flags  Ljava/lang/String;
            9   10     7              encoding  Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
           13   14     7              encoding  Lcom/oracle/truffle/regex/tregex/string/Encodings$Encoding;
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException
    MethodParameters:
                      Name  Flags
      args                  
      patternToStringNode   
      flagsToStringNode     
      encodingToStringNode  
}
SourceFile: "RegexEngine.java"
NestMembers:
  com.oracle.truffle.regex.RegexEngine$ValidateMethod
InnerClasses:
  public abstract Shared = com.oracle.truffle.api.dsl.Cached$Shared of com.oracle.truffle.api.dsl.Cached
  public final ValidateMethod = com.oracle.truffle.regex.RegexEngine$ValidateMethod of com.oracle.truffle.regex.RegexEngine
  public abstract Encoding = com.oracle.truffle.regex.tregex.string.Encodings$Encoding of com.oracle.truffle.regex.tregex.string.Encodings
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportLibrary(value = Lcom/oracle/truffle/api/interop/InteropLibrary;)