public class com.oracle.truffle.js.test.TestHelper implements java.lang.AutoCloseable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.js.test.TestHelper
  super_class: java.lang.Object
{
  private static final double DELTA;
    descriptor: D
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1.0E-15

  private final org.graalvm.polyglot.Context$Builder contextBuilder;
    descriptor: Lorg/graalvm/polyglot/Context$Builder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.graalvm.polyglot.Context ctx;
    descriptor: Lorg/graalvm/polyglot/Context;
    flags: (0x0002) ACC_PRIVATE

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 82
            ldc Lcom/oracle/truffle/js/test/TestHelper;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.js.test.TestHelper.$assertionsDisabled:Z
         3: .line 84
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.TestHelper this
         0: .line 90
            aload 0 /* this */
            iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "js.debug-builtin"
            ldc "true"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            invokespecial com.oracle.truffle.js.test.TestHelper.<init>:(Lorg/graalvm/polyglot/Context$Builder;)V
         1: .line 91
            return
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/test/TestHelper;

  public void <init>(org.graalvm.polyglot.Context$Builder);
    descriptor: (Lorg/graalvm/polyglot/Context$Builder;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // org.graalvm.polyglot.Context$Builder contextBuilder
         0: .line 93
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 94
            aload 0 /* this */
            aload 1 /* contextBuilder */
            putfield com.oracle.truffle.js.test.TestHelper.contextBuilder:Lorg/graalvm/polyglot/Context$Builder;
         2: .line 95
            return
        end local 1 // org.graalvm.polyglot.Context$Builder contextBuilder
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lcom/oracle/truffle/js/test/TestHelper;
            0    3     1  contextBuilder  Lorg/graalvm/polyglot/Context$Builder;
    MethodParameters:
                Name  Flags
      contextBuilder  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.TestHelper this
         0: .line 99
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.TestHelper.ctx:Lorg/graalvm/polyglot/Context;
            ifnull 3
         1: .line 100
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.TestHelper.ctx:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.close:()V
         2: .line 101
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.js.test.TestHelper.ctx:Lorg/graalvm/polyglot/Context;
         3: .line 103
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/js/test/TestHelper;

  public org.graalvm.polyglot.Context getPolyglotContext();
    descriptor: ()Lorg/graalvm/polyglot/Context;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.TestHelper this
         0: .line 106
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.TestHelper.ctx:Lorg/graalvm/polyglot/Context;
            ifnonnull 2
         1: .line 107
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.TestHelper.contextBuilder:Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            putfield com.oracle.truffle.js.test.TestHelper.ctx:Lorg/graalvm/polyglot/Context;
         2: .line 109
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.TestHelper.ctx:Lorg/graalvm/polyglot/Context;
            areturn
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/test/TestHelper;

  public com.oracle.truffle.js.runtime.JSContext getJSContext();
    descriptor: ()Lcom/oracle/truffle/js/runtime/JSContext;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.TestHelper this
         0: .line 113
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            areturn
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/TestHelper;

  public com.oracle.truffle.js.runtime.JSRealm getRealm();
    descriptor: ()Lcom/oracle/truffle/js/runtime/JSRealm;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.TestHelper this
         0: .line 117
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
            invokestatic com.oracle.truffle.js.lang.JavaScriptLanguage.getJSRealm:(Lorg/graalvm/polyglot/Context;)Lcom/oracle/truffle/js/runtime/JSRealm;
            areturn
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/TestHelper;

  public com.oracle.truffle.api.object.DynamicObject getGlobalObject();
    descriptor: ()Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.TestHelper this
         0: .line 121
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getGlobalObject:()Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/TestHelper;

  public java.lang.Object getBinding(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String key
         0: .line 125
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getGlobalObject:()Lcom/oracle/truffle/api/object/DynamicObject;
            aload 1 /* key */
            aconst_null
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.getOrDefault:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.String key
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/TestHelper;
            0    1     1   key  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      key   

  public void putBinding(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String key
        start local 2 // java.lang.Object value
         0: .line 129
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getGlobalObject:()Lcom/oracle/truffle/api/object/DynamicObject;
            aload 1 /* key */
            aload 2 /* value */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putIfPresent:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)Z
            pop
         1: .line 130
            return
        end local 2 // java.lang.Object value
        end local 1 // java.lang.String key
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/js/test/TestHelper;
            0    2     1    key  Ljava/lang/String;
            0    2     2  value  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      key    
      value  

  public java.lang.Object run(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String sourceCode
         0: .line 133
            aload 0 /* this */
            aload 1 /* sourceCode */
            invokevirtual com.oracle.truffle.js.test.TestHelper.runValue:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokestatic com.oracle.truffle.js.test.TestHelper.toHostValue:(Lorg/graalvm/polyglot/Value;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.String sourceCode
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/oracle/truffle/js/test/TestHelper;
            0    1     1  sourceCode  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      sourceCode  

  public double runDouble(java.lang.String);
    descriptor: (Ljava/lang/String;)D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String sourceCode
         0: .line 137
            aload 0 /* this */
            aload 1 /* sourceCode */
            invokevirtual com.oracle.truffle.js.test.TestHelper.runValue:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asDouble:()D
            dreturn
        end local 1 // java.lang.String sourceCode
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/oracle/truffle/js/test/TestHelper;
            0    1     1  sourceCode  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      sourceCode  

  public boolean runBoolean(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String sourceCode
         0: .line 141
            aload 0 /* this */
            aload 1 /* sourceCode */
            invokevirtual com.oracle.truffle.js.test.TestHelper.runValue:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            ireturn
        end local 1 // java.lang.String sourceCode
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/oracle/truffle/js/test/TestHelper;
            0    1     1  sourceCode  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      sourceCode  

  public org.graalvm.polyglot.Value runValue(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String sourceCode
         0: .line 145
            ldc "js"
            aload 1 /* sourceCode */
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 2 /* source */
        start local 2 // org.graalvm.polyglot.Source source
         1: .line 146
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
            aload 2 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            areturn
        end local 2 // org.graalvm.polyglot.Source source
        end local 1 // java.lang.String sourceCode
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/oracle/truffle/js/test/TestHelper;
            0    2     1  sourceCode  Ljava/lang/String;
            1    2     2      source  Lorg/graalvm/polyglot/Source;
    MethodParameters:
            Name  Flags
      sourceCode  

  public void runVoid(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String sourceCode
         0: .line 150
            aload 0 /* this */
            aload 1 /* sourceCode */
            invokevirtual com.oracle.truffle.js.test.TestHelper.runValue:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            pop
         1: .line 151
            return
        end local 1 // java.lang.String sourceCode
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/oracle/truffle/js/test/TestHelper;
            0    2     1  sourceCode  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      sourceCode  

  public boolean runExpectUndefined(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String sourceCode
         0: .line 154
            aload 0 /* this */
            aload 1 /* sourceCode */
            invokevirtual com.oracle.truffle.js.test.TestHelper.runValue:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 2 /* result */
        start local 2 // org.graalvm.polyglot.Value result
         1: .line 156
            ldc "js"
            ldc "(function(arg) { return arg === undefined; });"
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 3 /* checkUndefined */
        start local 3 // org.graalvm.polyglot.Source checkUndefined
         2: .line 157
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
            aload 3 /* checkUndefined */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            astore 4 /* fnCheckUndefined */
        start local 4 // org.graalvm.polyglot.Value fnCheckUndefined
         3: .line 158
            aload 4 /* fnCheckUndefined */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* result */
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            ireturn
        end local 4 // org.graalvm.polyglot.Value fnCheckUndefined
        end local 3 // org.graalvm.polyglot.Source checkUndefined
        end local 2 // org.graalvm.polyglot.Value result
        end local 1 // java.lang.String sourceCode
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    4     0              this  Lcom/oracle/truffle/js/test/TestHelper;
            0    4     1        sourceCode  Ljava/lang/String;
            1    4     2            result  Lorg/graalvm/polyglot/Value;
            2    4     3    checkUndefined  Lorg/graalvm/polyglot/Source;
            3    4     4  fnCheckUndefined  Lorg/graalvm/polyglot/Value;
    MethodParameters:
            Name  Flags
      sourceCode  

  public void runExpectSyntaxError(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String sourceCode
         0: .line 163
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.enterContext:()V
         1: .line 165
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getParser:()Lcom/oracle/truffle/js/parser/JSParser;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getJSContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 1 /* sourceCode */
            invokeinterface com.oracle.truffle.js.parser.JSParser.parseScript:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/String;)Lcom/oracle/truffle/js/nodes/ScriptNode;
            pop
         2: .line 166
            ldc "expected syntax error to be thrown"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         3: .line 167
            goto 10
      StackMap locals:
      StackMap stack: com.oracle.truffle.js.runtime.JSException
         4: astore 2 /* e */
        start local 2 // com.oracle.truffle.js.runtime.JSException e
         5: .line 168
            aload 2 /* e */
            invokevirtual com.oracle.truffle.js.runtime.JSException.isSyntaxError:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        end local 2 // com.oracle.truffle.js.runtime.JSException e
         6: .line 170
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.leaveContext:()V
            goto 11
         7: .line 169
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3
         8: .line 170
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.leaveContext:()V
         9: .line 171
            aload 3
            athrow
        10: .line 170
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.leaveContext:()V
        11: .line 172
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String sourceCode
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0        this  Lcom/oracle/truffle/js/test/TestHelper;
            0   12     1  sourceCode  Ljava/lang/String;
            5    6     2           e  Lcom/oracle/truffle/js/runtime/JSException;
      Exception table:
        from    to  target  type
           1     3       4  Class com.oracle.truffle.js.runtime.JSException
           1     6       7  any
    MethodParameters:
            Name  Flags
      sourceCode  

  public java.lang.Object runNoPolyglot(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String source
         0: .line 175
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.enterContext:()V
         1: .line 176
            aconst_null
            astore 2 /* result */
        start local 2 // java.lang.Object result
         2: .line 178
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getParser:()Lcom/oracle/truffle/js/parser/JSParser;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getJSContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 1 /* source */
            invokeinterface com.oracle.truffle.js.parser.JSParser.parseScript:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/String;)Lcom/oracle/truffle/js/nodes/ScriptNode;
            astore 3 /* program */
        start local 3 // com.oracle.truffle.js.nodes.ScriptNode program
         3: .line 179
            aload 0 /* this */
            aload 3 /* program */
            invokevirtual com.oracle.truffle.js.test.TestHelper.runNoPolyglot:(Lcom/oracle/truffle/js/nodes/ScriptNode;)Ljava/lang/Object;
            astore 2 /* result */
        end local 3 // com.oracle.truffle.js.nodes.ScriptNode program
         4: .line 180
            goto 8
      StackMap locals: com.oracle.truffle.js.test.TestHelper java.lang.String java.lang.Object
      StackMap stack: java.lang.Throwable
         5: astore 4
         6: .line 181
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.leaveContext:()V
         7: .line 182
            aload 4
            athrow
         8: .line 181
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.leaveContext:()V
         9: .line 183
            aload 2 /* result */
            areturn
        end local 2 // java.lang.Object result
        end local 1 // java.lang.String source
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lcom/oracle/truffle/js/test/TestHelper;
            0   10     1   source  Ljava/lang/String;
            2   10     2   result  Ljava/lang/Object;
            3    4     3  program  Lcom/oracle/truffle/js/nodes/ScriptNode;
      Exception table:
        from    to  target  type
           2     5       5  any
    MethodParameters:
        Name  Flags
      source  

  public java.lang.Object runNoPolyglot(com.oracle.truffle.js.nodes.ScriptNode);
    descriptor: (Lcom/oracle/truffle/js/nodes/ScriptNode;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // com.oracle.truffle.js.nodes.ScriptNode scriptNode
         0: .line 187
            aload 1 /* scriptNode */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
            invokevirtual com.oracle.truffle.js.nodes.ScriptNode.run:(Lcom/oracle/truffle/js/runtime/JSRealm;)Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.test.TestHelper.transformResult:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // com.oracle.truffle.js.nodes.ScriptNode scriptNode
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/oracle/truffle/js/test/TestHelper;
            0    1     1  scriptNode  Lcom/oracle/truffle/js/nodes/ScriptNode;
    MethodParameters:
            Name  Flags
      scriptNode  

  private static java.lang.Object transformResult(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object value
         0: .line 191
            aload 0 /* value */
            instanceof com.oracle.truffle.js.runtime.objects.JSLazyString
            ifeq 2
         1: .line 192
            aload 0 /* value */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            areturn
         2: .line 194
      StackMap locals:
      StackMap stack:
            aload 0 /* value */
            areturn
        end local 0 // java.lang.Object value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  value  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      value  

  public org.graalvm.polyglot.Value runRedirectOutput(java.lang.String, java.io.PrintStream, java.io.PrintStream, boolean, java.util.Map<java.lang.String, java.lang.Object>);
    descriptor: (Ljava/lang/String;Ljava/io/PrintStream;Ljava/io/PrintStream;ZLjava/util/Map;)Lorg/graalvm/polyglot/Value;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=10, args_size=6
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String sourceCode
        start local 2 // java.io.PrintStream writer
        start local 3 // java.io.PrintStream errorWriter
        start local 4 // boolean isInteractive
        start local 5 // java.util.Map bindings
         0: .line 198
            iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 2 /* writer */
            invokevirtual org.graalvm.polyglot.Context$Builder.out:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
            aload 3 /* errorWriter */
            invokevirtual org.graalvm.polyglot.Context$Builder.err:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 6 /* specialCtx */
        start local 6 // org.graalvm.polyglot.Context specialCtx
         1: .line 199
            aload 6 /* specialCtx */
            ldc "js"
            invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 7 /* jsBindings */
        start local 7 // org.graalvm.polyglot.Value jsBindings
         2: .line 200
            aload 5 /* bindings */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 9
            goto 5
      StackMap locals: com.oracle.truffle.js.test.TestHelper java.lang.String java.io.PrintStream java.io.PrintStream int java.util.Map org.graalvm.polyglot.Context org.graalvm.polyglot.Value top java.util.Iterator
      StackMap stack:
         3: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 8 /* entry */
        start local 8 // java.util.Map$Entry entry
         4: .line 201
            aload 7 /* jsBindings */
            aload 8 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aload 8 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
        end local 8 // java.util.Map$Entry entry
         5: .line 200
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 203
            ldc "js"
            aload 1 /* sourceCode */
            ldc "TestCase"
            invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
            iload 4 /* isInteractive */
            invokevirtual org.graalvm.polyglot.Source$Builder.interactive:(Z)Lorg/graalvm/polyglot/Source$Builder;
            invokevirtual org.graalvm.polyglot.Source$Builder.buildLiteral:()Lorg/graalvm/polyglot/Source;
            astore 8 /* source */
        start local 8 // org.graalvm.polyglot.Source source
         7: .line 204
            aload 6 /* specialCtx */
            aload 8 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            areturn
        end local 8 // org.graalvm.polyglot.Source source
        end local 7 // org.graalvm.polyglot.Value jsBindings
        end local 6 // org.graalvm.polyglot.Context specialCtx
        end local 5 // java.util.Map bindings
        end local 4 // boolean isInteractive
        end local 3 // java.io.PrintStream errorWriter
        end local 2 // java.io.PrintStream writer
        end local 1 // java.lang.String sourceCode
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lcom/oracle/truffle/js/test/TestHelper;
            0    8     1     sourceCode  Ljava/lang/String;
            0    8     2         writer  Ljava/io/PrintStream;
            0    8     3    errorWriter  Ljava/io/PrintStream;
            0    8     4  isInteractive  Z
            0    8     5       bindings  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            1    8     6     specialCtx  Lorg/graalvm/polyglot/Context;
            2    8     7     jsBindings  Lorg/graalvm/polyglot/Value;
            4    5     8          entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/Object;>;
            7    8     8         source  Lorg/graalvm/polyglot/Source;
    Signature: (Ljava/lang/String;Ljava/io/PrintStream;Ljava/io/PrintStream;ZLjava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;)Lorg/graalvm/polyglot/Value;
    MethodParameters:
               Name  Flags
      sourceCode     
      writer         
      errorWriter    
      isInteractive  
      bindings       

  public java.lang.String runToString(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String source
         0: .line 208
            aload 0 /* this */
            aload 1 /* source */
            iconst_0
            invokevirtual com.oracle.truffle.js.test.TestHelper.runToString:(Ljava/lang/String;Z)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String source
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/test/TestHelper;
            0    1     1  source  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      source  

  public java.lang.String runToString(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String source
        start local 2 // boolean isInteractive
         0: .line 212
            aload 0 /* this */
            aload 1 /* source */
            iload 2 /* isInteractive */
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            invokevirtual com.oracle.truffle.js.test.TestHelper.runToString:(Ljava/lang/String;ZLjava/util/Map;)Ljava/lang/String;
            areturn
        end local 2 // boolean isInteractive
        end local 1 // java.lang.String source
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lcom/oracle/truffle/js/test/TestHelper;
            0    1     1         source  Ljava/lang/String;
            0    1     2  isInteractive  Z
    MethodParameters:
               Name  Flags
      source         
      isInteractive  

  public java.lang.String runToString(java.lang.String, boolean, java.util.Map<java.lang.String, java.lang.Object>);
    descriptor: (Ljava/lang/String;ZLjava/util/Map;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String source
        start local 2 // boolean isInteractive
        start local 3 // java.util.Map bindings
         0: .line 217
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 4 /* baos */
        start local 4 // java.io.ByteArrayOutputStream baos
         1: .line 218
            aconst_null
            astore 5
            aconst_null
            astore 6
         2: new java.io.PrintStream
            dup
            aload 4 /* baos */
            iconst_0
            ldc "UTF-8"
            invokespecial java.io.PrintStream.<init>:(Ljava/io/OutputStream;ZLjava/lang/String;)V
            astore 7 /* stream */
        start local 7 // java.io.PrintStream stream
         3: .line 219
            aload 0 /* this */
            aload 1 /* source */
            aload 7 /* stream */
            aload 7 /* stream */
            iload 2 /* isInteractive */
            aload 3 /* bindings */
            invokevirtual com.oracle.truffle.js.test.TestHelper.runRedirectOutput:(Ljava/lang/String;Ljava/io/PrintStream;Ljava/io/PrintStream;ZLjava/util/Map;)Lorg/graalvm/polyglot/Value;
            pop
         4: .line 220
            aload 7 /* stream */
            ifnull 10
            aload 7 /* stream */
            invokevirtual java.io.PrintStream.close:()V
            goto 10
      StackMap locals: com.oracle.truffle.js.test.TestHelper java.lang.String int java.util.Map java.io.ByteArrayOutputStream java.lang.Throwable java.lang.Throwable java.io.PrintStream
      StackMap stack: java.lang.Throwable
         5: astore 5
            aload 7 /* stream */
            ifnull 6
            aload 7 /* stream */
            invokevirtual java.io.PrintStream.close:()V
        end local 7 // java.io.PrintStream stream
      StackMap locals:
      StackMap stack:
         6: aload 5
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 6
            aload 5
            ifnonnull 8
            aload 6
            astore 5
            goto 9
      StackMap locals:
      StackMap stack:
         8: aload 5
            aload 6
            if_acmpeq 9
            aload 5
            aload 6
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
         9: aload 5
            athrow
        10: .line 221
      StackMap locals:
      StackMap stack:
            aload 4 /* baos */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokevirtual java.nio.charset.Charset.displayName:()Ljava/lang/String;
            invokevirtual java.io.ByteArrayOutputStream.toString:(Ljava/lang/String;)Ljava/lang/String;
            ldc "\r\n"
            ldc "\n"
            invokevirtual java.lang.String.replaceAll:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
        11: areturn
        end local 4 // java.io.ByteArrayOutputStream baos
        12: .line 222
      StackMap locals: com.oracle.truffle.js.test.TestHelper java.lang.String int java.util.Map
      StackMap stack: java.io.UnsupportedEncodingException
            astore 4 /* e */
        start local 4 // java.io.UnsupportedEncodingException e
        13: .line 223
            new java.lang.RuntimeException
            dup
            aload 4 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.io.UnsupportedEncodingException e
        end local 3 // java.util.Map bindings
        end local 2 // boolean isInteractive
        end local 1 // java.lang.String source
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   14     0           this  Lcom/oracle/truffle/js/test/TestHelper;
            0   14     1         source  Ljava/lang/String;
            0   14     2  isInteractive  Z
            0   14     3       bindings  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            1   12     4           baos  Ljava/io/ByteArrayOutputStream;
            3    6     7         stream  Ljava/io/PrintStream;
           13   14     4              e  Ljava/io/UnsupportedEncodingException;
      Exception table:
        from    to  target  type
           3     4       5  any
           2     7       7  any
           0    11      12  Class java.io.UnsupportedEncodingException
    Signature: (Ljava/lang/String;ZLjava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;)Ljava/lang/String;
    MethodParameters:
               Name  Flags
      source         
      isInteractive  
      bindings       

  public java.lang.Object runSilent(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String sourceCode
         0: .line 228
            new com.oracle.truffle.js.test.TestHelper$1
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.js.test.TestHelper$1.<init>:(Lcom/oracle/truffle/js/test/TestHelper;)V
            astore 2 /* out */
        start local 2 // java.io.OutputStream out
         1: .line 235
            new java.io.PrintStream
            dup
            aload 2 /* out */
            invokespecial java.io.PrintStream.<init>:(Ljava/io/OutputStream;)V
            astore 3 /* stream */
        start local 3 // java.io.PrintStream stream
         2: .line 236
            aload 0 /* this */
            aload 1 /* sourceCode */
            aload 3 /* stream */
            aload 3 /* stream */
            iconst_0
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            invokevirtual com.oracle.truffle.js.test.TestHelper.runRedirectOutput:(Ljava/lang/String;Ljava/io/PrintStream;Ljava/io/PrintStream;ZLjava/util/Map;)Lorg/graalvm/polyglot/Value;
            invokestatic com.oracle.truffle.js.test.TestHelper.toHostValue:(Lorg/graalvm/polyglot/Value;)Ljava/lang/Object;
            areturn
        end local 3 // java.io.PrintStream stream
        end local 2 // java.io.OutputStream out
        end local 1 // java.lang.String sourceCode
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lcom/oracle/truffle/js/test/TestHelper;
            0    3     1  sourceCode  Ljava/lang/String;
            1    3     2         out  Ljava/io/OutputStream;
            2    3     3      stream  Ljava/io/PrintStream;
    MethodParameters:
            Name  Flags
      sourceCode  

  public com.oracle.truffle.api.object.DynamicObject runJSArray(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String source
         0: .line 240
            aload 0 /* this */
            aload 1 /* source */
            invokevirtual com.oracle.truffle.js.test.TestHelper.runNoPolyglot:(Ljava/lang/String;)Ljava/lang/Object;
            astore 2 /* obj */
        start local 2 // java.lang.Object obj
         1: .line 241
            getstatic com.oracle.truffle.js.test.TestHelper.$assertionsDisabled:Z
            ifne 2
            aload 2 /* obj */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArray.isJSArray:(Ljava/lang/Object;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 242
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* obj */
            checkcast com.oracle.truffle.api.object.DynamicObject
            areturn
        end local 2 // java.lang.Object obj
        end local 1 // java.lang.String source
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/oracle/truffle/js/test/TestHelper;
            0    3     1  source  Ljava/lang/String;
            1    3     2     obj  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      source  

  public com.oracle.truffle.js.test.TestHelper$ParsedFunction parseFirstFunction(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/js/test/TestHelper$ParsedFunction;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String source
         0: .line 263
            new com.oracle.truffle.js.test.TestHelper$ParsedFunction
            dup
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* source */
            invokevirtual com.oracle.truffle.js.test.TestHelper.parse:(Ljava/lang/String;)Lcom/oracle/truffle/js/nodes/ScriptNode;
            invokevirtual com.oracle.truffle.js.nodes.ScriptNode.getRootNode:()Lcom/oracle/truffle/api/nodes/RootNode;
            ldc Lcom/oracle/truffle/js/nodes/function/JSFunctionExpressionNode;
            invokestatic com.oracle.truffle.js.test.TestHelper.findFirstNodeInstance:(Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.js.nodes.function.JSFunctionExpressionNode
            invokevirtual com.oracle.truffle.js.nodes.function.JSFunctionExpressionNode.getFunctionData:()Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            invokespecial com.oracle.truffle.js.test.TestHelper$ParsedFunction.<init>:(Lcom/oracle/truffle/js/test/TestHelper;Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;)V
            areturn
        end local 1 // java.lang.String source
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/test/TestHelper;
            0    1     1  source  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      source  

  private static <T> T findFirstNodeInstance(com.oracle.truffle.api.nodes.Node, java.lang.Class<T>);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.oracle.truffle.api.nodes.Node root
        start local 1 // java.lang.Class clazz
         0: .line 267
            aload 1 /* clazz */
            aload 0 /* root */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 268
            aload 1 /* clazz */
            aload 0 /* root */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
         2: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* root */
            invokevirtual com.oracle.truffle.api.nodes.Node.getChildren:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 3
            goto 7
      StackMap locals: com.oracle.truffle.api.nodes.Node java.lang.Class top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.nodes.Node
            astore 2 /* child */
        start local 2 // com.oracle.truffle.api.nodes.Node child
         4: .line 271
            aload 2 /* child */
            aload 1 /* clazz */
            invokestatic com.oracle.truffle.js.test.TestHelper.findFirstNodeInstance:(Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Class;)Ljava/lang/Object;
            astore 4 /* node */
        start local 4 // java.lang.Object node
         5: .line 272
            aload 4 /* node */
            ifnull 7
         6: .line 273
            aload 4 /* node */
            areturn
        end local 4 // java.lang.Object node
        end local 2 // com.oracle.truffle.api.nodes.Node child
         7: .line 270
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         8: .line 276
            aconst_null
            areturn
        end local 1 // java.lang.Class clazz
        end local 0 // com.oracle.truffle.api.nodes.Node root
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   root  Lcom/oracle/truffle/api/nodes/Node;
            0    9     1  clazz  Ljava/lang/Class<TT;>;
            4    7     2  child  Lcom/oracle/truffle/api/nodes/Node;
            5    7     4   node  TT;
    Signature: <T:Ljava/lang/Object;>(Lcom/oracle/truffle/api/nodes/Node;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
       Name  Flags
      root   
      clazz  

  public static void assertNumberEquals(java.lang.Number, java.lang.Object);
    descriptor: (Ljava/lang/Number;Ljava/lang/Object;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // java.lang.Number expected
        start local 1 // java.lang.Object actual
         0: .line 284
            aload 1 /* actual */
            ldc Ljava/lang/Number;
            invokestatic org.hamcrest.CoreMatchers.instanceOf:(Ljava/lang/Class;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         1: .line 285
            aload 0 /* expected */
            invokevirtual java.lang.Number.doubleValue:()D
            aload 1 /* actual */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.doubleValue:()D
            ldc 1.0E-15
            invokestatic org.junit.Assert.assertEquals:(DDD)V
         2: .line 286
            return
        end local 1 // java.lang.Object actual
        end local 0 // java.lang.Number expected
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  expected  Ljava/lang/Number;
            0    3     1    actual  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      expected  
      actual    

  private com.oracle.truffle.js.parser.JSParser getParser();
    descriptor: ()Lcom/oracle/truffle/js/parser/JSParser;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.TestHelper this
         0: .line 289
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getJSContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getEvaluator:()Lcom/oracle/truffle/js/runtime/Evaluator;
            checkcast com.oracle.truffle.js.parser.JSParser
            areturn
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/TestHelper;

  public com.oracle.truffle.js.nodes.ScriptNode parse(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/js/nodes/ScriptNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.TestHelper this
        start local 1 // java.lang.String script
         0: .line 293
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getParser:()Lcom/oracle/truffle/js/parser/JSParser;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getJSContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 1 /* script */
            invokeinterface com.oracle.truffle.js.parser.JSParser.parseScript:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/String;)Lcom/oracle/truffle/js/nodes/ScriptNode;
            areturn
        end local 1 // java.lang.String script
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/test/TestHelper;
            0    1     1  script  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      script  

  public static java.lang.Object toHostValue(org.graalvm.polyglot.Value);
    descriptor: (Lorg/graalvm/polyglot/Value;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.graalvm.polyglot.Value value
         0: .line 297
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.isBoolean:()Z
            ifeq 2
         1: .line 298
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
         2: .line 300
      StackMap locals:
      StackMap stack:
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.isHostObject:()Z
            ifeq 4
         3: .line 301
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.asHostObject:()Ljava/lang/Object;
            areturn
         4: .line 303
      StackMap locals:
      StackMap stack:
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.isNull:()Z
            ifeq 6
         5: .line 304
            aconst_null
            areturn
         6: .line 306
      StackMap locals:
      StackMap stack:
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.isNumber:()Z
            ifeq 12
         7: .line 307
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.fitsInInt:()Z
            ifeq 9
         8: .line 308
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            areturn
         9: .line 310
      StackMap locals:
      StackMap stack:
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.fitsInDouble:()Z
            ifeq 11
        10: .line 311
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.asDouble:()D
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            areturn
        11: .line 313
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown number value: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* value */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            areturn
        12: .line 315
      StackMap locals:
      StackMap stack:
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.isString:()Z
            ifeq 14
        13: .line 316
            aload 0 /* value */
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            areturn
        14: .line 318
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unknown value: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* value */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 0 // org.graalvm.polyglot.Value value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   15     0  value  Lorg/graalvm/polyglot/Value;
    MethodParameters:
       Name  Flags
      value  final

  public void enterContext();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.TestHelper this
         0: .line 322
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.enter:()V
         1: .line 323
            return
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/test/TestHelper;

  public void leaveContext();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.TestHelper this
         0: .line 326
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.leave:()V
         1: .line 327
            return
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/test/TestHelper;

  public void assumeES6OrLater();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.TestHelper this
         0: .line 330
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.enterContext:()V
         1: .line 331
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.getJSContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getEcmaScriptVersion:()I
            bipush 6
            if_icmplt 2
            iconst_1
            goto 3
      StackMap locals:
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: invokestatic org.junit.Assume.assumeTrue:(Z)V
         4: .line 332
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.TestHelper.leaveContext:()V
         5: .line 333
            return
        end local 0 // com.oracle.truffle.js.test.TestHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/oracle/truffle/js/test/TestHelper;
}
SourceFile: "TestHelper.java"
NestMembers:
  com.oracle.truffle.js.test.TestHelper$1  com.oracle.truffle.js.test.TestHelper$ParsedFunction
InnerClasses:
  com.oracle.truffle.js.test.TestHelper$1
  public ParsedFunction = com.oracle.truffle.js.test.TestHelper$ParsedFunction of com.oracle.truffle.js.test.TestHelper
  public abstract Entry = java.util.Map$Entry of java.util.Map
  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