public class jdk.nashorn.internal.runtime.regexp.RegExpFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.nashorn.internal.runtime.regexp.RegExpFactory
  super_class: java.lang.Object
{
  private static final jdk.nashorn.internal.runtime.regexp.RegExpFactory instance;
    descriptor: Ljdk/nashorn/internal/runtime/regexp/RegExpFactory;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String JDK;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "jdk"

  private static final java.lang.String JONI;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "joni"

  private static final java.util.Map<java.lang.String, jdk.nashorn.internal.runtime.regexp.RegExp> REGEXP_CACHE;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljdk/nashorn/internal/runtime/regexp/RegExp;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=2, args_size=0
         0: .line 51
            new java.util.WeakHashMap
            dup
            invokespecial java.util.WeakHashMap.<init>:()V
            invokestatic java.util.Collections.synchronizedMap:(Ljava/util/Map;)Ljava/util/Map;
         1: .line 50
            putstatic jdk.nashorn.internal.runtime.regexp.RegExpFactory.REGEXP_CACHE:Ljava/util/Map;
         2: .line 54
            ldc "nashorn.regexp.impl"
            ldc "joni"
            invokestatic jdk.nashorn.internal.runtime.options.Options.getStringProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* impl */
        start local 0 // java.lang.String impl
         3: .line 55
            aload 0 /* impl */
            dup
            astore 1
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 2
               105073: 4
              3268032: 5
              default: 10
          }
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
         4: aload 1
            ldc "jdk"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            goto 10
      StackMap locals:
      StackMap stack:
         5: aload 1
            ldc "joni"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 6
            goto 10
         6: .line 57
      StackMap locals:
      StackMap stack:
            new jdk.nashorn.internal.runtime.regexp.JoniRegExp$Factory
            dup
            invokespecial jdk.nashorn.internal.runtime.regexp.JoniRegExp$Factory.<init>:()V
            putstatic jdk.nashorn.internal.runtime.regexp.RegExpFactory.instance:Ljdk/nashorn/internal/runtime/regexp/RegExpFactory;
         7: .line 58
            goto 12
         8: .line 60
      StackMap locals:
      StackMap stack:
            new jdk.nashorn.internal.runtime.regexp.RegExpFactory
            dup
            invokespecial jdk.nashorn.internal.runtime.regexp.RegExpFactory.<init>:()V
            putstatic jdk.nashorn.internal.runtime.regexp.RegExpFactory.instance:Ljdk/nashorn/internal/runtime/regexp/RegExpFactory;
         9: .line 61
            goto 12
        10: .line 63
      StackMap locals:
      StackMap stack:
            aconst_null
            putstatic jdk.nashorn.internal.runtime.regexp.RegExpFactory.instance:Ljdk/nashorn/internal/runtime/regexp/RegExpFactory;
        11: .line 64
            new java.lang.InternalError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported RegExp factory: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* impl */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.InternalError.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.String impl
        12: .line 66
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            3   12     0  impl  Ljava/lang/String;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.nashorn.internal.runtime.regexp.RegExpFactory this
         0: .line 38
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // jdk.nashorn.internal.runtime.regexp.RegExpFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/nashorn/internal/runtime/regexp/RegExpFactory;

  public jdk.nashorn.internal.runtime.regexp.RegExp compile(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljdk/nashorn/internal/runtime/regexp/RegExp;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // jdk.nashorn.internal.runtime.regexp.RegExpFactory this
        start local 1 // java.lang.String pattern
        start local 2 // java.lang.String flags
         0: .line 77
            new jdk.nashorn.internal.runtime.regexp.JdkRegExp
            dup
            aload 1 /* pattern */
            aload 2 /* flags */
            invokespecial jdk.nashorn.internal.runtime.regexp.JdkRegExp.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            areturn
        end local 2 // java.lang.String flags
        end local 1 // java.lang.String pattern
        end local 0 // jdk.nashorn.internal.runtime.regexp.RegExpFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Ljdk/nashorn/internal/runtime/regexp/RegExpFactory;
            0    1     1  pattern  Ljava/lang/String;
            0    1     2    flags  Ljava/lang/String;
    Exceptions:
      throws jdk.nashorn.internal.runtime.ParserException
    MethodParameters:
         Name  Flags
      pattern  final
      flags    final

  public static jdk.nashorn.internal.runtime.regexp.RegExp create(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljdk/nashorn/internal/runtime/regexp/RegExp;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.lang.String pattern
        start local 1 // java.lang.String flags
         0: .line 89
            new java.lang.StringBuilder
            dup
            aload 0 /* pattern */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* flags */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* key */
        start local 2 // java.lang.String key
         1: .line 90
            getstatic jdk.nashorn.internal.runtime.regexp.RegExpFactory.REGEXP_CACHE:Ljava/util/Map;
            aload 2 /* key */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast jdk.nashorn.internal.runtime.regexp.RegExp
            astore 3 /* regexp */
        start local 3 // jdk.nashorn.internal.runtime.regexp.RegExp regexp
         2: .line 91
            aload 3 /* regexp */
            ifnonnull 5
         3: .line 92
            getstatic jdk.nashorn.internal.runtime.regexp.RegExpFactory.instance:Ljdk/nashorn/internal/runtime/regexp/RegExpFactory;
            aload 0 /* pattern */
            aload 1 /* flags */
            invokevirtual jdk.nashorn.internal.runtime.regexp.RegExpFactory.compile:(Ljava/lang/String;Ljava/lang/String;)Ljdk/nashorn/internal/runtime/regexp/RegExp;
            astore 3 /* regexp */
         4: .line 93
            getstatic jdk.nashorn.internal.runtime.regexp.RegExpFactory.REGEXP_CACHE:Ljava/util/Map;
            aload 2 /* key */
            aload 3 /* regexp */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 95
      StackMap locals: java.lang.String jdk.nashorn.internal.runtime.regexp.RegExp
      StackMap stack:
            aload 3 /* regexp */
            areturn
        end local 3 // jdk.nashorn.internal.runtime.regexp.RegExp regexp
        end local 2 // java.lang.String key
        end local 1 // java.lang.String flags
        end local 0 // java.lang.String pattern
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0  pattern  Ljava/lang/String;
            0    6     1    flags  Ljava/lang/String;
            1    6     2      key  Ljava/lang/String;
            2    6     3   regexp  Ljdk/nashorn/internal/runtime/regexp/RegExp;
    MethodParameters:
         Name  Flags
      pattern  final
      flags    final

  public static void validate(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.String pattern
        start local 1 // java.lang.String flags
         0: .line 107
            aload 0 /* pattern */
            aload 1 /* flags */
            invokestatic jdk.nashorn.internal.runtime.regexp.RegExpFactory.create:(Ljava/lang/String;Ljava/lang/String;)Ljdk/nashorn/internal/runtime/regexp/RegExp;
            pop
         1: .line 108
            return
        end local 1 // java.lang.String flags
        end local 0 // java.lang.String pattern
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  pattern  Ljava/lang/String;
            0    2     1    flags  Ljava/lang/String;
    Exceptions:
      throws jdk.nashorn.internal.runtime.ParserException
    MethodParameters:
         Name  Flags
      pattern  final
      flags    final

  public static boolean usesJavaUtilRegex();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 116
            getstatic jdk.nashorn.internal.runtime.regexp.RegExpFactory.instance:Ljdk/nashorn/internal/runtime/regexp/RegExpFactory;
            ifnull 1
            getstatic jdk.nashorn.internal.runtime.regexp.RegExpFactory.instance:Ljdk/nashorn/internal/runtime/regexp/RegExpFactory;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc Ljdk/nashorn/internal/runtime/regexp/RegExpFactory;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "RegExpFactory.java"
InnerClasses:
  public Factory = jdk.nashorn.internal.runtime.regexp.JoniRegExp$Factory of jdk.nashorn.internal.runtime.regexp.JoniRegExp