public final class com.oracle.truffle.js.test.suite.JSTestRunner extends org.junit.runners.ParentRunner<com.oracle.truffle.js.test.suite.JSTestRunner$TestCase>
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.js.test.suite.JSTestRunner
  super_class: org.junit.runners.ParentRunner
{
  private static final java.lang.String FIXTURE_DIR;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

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

  private static final java.lang.String OPTION_REGEX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "@option\\s+([^=\\s]+)(?:\\s*=\\s*(\\S+))?$"

  private static final java.lang.String ARGUMENT_REGEX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "@argument\\s+([^=\\s]+)$"

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

  private static final boolean USE_NASHORN_COMPAT_MODE;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.util.List<com.oracle.truffle.js.test.suite.JSTestRunner$TestCase> testCases;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lcom/oracle/truffle/js/test/suite/JSTestRunner$TestCase;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 87
            new java.lang.StringBuilder
            dup
            getstatic java.io.File.separator:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "fixtures"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putstatic com.oracle.truffle.js.test.suite.JSTestRunner.FIXTURE_DIR:Ljava/lang/String;
         1: .line 94
            ldc "line.separator"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            putstatic com.oracle.truffle.js.test.suite.JSTestRunner.LF:Ljava/lang/String;
         2: .line 95
            ldc "polyglot.js.nashorn-compat"
            invokestatic java.lang.Boolean.getBoolean:(Ljava/lang/String;)Z
            putstatic com.oracle.truffle.js.test.suite.JSTestRunner.USE_NASHORN_COMPAT_MODE:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.test.suite.JSTestRunner this
        start local 1 // java.lang.Class runningClass
         0: .line 112
            aload 0 /* this */
            aload 1 /* runningClass */
            invokespecial org.junit.runners.ParentRunner.<init>:(Ljava/lang/Class;)V
         1: .line 114
            aload 0 /* this */
            aload 1 /* runningClass */
            invokestatic com.oracle.truffle.js.test.suite.JSTestRunner.createTests:(Ljava/lang/Class;)Ljava/util/List;
            putfield com.oracle.truffle.js.test.suite.JSTestRunner.testCases:Ljava/util/List;
         2: .line 115
            goto 5
      StackMap locals: com.oracle.truffle.js.test.suite.JSTestRunner java.lang.Class
      StackMap stack: java.io.IOException
         3: astore 2 /* e */
        start local 2 // java.io.IOException e
         4: .line 116
            new org.junit.runners.model.InitializationError
            dup
            aload 2 /* e */
            invokespecial org.junit.runners.model.InitializationError.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.io.IOException e
         5: .line 118
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Class runningClass
        end local 0 // com.oracle.truffle.js.test.suite.JSTestRunner this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lcom/oracle/truffle/js/test/suite/JSTestRunner;
            0    6     1  runningClass  Ljava/lang/Class<*>;
            4    5     2             e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException
    Exceptions:
      throws org.junit.runners.model.InitializationError
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
              Name  Flags
      runningClass  

  protected org.junit.runner.Description describeChild(com.oracle.truffle.js.test.suite.JSTestRunner$TestCase);
    descriptor: (Lcom/oracle/truffle/js/test/suite/JSTestRunner$TestCase;)Lorg/junit/runner/Description;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.suite.JSTestRunner this
        start local 1 // com.oracle.truffle.js.test.suite.JSTestRunner$TestCase child
         0: .line 122
            aload 1 /* child */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.testName:Lorg/junit/runner/Description;
            areturn
        end local 1 // com.oracle.truffle.js.test.suite.JSTestRunner$TestCase child
        end local 0 // com.oracle.truffle.js.test.suite.JSTestRunner this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/test/suite/JSTestRunner;
            0    1     1  child  Lcom/oracle/truffle/js/test/suite/JSTestRunner$TestCase;
    MethodParameters:
       Name  Flags
      child  

  protected java.util.List<com.oracle.truffle.js.test.suite.JSTestRunner$TestCase> getChildren();
    descriptor: ()Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.suite.JSTestRunner this
         0: .line 127
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner.testCases:Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.js.test.suite.JSTestRunner this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/suite/JSTestRunner;
    Signature: ()Ljava/util/List<Lcom/oracle/truffle/js/test/suite/JSTestRunner$TestCase;>;

  protected static java.util.List<com.oracle.truffle.js.test.suite.JSTestRunner$TestCase> createTests(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/util/List;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=7, locals=9, args_size=1
        start local 0 // java.lang.Class c
         0: .line 131
            aload 0 /* c */
            ldc Lcom/oracle/truffle/js/test/suite/JSTestSuite;
            invokevirtual java.lang.Class.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast com.oracle.truffle.js.test.suite.JSTestSuite
            astore 1 /* suite */
        start local 1 // com.oracle.truffle.js.test.suite.JSTestSuite suite
         1: .line 132
            aload 1 /* suite */
            ifnonnull 3
         2: .line 133
            new org.junit.runners.model.InitializationError
            dup
            ldc "@%s annotation required on class '%s' to run with '%s'."
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            ldc Lcom/oracle/truffle/js/test/suite/JSTestSuite;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* c */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_2
            ldc Lcom/oracle/truffle/js/test/suite/JSTestRunner;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.junit.runners.model.InitializationError.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 136
      StackMap locals: com.oracle.truffle.js.test.suite.JSTestSuite
      StackMap stack:
            aload 1 /* suite */
            invokeinterface com.oracle.truffle.js.test.suite.JSTestSuite.value:()[Ljava/lang/String;
            astore 2 /* paths */
        start local 2 // java.lang.String[] paths
         4: .line 138
            aconst_null
            astore 3 /* root */
        start local 3 // java.nio.file.Path root
         5: .line 139
            iconst_0
            istore 4 /* pathExists */
        start local 4 // boolean pathExists
         6: .line 140
            aload 2 /* paths */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 13
      StackMap locals: java.lang.Class com.oracle.truffle.js.test.suite.JSTestSuite java.lang.String[] java.nio.file.Path int top int int java.lang.String[]
      StackMap stack:
         7: aload 8
            iload 6
            aaload
            astore 5 /* path */
        start local 5 // java.lang.String path
         8: .line 141
            aload 5 /* path */
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            astore 3 /* root */
         9: .line 142
            aload 3 /* root */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 12
        10: .line 143
            iconst_1
            istore 4 /* pathExists */
        11: .line 144
            goto 14
        end local 5 // java.lang.String path
        12: .line 140
      StackMap locals:
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        13: iload 6
            iload 7
            if_icmplt 7
        14: .line 148
      StackMap locals: java.lang.Class com.oracle.truffle.js.test.suite.JSTestSuite java.lang.String[] java.nio.file.Path int
      StackMap stack:
            iload 4 /* pathExists */
            ifne 16
        15: .line 149
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            areturn
        16: .line 152
      StackMap locals:
      StackMap stack:
            aload 3 /* root */
            ifnonnull 18
            aload 2 /* paths */
            arraylength
            ifle 18
        17: .line 153
            new java.io.FileNotFoundException
            dup
            aload 2 /* paths */
            iconst_0
            aaload
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 156
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* foundCases */
        start local 5 // java.util.List foundCases
        19: .line 157
            aload 3 /* root */
            new com.oracle.truffle.js.test.suite.JSTestRunner$1
            dup
            aload 5 /* foundCases */
            aload 0 /* c */
            invokespecial com.oracle.truffle.js.test.suite.JSTestRunner$1.<init>:(Ljava/util/List;Ljava/lang/Class;)V
            invokestatic java.nio.file.Files.walkFileTree:(Ljava/nio/file/Path;Ljava/nio/file/FileVisitor;)Ljava/nio/file/Path;
            pop
        20: .line 171
            aload 5 /* foundCases */
            areturn
        end local 5 // java.util.List foundCases
        end local 4 // boolean pathExists
        end local 3 // java.nio.file.Path root
        end local 2 // java.lang.String[] paths
        end local 1 // com.oracle.truffle.js.test.suite.JSTestSuite suite
        end local 0 // java.lang.Class c
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   21     0           c  Ljava/lang/Class<*>;
            1   21     1       suite  Lcom/oracle/truffle/js/test/suite/JSTestSuite;
            4   21     2       paths  [Ljava/lang/String;
            5   21     3        root  Ljava/nio/file/Path;
            6   21     4  pathExists  Z
            8   12     5        path  Ljava/lang/String;
           19   21     5  foundCases  Ljava/util/List<Lcom/oracle/truffle/js/test/suite/JSTestRunner$TestCase;>;
    Exceptions:
      throws java.io.IOException, org.junit.runners.model.InitializationError
    Signature: (Ljava/lang/Class<*>;)Ljava/util/List<Lcom/oracle/truffle/js/test/suite/JSTestRunner$TestCase;>;
    MethodParameters:
      Name  Flags
      c     final

  private static java.lang.String findSuffix(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String fileName
         0: .line 175
            aload 0 /* fileName */
            ldc ".js"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 176
            ldc ".js"
            areturn
         2: .line 177
      StackMap locals:
      StackMap stack:
            aload 0 /* fileName */
            ldc ".mjs"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 178
            ldc ".mjs"
            areturn
         4: .line 180
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.lang.String fileName
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0  fileName  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      fileName  

  public static java.lang.String readAllLines(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.nio.file.Path file
         0: .line 186
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* outFile */
        start local 1 // java.lang.StringBuilder outFile
         1: .line 187
            aload 0 /* file */
            invokestatic java.nio.charset.Charset.defaultCharset:()Ljava/nio/charset/Charset;
            invokestatic java.nio.file.Files.readAllLines:(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: java.nio.file.Path java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* line */
        start local 2 // java.lang.String line
         3: .line 188
            aload 1 /* outFile */
            aload 2 /* line */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            getstatic com.oracle.truffle.js.test.suite.JSTestRunner.LF:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 2 // java.lang.String line
         4: .line 187
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 190
            aload 1 /* outFile */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder outFile
        end local 0 // java.nio.file.Path file
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     file  Ljava/nio/file/Path;
            1    6     1  outFile  Ljava/lang/StringBuilder;
            3    4     2     line  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      file  

  protected void runChild(com.oracle.truffle.js.test.suite.JSTestRunner$TestCase, org.junit.runner.notification.RunNotifier);
    descriptor: (Lcom/oracle/truffle/js/test/suite/JSTestRunner$TestCase;Lorg/junit/runner/notification/RunNotifier;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=13, args_size=3
        start local 0 // com.oracle.truffle.js.test.suite.JSTestRunner this
        start local 1 // com.oracle.truffle.js.test.suite.JSTestRunner$TestCase testCase
        start local 2 // org.junit.runner.notification.RunNotifier notifier
         0: .line 196
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.sourceFile:Ljava/nio/file/Path;
            invokestatic com.oracle.truffle.js.test.suite.JSTestRunner.readAllLines:(Ljava/nio/file/Path;)Ljava/lang/String;
            astore 3 /* sourceLines */
        start local 3 // java.lang.String sourceLines
         1: .line 198
            aload 3 /* sourceLines */
            ldc "ignore-test"
            invokestatic com.oracle.truffle.js.test.suite.JSTestRunner.hasOption:(Ljava/lang/String;Ljava/lang/String;)Z
            ifeq 5
         2: .line 199
            aload 2 /* notifier */
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.testName:Lorg/junit/runner/Description;
            invokevirtual org.junit.runner.notification.RunNotifier.fireTestIgnored:(Lorg/junit/runner/Description;)V
         3: .line 235
            aload 2 /* notifier */
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.testName:Lorg/junit/runner/Description;
            invokevirtual org.junit.runner.notification.RunNotifier.fireTestFinished:(Lorg/junit/runner/Description;)V
         4: .line 200
            return
         5: .line 203
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* notifier */
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.testName:Lorg/junit/runner/Description;
            invokevirtual org.junit.runner.notification.RunNotifier.fireTestStarted:(Lorg/junit/runner/Description;)V
         6: .line 205
            aload 3 /* sourceLines */
            invokestatic com.oracle.truffle.js.test.suite.JSTestRunner.parseOptions:(Ljava/lang/String;)Ljava/util/Map;
            astore 4 /* options */
        start local 4 // java.util.Map options
         7: .line 207
            aload 4 /* options */
            ldc "js.nashorn-compat"
            ldc "false"
            invokeinterface java.util.Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
            istore 5 /* optionNashornCompat */
        start local 5 // boolean optionNashornCompat
         8: .line 208
            aload 4 /* options */
            ldc "js.v8-compat"
            ldc "false"
            invokeinterface java.util.Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
            istore 6 /* optionV8Compat */
        start local 6 // boolean optionV8Compat
         9: .line 210
            getstatic com.oracle.truffle.js.test.suite.JSTestRunner.USE_NASHORN_COMPAT_MODE:Z
            ifeq 12
            iload 6 /* optionV8Compat */
            ifne 10
            iload 5 /* optionNashornCompat */
            ifne 12
        10: .line 235
      StackMap locals: java.util.Map int int
      StackMap stack:
            aload 2 /* notifier */
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.testName:Lorg/junit/runner/Description;
            invokevirtual org.junit.runner.notification.RunNotifier.fireTestFinished:(Lorg/junit/runner/Description;)V
        11: .line 213
            return
        12: .line 216
      StackMap locals:
      StackMap stack:
            aload 4 /* options */
            ldc "js.debug-builtin"
            ldc "true"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 217
            aload 4 /* options */
            ldc "js.shared-array-buffer"
            ldc "true"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 218
            aload 4 /* options */
            ldc "js.intl-402"
            ldc "true"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        15: .line 220
            aload 3 /* sourceLines */
            invokestatic com.oracle.truffle.js.test.suite.JSTestRunner.parseArgs:(Ljava/lang/String;)[Ljava/lang/String;
            astore 7 /* args */
        start local 7 // java.lang.String[] args
        16: .line 222
            iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 4 /* options */
            invokevirtual org.graalvm.polyglot.Context$Builder.options:(Ljava/util/Map;)Lorg/graalvm/polyglot/Context$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.Context$Builder.allowAllAccess:(Z)Lorg/graalvm/polyglot/Context$Builder;
            ldc "js"
            aload 7 /* args */
            invokevirtual org.graalvm.polyglot.Context$Builder.arguments:(Ljava/lang/String;[Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 8 /* engineContext */
        start local 8 // org.graalvm.polyglot.Context engineContext
        17: .line 224
            aload 8 /* engineContext */
            invokevirtual org.graalvm.polyglot.Context.enter:()V
        18: .line 225
            aload 8 /* engineContext */
            iload 5 /* optionNashornCompat */
            ifne 19
            getstatic com.oracle.truffle.js.test.suite.JSTestRunner.USE_NASHORN_COMPAT_MODE:Z
            ifne 19
            iconst_0
            goto 20
      StackMap locals: com.oracle.truffle.js.test.suite.JSTestRunner com.oracle.truffle.js.test.suite.JSTestRunner$TestCase org.junit.runner.notification.RunNotifier java.lang.String java.util.Map int int java.lang.String[] org.graalvm.polyglot.Context
      StackMap stack: org.graalvm.polyglot.Context
        19: iconst_1
      StackMap locals: com.oracle.truffle.js.test.suite.JSTestRunner com.oracle.truffle.js.test.suite.JSTestRunner$TestCase org.junit.runner.notification.RunNotifier java.lang.String java.util.Map int int java.lang.String[] org.graalvm.polyglot.Context
      StackMap stack: org.graalvm.polyglot.Context int
        20: invokestatic com.oracle.truffle.js.test.suite.JSTestRunner.setTestGlobals:(Lorg/graalvm/polyglot/Context;Z)V
        21: .line 226
            aload 8 /* engineContext */
            invokevirtual org.graalvm.polyglot.Context.leave:()V
        22: .line 227
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.sourceName:Ljava/lang/String;
            ldc ".mjs"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 23
            ldc "application/javascript+module"
            goto 24
      StackMap locals:
      StackMap stack:
        23: ldc "application/javascript"
      StackMap locals:
      StackMap stack: java.lang.String
        24: astore 9 /* mimeType */
        start local 9 // java.lang.String mimeType
        25: .line 228
            ldc "js"
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.sourceFile:Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
            invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/io/File;)Lorg/graalvm/polyglot/Source$Builder;
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.sourceName:Ljava/lang/String;
            invokevirtual org.graalvm.polyglot.Source$Builder.name:(Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
            aload 3 /* sourceLines */
            invokevirtual org.graalvm.polyglot.Source$Builder.content:(Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
            aload 9 /* mimeType */
            invokevirtual org.graalvm.polyglot.Source$Builder.mimeType:(Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
            invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
            astore 10 /* source */
        start local 10 // org.graalvm.polyglot.Source source
        26: .line 229
            aload 8 /* engineContext */
            aload 10 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            astore 11 /* result */
        start local 11 // org.graalvm.polyglot.Value result
        27: .line 231
            aload 11 /* result */
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        end local 11 // org.graalvm.polyglot.Value result
        end local 10 // org.graalvm.polyglot.Source source
        end local 9 // java.lang.String mimeType
        end local 8 // org.graalvm.polyglot.Context engineContext
        end local 7 // java.lang.String[] args
        end local 6 // boolean optionV8Compat
        end local 5 // boolean optionNashornCompat
        end local 4 // java.util.Map options
        end local 3 // java.lang.String sourceLines
        28: .line 232
            goto 35
      StackMap locals: com.oracle.truffle.js.test.suite.JSTestRunner com.oracle.truffle.js.test.suite.JSTestRunner$TestCase org.junit.runner.notification.RunNotifier
      StackMap stack: java.lang.Throwable
        29: astore 3 /* ex */
        start local 3 // java.lang.Throwable ex
        30: .line 233
            aload 2 /* notifier */
            new org.junit.runner.notification.Failure
            dup
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.testName:Lorg/junit/runner/Description;
            aload 3 /* ex */
            invokespecial org.junit.runner.notification.Failure.<init>:(Lorg/junit/runner/Description;Ljava/lang/Throwable;)V
            invokevirtual org.junit.runner.notification.RunNotifier.fireTestFailure:(Lorg/junit/runner/notification/Failure;)V
        end local 3 // java.lang.Throwable ex
        31: .line 235
            aload 2 /* notifier */
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.testName:Lorg/junit/runner/Description;
            invokevirtual org.junit.runner.notification.RunNotifier.fireTestFinished:(Lorg/junit/runner/Description;)V
            goto 36
        32: .line 234
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 12
        33: .line 235
            aload 2 /* notifier */
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.testName:Lorg/junit/runner/Description;
            invokevirtual org.junit.runner.notification.RunNotifier.fireTestFinished:(Lorg/junit/runner/Description;)V
        34: .line 236
            aload 12
            athrow
        35: .line 235
      StackMap locals:
      StackMap stack:
            aload 2 /* notifier */
            aload 1 /* testCase */
            getfield com.oracle.truffle.js.test.suite.JSTestRunner$TestCase.testName:Lorg/junit/runner/Description;
            invokevirtual org.junit.runner.notification.RunNotifier.fireTestFinished:(Lorg/junit/runner/Description;)V
        36: .line 237
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.junit.runner.notification.RunNotifier notifier
        end local 1 // com.oracle.truffle.js.test.suite.JSTestRunner$TestCase testCase
        end local 0 // com.oracle.truffle.js.test.suite.JSTestRunner this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   37     0                 this  Lcom/oracle/truffle/js/test/suite/JSTestRunner;
            0   37     1             testCase  Lcom/oracle/truffle/js/test/suite/JSTestRunner$TestCase;
            0   37     2             notifier  Lorg/junit/runner/notification/RunNotifier;
            1   28     3          sourceLines  Ljava/lang/String;
            7   28     4              options  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            8   28     5  optionNashornCompat  Z
            9   28     6       optionV8Compat  Z
           16   28     7                 args  [Ljava/lang/String;
           17   28     8        engineContext  Lorg/graalvm/polyglot/Context;
           25   28     9             mimeType  Ljava/lang/String;
           26   28    10               source  Lorg/graalvm/polyglot/Source;
           27   28    11               result  Lorg/graalvm/polyglot/Value;
           30   31     3                   ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     3      29  Class java.lang.Throwable
           5    10      29  Class java.lang.Throwable
          12    28      29  Class java.lang.Throwable
           0     3      32  any
           5    10      32  any
          12    31      32  any
    MethodParameters:
          Name  Flags
      testCase  
      notifier  

  private static java.util.Map<java.lang.String, java.lang.String> parseOptions(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // java.lang.String sourceLines
         0: .line 240
            new java.util.LinkedHashMap
            dup
            invokespecial java.util.LinkedHashMap.<init>:()V
            astore 1 /* options */
        start local 1 // java.util.Map options
         1: .line 241
            ldc "@option\\s+([^=\\s]+)(?:\\s*=\\s*(\\S+))?$"
            bipush 8
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
            astore 2 /* patternOptions */
        start local 2 // java.util.regex.Pattern patternOptions
         2: .line 242
            aload 2 /* patternOptions */
            aload 0 /* sourceLines */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 3 /* matcher */
        start local 3 // java.util.regex.Matcher matcher
         3: .line 245
            goto 11
         4: .line 246
      StackMap locals: java.util.Map java.util.regex.Pattern java.util.regex.Matcher
      StackMap stack:
            aload 3 /* matcher */
            iconst_1
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            astore 4 /* optionName */
        start local 4 // java.lang.String optionName
         5: .line 247
            aload 3 /* matcher */
            iconst_2
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            astore 5 /* optionValue */
        start local 5 // java.lang.String optionValue
         6: .line 248
            aload 4 /* optionName */
            ldc "js."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 8
         7: .line 249
            new java.lang.StringBuilder
            dup
            ldc "js."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* optionName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* optionName */
         8: .line 251
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 5 /* optionValue */
            ifnonnull 10
         9: .line 252
            ldc "true"
            astore 5 /* optionValue */
        10: .line 254
      StackMap locals:
      StackMap stack:
            aload 1 /* options */
            aload 4 /* optionName */
            aload 5 /* optionValue */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 5 // java.lang.String optionValue
        end local 4 // java.lang.String optionName
        11: .line 245
      StackMap locals:
      StackMap stack:
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifne 4
        12: .line 256
            aload 1 /* options */
            areturn
        end local 3 // java.util.regex.Matcher matcher
        end local 2 // java.util.regex.Pattern patternOptions
        end local 1 // java.util.Map options
        end local 0 // java.lang.String sourceLines
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0     sourceLines  Ljava/lang/String;
            1   13     1         options  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            2   13     2  patternOptions  Ljava/util/regex/Pattern;
            3   13     3         matcher  Ljava/util/regex/Matcher;
            5   11     4      optionName  Ljava/lang/String;
            6   11     5     optionValue  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
    MethodParameters:
             Name  Flags
      sourceLines  

  private static java.lang.String[] parseArgs(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.lang.String sourceLines
         0: .line 260
            ldc "@argument\\s+([^=\\s]+)$"
            bipush 8
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
            astore 1 /* patternArguments */
        start local 1 // java.util.regex.Pattern patternArguments
         1: .line 261
            aload 1 /* patternArguments */
            aload 0 /* sourceLines */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 2 /* matcher */
        start local 2 // java.util.regex.Matcher matcher
         2: .line 262
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 3 /* args */
        start local 3 // java.util.List args
         3: .line 263
            goto 5
         4: .line 264
      StackMap locals: java.util.regex.Pattern java.util.regex.Matcher java.util.List
      StackMap stack:
            aload 3 /* args */
            aload 2 /* matcher */
            iconst_1
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 263
      StackMap locals:
      StackMap stack:
            aload 2 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifne 4
         6: .line 266
            aload 3 /* args */
            iconst_0
            anewarray java.lang.String
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            areturn
        end local 3 // java.util.List args
        end local 2 // java.util.regex.Matcher matcher
        end local 1 // java.util.regex.Pattern patternArguments
        end local 0 // java.lang.String sourceLines
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0       sourceLines  Ljava/lang/String;
            1    7     1  patternArguments  Ljava/util/regex/Pattern;
            2    7     2           matcher  Ljava/util/regex/Matcher;
            3    7     3              args  Ljava/util/List<Ljava/lang/String;>;
    MethodParameters:
             Name  Flags
      sourceLines  

  private static boolean hasOption(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.String sourceLines
        start local 1 // java.lang.String optionName
         0: .line 270
            aload 0 /* sourceLines */
            new java.lang.StringBuilder
            dup
            ldc "@option "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* optionName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ireturn
        end local 1 // java.lang.String optionName
        end local 0 // java.lang.String sourceLines
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0  sourceLines  Ljava/lang/String;
            0    1     1   optionName  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      sourceLines  
      optionName   

  private static void setTestGlobals(org.graalvm.polyglot.Context, boolean);
    descriptor: (Lorg/graalvm/polyglot/Context;Z)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.graalvm.polyglot.Context context
        start local 1 // boolean inNashornMode
         0: .line 274
            aload 0 /* context */
            ldc "js"
            invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 2 /* globalBindings */
        start local 2 // org.graalvm.polyglot.Value globalBindings
         1: .line 275
            aload 2 /* globalBindings */
            ldc "OptionNashornCompat"
            iload 1 /* inNashornMode */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
         2: .line 276
            aload 0 /* context */
            invokestatic com.oracle.truffle.js.test.polyglot.PolyglotBuiltinTest.addTestPolyglotBuiltins:(Lorg/graalvm/polyglot/Context;)V
         3: .line 277
            return
        end local 2 // org.graalvm.polyglot.Value globalBindings
        end local 1 // boolean inNashornMode
        end local 0 // org.graalvm.polyglot.Context context
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0         context  Lorg/graalvm/polyglot/Context;
            0    4     1   inNashornMode  Z
            1    4     2  globalBindings  Lorg/graalvm/polyglot/Value;
    MethodParameters:
               Name  Flags
      context        
      inNashornMode  

  public static void runInMain(java.lang.Class<?>, java.lang.String[]);
    descriptor: (Ljava/lang/Class;[Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // java.lang.Class testClass
        start local 1 // java.lang.String[] args
         0: .line 280
            new org.junit.runner.JUnitCore
            dup
            invokespecial org.junit.runner.JUnitCore.<init>:()V
            astore 2 /* core */
        start local 2 // org.junit.runner.JUnitCore core
         1: .line 281
            aload 2 /* core */
            new org.junit.internal.TextListener
            dup
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokespecial org.junit.internal.TextListener.<init>:(Ljava/io/PrintStream;)V
            invokevirtual org.junit.runner.JUnitCore.addListener:(Lorg/junit/runner/notification/RunListener;)V
         2: .line 282
            new com.oracle.truffle.js.test.suite.JSTestRunner
            dup
            aload 0 /* testClass */
            invokespecial com.oracle.truffle.js.test.suite.JSTestRunner.<init>:(Ljava/lang/Class;)V
            astore 3 /* suite */
        start local 3 // com.oracle.truffle.js.test.suite.JSTestRunner suite
         3: .line 283
            aload 1 /* args */
            arraylength
            ifle 5
         4: .line 284
            aload 3 /* suite */
            new com.oracle.truffle.js.test.suite.JSTestRunner$NameFilter
            dup
            aload 1 /* args */
            iconst_0
            aaload
            invokespecial com.oracle.truffle.js.test.suite.JSTestRunner$NameFilter.<init>:(Ljava/lang/String;)V
            invokevirtual com.oracle.truffle.js.test.suite.JSTestRunner.filter:(Lorg/junit/runner/manipulation/Filter;)V
         5: .line 286
      StackMap locals: org.junit.runner.JUnitCore com.oracle.truffle.js.test.suite.JSTestRunner
      StackMap stack:
            aload 2 /* core */
            aload 3 /* suite */
            invokevirtual org.junit.runner.JUnitCore.run:(Lorg/junit/runner/Runner;)Lorg/junit/runner/Result;
            astore 4 /* r */
        start local 4 // org.junit.runner.Result r
         6: .line 287
            aload 4 /* r */
            invokevirtual org.junit.runner.Result.wasSuccessful:()Z
            ifne 8
         7: .line 288
            iconst_1
            invokestatic java.lang.System.exit:(I)V
         8: .line 290
      StackMap locals: org.junit.runner.Result
      StackMap stack:
            return
        end local 4 // org.junit.runner.Result r
        end local 3 // com.oracle.truffle.js.test.suite.JSTestRunner suite
        end local 2 // org.junit.runner.JUnitCore core
        end local 1 // java.lang.String[] args
        end local 0 // java.lang.Class testClass
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0  testClass  Ljava/lang/Class<*>;
            0    9     1       args  [Ljava/lang/String;
            1    9     2       core  Lorg/junit/runner/JUnitCore;
            3    9     3      suite  Lcom/oracle/truffle/js/test/suite/JSTestRunner;
            6    9     4          r  Lorg/junit/runner/Result;
    Exceptions:
      throws org.junit.runners.model.InitializationError, org.junit.runner.manipulation.NoTestsRemainException
    Signature: (Ljava/lang/Class<*>;[Ljava/lang/String;)V
    MethodParameters:
           Name  Flags
      testClass  
      args       

  protected org.junit.runner.Description describeChild(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lorg/junit/runner/Description;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast com.oracle.truffle.js.test.suite.JSTestRunner$TestCase
            invokevirtual com.oracle.truffle.js.test.suite.JSTestRunner.describeChild:(Lcom/oracle/truffle/js/test/suite/JSTestRunner$TestCase;)Lorg/junit/runner/Description;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void runChild(java.lang.Object, org.junit.runner.notification.RunNotifier);
    descriptor: (Ljava/lang/Object;Lorg/junit/runner/notification/RunNotifier;)V
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            checkcast com.oracle.truffle.js.test.suite.JSTestRunner$TestCase
            aload 2
            invokevirtual com.oracle.truffle.js.test.suite.JSTestRunner.runChild:(Lcom/oracle/truffle/js/test/suite/JSTestRunner$TestCase;Lorg/junit/runner/notification/RunNotifier;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Lorg/junit/runners/ParentRunner<Lcom/oracle/truffle/js/test/suite/JSTestRunner$TestCase;>;
SourceFile: "JSTestRunner.java"
NestMembers:
  com.oracle.truffle.js.test.suite.JSTestRunner$1  com.oracle.truffle.js.test.suite.JSTestRunner$NameFilter  com.oracle.truffle.js.test.suite.JSTestRunner$TestCase
InnerClasses:
  com.oracle.truffle.js.test.suite.JSTestRunner$1
  private final NameFilter = com.oracle.truffle.js.test.suite.JSTestRunner$NameFilter of com.oracle.truffle.js.test.suite.JSTestRunner
  TestCase = com.oracle.truffle.js.test.suite.JSTestRunner$TestCase of com.oracle.truffle.js.test.suite.JSTestRunner
  public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context
  public Builder = org.graalvm.polyglot.Source$Builder of org.graalvm.polyglot.Source