public class com.oracle.truffle.js.scriptengine.test.TestEngine
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.js.scriptengine.test.TestEngine
  super_class: java.lang.Object
{
  static final java.lang.String TESTED_ENGINE_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "JavaScript"

  private final javax.script.ScriptEngineManager manager;
    descriptor: Ljavax/script/ScriptEngineManager;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public org.junit.rules.ExpectedException expectedException;
    descriptor: Lorg/junit/rules/ExpectedException;
    flags: (0x0001) ACC_PUBLIC
    RuntimeVisibleAnnotations: 
      org.junit.Rule()

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 74
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 78
            aload 0 /* this */
            new javax.script.ScriptEngineManager
            dup
            invokespecial javax.script.ScriptEngineManager.<init>:()V
            putfield com.oracle.truffle.js.scriptengine.test.TestEngine.manager:Ljavax/script/ScriptEngineManager;
         2: .line 80
            aload 0 /* this */
            invokestatic org.junit.rules.ExpectedException.none:()Lorg/junit/rules/ExpectedException;
            putfield com.oracle.truffle.js.scriptengine.test.TestEngine.expectedException:Lorg/junit/rules/ExpectedException;
         3: .line 74
            return
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;

  private javax.script.ScriptEngine getEngine();
    descriptor: ()Ljavax/script/ScriptEngine;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 83
            aload 0 /* this */
            getfield com.oracle.truffle.js.scriptengine.test.TestEngine.manager:Ljavax/script/ScriptEngineManager;
            ldc "JavaScript"
            invokevirtual javax.script.ScriptEngineManager.getEngineByName:(Ljava/lang/String;)Ljavax/script/ScriptEngine;
            areturn
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;

  public void checkName();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 88
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc Lcom/oracle/truffle/js/scriptengine/GraalJSScriptEngine;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 89
            return
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void compileAndEval1();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 93
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            ldc "true"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 94
            return
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void compileAndEval2();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 98
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            checkcast javax.script.Compilable
            ldc "true"
            invokeinterface javax.script.Compilable.compile:(Ljava/lang/String;)Ljavax/script/CompiledScript;
            invokevirtual javax.script.CompiledScript.eval:()Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 99
            return
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void compileSyntaxError();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 103
            aload 0 /* this */
            getfield com.oracle.truffle.js.scriptengine.test.TestEngine.expectedException:Lorg/junit/rules/ExpectedException;
            ldc Ljavax/script/ScriptException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         1: .line 104
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            checkcast javax.script.Compilable
            ldc ":-("
            invokeinterface javax.script.Compilable.compile:(Ljava/lang/String;)Ljavax/script/CompiledScript;
            pop
         2: .line 105
            return
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void declareVar();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 110
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 111
            aload 1 /* engine */
            bipush 100
            invokeinterface javax.script.ScriptEngine.getBindings:(I)Ljavax/script/Bindings;
            ldc "polyglot.js.allowHostAccess"
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokeinterface javax.script.Bindings.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 112
            aload 1 /* engine */
            bipush 100
            invokeinterface javax.script.ScriptEngine.getBindings:(I)Ljavax/script/Bindings;
            ldc "polyglot.js.allowHostClassLookup"
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokeinterface javax.script.Bindings.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 113
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aload 1 /* engine */
         4: .line 114
            ldc "var m = new javax.script.ScriptEngineManager();var engine = m.getEngineByName('Graal.js');var x;engine.eval('var x = \"ENGINE\"');typeof x == 'undefined'"
         5: .line 113
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 121
            return
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1    7     1  engine  Ljavax/script/ScriptEngine;
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void getProperty();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 127
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
         1: .line 128
            ldc "var m = new javax.script.ScriptEngineManager();var engine = m.getEngineByName('Graal.js');var obj = {prop: 'value'};engine.class.static.getProperty(obj, 'prop') == 'value';"
         2: .line 127
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 134
            return
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()
      org.junit.Ignore(value = "We do not support `engine.class.static.getProperty`")

  public void evalWithGlobal();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 138
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 139
            aload 1 /* engine */
            sipush 200
            invokeinterface javax.script.ScriptEngine.getBindings:(I)Ljavax/script/Bindings;
            astore 2 /* bindings */
        start local 2 // javax.script.Bindings bindings
         2: .line 140
            aload 2 /* bindings */
            ldc "x"
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface javax.script.Bindings.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 141
            aload 1 /* engine */
            ldc "x === 42;"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            istore 3 /* result */
        start local 3 // boolean result
         4: .line 142
            iload 3 /* result */
            invokestatic org.junit.Assert.assertTrue:(Z)V
         5: .line 143
            return
        end local 3 // boolean result
        end local 2 // javax.script.Bindings bindings
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1    6     1    engine  Ljavax/script/ScriptEngine;
            2    6     2  bindings  Ljavax/script/Bindings;
            4    6     3    result  Z
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void getPolyglotContextEvalWithGlobal();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 147
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 148
            aload 1 /* engine */
            sipush 200
            invokeinterface javax.script.ScriptEngine.getBindings:(I)Ljavax/script/Bindings;
            astore 2 /* bindings */
        start local 2 // javax.script.Bindings bindings
         2: .line 149
            aload 2 /* bindings */
            ldc "x"
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface javax.script.Bindings.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 150
            aload 1 /* engine */
            ldc "true"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            pop
         4: .line 151
            aload 1 /* engine */
            checkcast com.oracle.truffle.js.scriptengine.GraalJSScriptEngine
            invokevirtual com.oracle.truffle.js.scriptengine.GraalJSScriptEngine.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
            ldc "js"
            ldc "x === 42;"
            ldc "src"
            invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
            invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            istore 3 /* result */
        start local 3 // boolean result
         5: .line 152
            iload 3 /* result */
            invokestatic org.junit.Assert.assertTrue:(Z)V
         6: .line 153
            return
        end local 3 // boolean result
        end local 2 // javax.script.Bindings bindings
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1    7     1    engine  Ljavax/script/ScriptEngine;
            2    7     2  bindings  Ljavax/script/Bindings;
            5    7     3    result  Z
    Exceptions:
      throws java.io.IOException, javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void getPolyglotContextEvalWithGlobalFail();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 157
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 158
            aload 1 /* engine */
            sipush 200
            invokeinterface javax.script.ScriptEngine.getBindings:(I)Ljavax/script/Bindings;
            astore 2 /* bindings */
        start local 2 // javax.script.Bindings bindings
         2: .line 159
            aload 2 /* bindings */
            ldc "x"
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface javax.script.Bindings.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 160
            aload 1 /* engine */
            checkcast com.oracle.truffle.js.scriptengine.GraalJSScriptEngine
            invokevirtual com.oracle.truffle.js.scriptengine.GraalJSScriptEngine.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
            ldc "js"
            ldc "typeof x === \"undefined\";"
            ldc "src"
            invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
            invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            istore 3 /* result */
        start local 3 // boolean result
         4: .line 161
            iload 3 /* result */
            invokestatic org.junit.Assert.assertTrue:(Z)V
         5: .line 162
            return
        end local 3 // boolean result
        end local 2 // javax.script.Bindings bindings
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1    6     1    engine  Ljavax/script/ScriptEngine;
            2    6     2  bindings  Ljavax/script/Bindings;
            4    6     3    result  Z
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void getPolyglotContextEvalWithGlobalManualCall();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 166
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 167
            aload 1 /* engine */
            sipush 200
            invokeinterface javax.script.ScriptEngine.getBindings:(I)Ljavax/script/Bindings;
            astore 2 /* bindings */
        start local 2 // javax.script.Bindings bindings
         2: .line 168
            aload 2 /* bindings */
            ldc "x"
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface javax.script.Bindings.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 170
            aload 1 /* engine */
            checkcast com.oracle.truffle.js.scriptengine.GraalJSScriptEngine
            invokevirtual com.oracle.truffle.js.scriptengine.GraalJSScriptEngine.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
            ldc "js"
            invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            ldc "importScriptEngineGlobalBindings"
            invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* bindings */
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            pop
         4: .line 171
            aload 1 /* engine */
            checkcast com.oracle.truffle.js.scriptengine.GraalJSScriptEngine
            invokevirtual com.oracle.truffle.js.scriptengine.GraalJSScriptEngine.getPolyglotContext:()Lorg/graalvm/polyglot/Context;
            ldc "js"
            ldc "x === 42;"
            ldc "src"
            invokestatic org.graalvm.polyglot.Source.newBuilder:(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)Lorg/graalvm/polyglot/Source$Builder;
            invokevirtual org.graalvm.polyglot.Source$Builder.build:()Lorg/graalvm/polyglot/Source;
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            istore 3 /* result */
        start local 3 // boolean result
         5: .line 172
            iload 3 /* result */
            invokestatic org.junit.Assert.assertTrue:(Z)V
         6: .line 173
            return
        end local 3 // boolean result
        end local 2 // javax.script.Bindings bindings
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1    7     1    engine  Ljavax/script/ScriptEngine;
            2    7     2  bindings  Ljavax/script/Bindings;
            5    7     3    result  Z
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void invokeFunctionWithGlobal();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 177
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 178
            aload 1 /* engine */
            sipush 200
            invokeinterface javax.script.ScriptEngine.getBindings:(I)Ljavax/script/Bindings;
            astore 2 /* bindings */
        start local 2 // javax.script.Bindings bindings
         2: .line 179
            aload 2 /* bindings */
            ldc "x"
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface javax.script.Bindings.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 180
            aload 1 /* engine */
            ldc "function foo() { return x === 42; }"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            pop
         4: .line 181
            aload 1 /* engine */
            checkcast javax.script.Invocable
            ldc "foo"
            iconst_0
            anewarray java.lang.Object
            invokeinterface javax.script.Invocable.invokeFunction:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            istore 3 /* result */
        start local 3 // boolean result
         5: .line 182
            iload 3 /* result */
            invokestatic org.junit.Assert.assertTrue:(Z)V
         6: .line 183
            return
        end local 3 // boolean result
        end local 2 // javax.script.Bindings bindings
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1    7     1    engine  Ljavax/script/ScriptEngine;
            2    7     2  bindings  Ljavax/script/Bindings;
            5    7     3    result  Z
    Exceptions:
      throws javax.script.ScriptException, java.lang.NoSuchMethodException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void invokeMethodWithGlobal();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 187
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 188
            aload 1 /* engine */
            sipush 200
            invokeinterface javax.script.ScriptEngine.getBindings:(I)Ljavax/script/Bindings;
            astore 2 /* bindings */
        start local 2 // javax.script.Bindings bindings
         2: .line 189
            aload 2 /* bindings */
            ldc "x"
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface javax.script.Bindings.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 190
            aload 1 /* engine */
            ldc "var obj = {f: () => { return x === 42; }};"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            pop
         4: .line 191
            aload 1 /* engine */
            checkcast javax.script.Invocable
            aload 1 /* engine */
            ldc "obj"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            ldc "f"
            iconst_0
            anewarray java.lang.Object
            invokeinterface javax.script.Invocable.invokeMethod:(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            istore 3 /* result */
        start local 3 // boolean result
         5: .line 192
            iload 3 /* result */
            invokestatic org.junit.Assert.assertTrue:(Z)V
         6: .line 193
            return
        end local 3 // boolean result
        end local 2 // javax.script.Bindings bindings
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1    7     1    engine  Ljavax/script/ScriptEngine;
            2    7     2  bindings  Ljavax/script/Bindings;
            5    7     3    result  Z
    Exceptions:
      throws javax.script.ScriptException, java.lang.NoSuchMethodException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void factoryGetParameterTest();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 197
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            invokeinterface javax.script.ScriptEngine.getFactory:()Ljavax/script/ScriptEngineFactory;
            astore 1 /* factory */
        start local 1 // javax.script.ScriptEngineFactory factory
         1: .line 200
            aload 1 /* factory */
            invokeinterface javax.script.ScriptEngineFactory.getEngineName:()Ljava/lang/String;
            aload 1 /* factory */
            ldc "javax.script.engine"
            invokeinterface javax.script.ScriptEngineFactory.getParameter:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 201
            aload 1 /* factory */
            invokeinterface javax.script.ScriptEngineFactory.getEngineVersion:()Ljava/lang/String;
            aload 1 /* factory */
            ldc "javax.script.engine_version"
            invokeinterface javax.script.ScriptEngineFactory.getParameter:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 202
            aload 1 /* factory */
            invokeinterface javax.script.ScriptEngineFactory.getLanguageName:()Ljava/lang/String;
            aload 1 /* factory */
            ldc "javax.script.language"
            invokeinterface javax.script.ScriptEngineFactory.getParameter:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 203
            aload 1 /* factory */
            invokeinterface javax.script.ScriptEngineFactory.getLanguageVersion:()Ljava/lang/String;
            aload 1 /* factory */
            ldc "javax.script.language_version"
            invokeinterface javax.script.ScriptEngineFactory.getParameter:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 204
            aload 1 /* factory */
            invokeinterface javax.script.ScriptEngineFactory.getNames:()Ljava/util/List;
            aload 1 /* factory */
            ldc "javax.script.name"
            invokeinterface javax.script.ScriptEngineFactory.getParameter:(Ljava/lang/String;)Ljava/lang/Object;
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         6: .line 207
            aconst_null
            aload 1 /* factory */
            ldc "THREADING"
            invokeinterface javax.script.ScriptEngineFactory.getParameter:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 210
            aconst_null
            aload 1 /* factory */
            ldc "noValueIsAssignedToThisKey"
            invokeinterface javax.script.ScriptEngineFactory.getParameter:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 211
            return
        end local 1 // javax.script.ScriptEngineFactory factory
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1    9     1  factory  Ljavax/script/ScriptEngineFactory;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void twoNashornEngines();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 217
            ldc "foo"
            aload 0 /* this */
            getfield com.oracle.truffle.js.scriptengine.test.TestEngine.manager:Ljavax/script/ScriptEngineManager;
            invokestatic com.oracle.truffle.js.scriptengine.test.TestUtil.getEngineNashornCompat:(Ljavax/script/ScriptEngineManager;)Ljavax/script/ScriptEngine;
            ldc "'foo'"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 218
            ldc "bar"
            aload 0 /* this */
            getfield com.oracle.truffle.js.scriptengine.test.TestEngine.manager:Ljavax/script/ScriptEngineManager;
            invokestatic com.oracle.truffle.js.scriptengine.test.TestUtil.getEngineNashornCompat:(Ljavax/script/ScriptEngineManager;)Ljavax/script/ScriptEngine;
            ldc "'bar'"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 219
            return
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void moduleWithDependency();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 223
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 224
            aload 1 /* engine */
            bipush 100
            invokeinterface javax.script.ScriptEngine.getBindings:(I)Ljavax/script/Bindings;
            ldc "polyglot.js.allowIO"
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokeinterface javax.script.Bindings.put:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 226
            ldc "dependency"
            ldc ".mjs"
            invokestatic java.io.File.createTempFile:(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 2 /* dependency */
        start local 2 // java.io.File dependency
         3: .line 227
            aload 2 /* dependency */
            invokevirtual java.io.File.deleteOnExit:()V
         4: .line 228
            aconst_null
            astore 3
            aconst_null
            astore 4
         5: new java.io.FileWriter
            dup
            aload 2 /* dependency */
            invokespecial java.io.FileWriter.<init>:(Ljava/io/File;)V
            astore 5 /* writer */
        start local 5 // java.io.FileWriter writer
         6: .line 229
            aload 5 /* writer */
            ldc "export let answer = 42;"
            invokevirtual java.io.FileWriter.append:(Ljava/lang/CharSequence;)Ljava/io/Writer;
            pop
         7: .line 230
            aload 5 /* writer */
            ifnull 13
            aload 5 /* writer */
            invokevirtual java.io.FileWriter.close:()V
            goto 13
      StackMap locals: com.oracle.truffle.js.scriptengine.test.TestEngine javax.script.ScriptEngine java.io.File java.lang.Throwable java.lang.Throwable java.io.FileWriter
      StackMap stack: java.lang.Throwable
         8: astore 3
            aload 5 /* writer */
            ifnull 9
            aload 5 /* writer */
            invokevirtual java.io.FileWriter.close:()V
        end local 5 // java.io.FileWriter writer
      StackMap locals:
      StackMap stack:
         9: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 4
            aload 3
            ifnonnull 11
            aload 4
            astore 3
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 3
            aload 4
            if_acmpeq 12
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        12: aload 3
            athrow
        13: .line 232
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 2 /* dependency */
            invokevirtual java.io.File.getParent:()Ljava/lang/String;
            ldc "main.mjs"
            invokespecial java.io.File.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            astore 3 /* mainModuleName */
        start local 3 // java.lang.String mainModuleName
        14: .line 233
            new java.lang.StringBuilder
            dup
            ldc "import { answer } from '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* dependency */
            invokevirtual java.io.File.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'; answer;"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* mainModule */
        start local 4 // java.lang.String mainModule
        15: .line 234
            aload 1 /* engine */
            invokeinterface javax.script.ScriptEngine.getContext:()Ljavax/script/ScriptContext;
            ldc "javax.script.filename"
            aload 3 /* mainModuleName */
            bipush 100
            invokeinterface javax.script.ScriptContext.setAttribute:(Ljava/lang/String;Ljava/lang/Object;I)V
        16: .line 236
            aload 1 /* engine */
            aload 4 /* mainModule */
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            astore 5 /* result */
        start local 5 // java.lang.Object result
        17: .line 238
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 5 /* result */
            checkcast java.lang.Number
            invokevirtual java.lang.Number.intValue:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
        18: .line 239
            return
        end local 5 // java.lang.Object result
        end local 4 // java.lang.String mainModule
        end local 3 // java.lang.String mainModuleName
        end local 2 // java.io.File dependency
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   19     0            this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1   19     1          engine  Ljavax/script/ScriptEngine;
            3   19     2      dependency  Ljava/io/File;
            6    9     5          writer  Ljava/io/FileWriter;
           14   19     3  mainModuleName  Ljava/lang/String;
           15   19     4      mainModule  Ljava/lang/String;
           17   19     5          result  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           6     7       8  any
           5    10      10  any
    Exceptions:
      throws java.io.IOException, javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void unicodeOutput();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 243
            ldc "Tu\u010D\u0148\u00E1\u010D\u010D\u00ED \uD83D\uDCA9!"
            astore 1 /* text */
        start local 1 // java.lang.String text
         1: .line 244
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.TestEngine.getEngine:()Ljavax/script/ScriptEngine;
            astore 2 /* engine */
        start local 2 // javax.script.ScriptEngine engine
         2: .line 245
            new java.io.StringWriter
            dup
            invokespecial java.io.StringWriter.<init>:()V
            astore 3 /* output */
        start local 3 // java.io.StringWriter output
         3: .line 246
            aload 2 /* engine */
            invokeinterface javax.script.ScriptEngine.getContext:()Ljavax/script/ScriptContext;
            aload 3 /* output */
            invokeinterface javax.script.ScriptContext.setWriter:(Ljava/io/Writer;)V
         4: .line 247
            aload 2 /* engine */
            new java.lang.StringBuilder
            dup
            ldc "print('"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* text */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "');"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            pop
         5: .line 248
            new java.lang.StringBuilder
            dup
            aload 1 /* text */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 3 /* output */
            invokevirtual java.io.StringWriter.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 249
            return
        end local 3 // java.io.StringWriter output
        end local 2 // javax.script.ScriptEngine engine
        end local 1 // java.lang.String text
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1    7     1    text  Ljava/lang/String;
            2    7     2  engine  Ljavax/script/ScriptEngine;
            3    7     3  output  Ljava/io/StringWriter;
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void unicodeInput();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 253
            ldc "Tu\u010D\u0148\u00E1\u010D\u010D\u00ED \uD83D\uDCA9!"
            astore 1 /* text */
        start local 1 // java.lang.String text
         1: .line 255
            invokestatic org.graalvm.polyglot.Engine.newBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
            invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
         2: .line 256
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "js"
            aastore
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.Context$Builder.allowExperimentalOptions:(Z)Lorg/graalvm/polyglot/Context$Builder;
            ldc "js.shell"
            ldc "true"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
         3: .line 254
            invokestatic com.oracle.truffle.js.scriptengine.GraalJSScriptEngine.create:(Lorg/graalvm/polyglot/Engine;Lorg/graalvm/polyglot/Context$Builder;)Lcom/oracle/truffle/js/scriptengine/GraalJSScriptEngine;
            astore 2 /* engine */
        start local 2 // javax.script.ScriptEngine engine
         4: .line 257
            new java.io.StringReader
            dup
            aload 1 /* text */
            invokespecial java.io.StringReader.<init>:(Ljava/lang/String;)V
            astore 3 /* input */
        start local 3 // java.io.StringReader input
         5: .line 258
            aload 2 /* engine */
            invokeinterface javax.script.ScriptEngine.getContext:()Ljavax/script/ScriptContext;
            aload 3 /* input */
            invokeinterface javax.script.ScriptContext.setReader:(Ljava/io/Reader;)V
         6: .line 259
            aload 2 /* engine */
            ldc "readline()"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            astore 4 /* result */
        start local 4 // java.lang.Object result
         7: .line 260
            aload 1 /* text */
            aload 4 /* result */
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 261
            return
        end local 4 // java.lang.Object result
        end local 3 // java.io.StringReader input
        end local 2 // javax.script.ScriptEngine engine
        end local 1 // java.lang.String text
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1    9     1    text  Ljava/lang/String;
            4    9     2  engine  Ljavax/script/ScriptEngine;
            5    9     3   input  Ljava/io/StringReader;
            7    9     4  result  Ljava/lang/Object;
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void exceptionInCauseChain();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 266
            aload 0 /* this */
            getfield com.oracle.truffle.js.scriptengine.test.TestEngine.manager:Ljavax/script/ScriptEngineManager;
            invokestatic com.oracle.truffle.js.scriptengine.test.TestUtil.getEngineNashornCompat:(Ljavax/script/ScriptEngineManager;)Ljavax/script/ScriptEngine;
            ldc "new java.util.ArrayList().iterator().next()"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 267
            ldc "ScriptException/NoSuchElementException expected"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         2: .line 268
            goto 13
      StackMap locals:
      StackMap stack: javax.script.ScriptException
         3: astore 1 /* ex */
        start local 1 // javax.script.ScriptException ex
         4: .line 269
            iconst_0
            istore 2 /* foundNoSuchElementException */
        start local 2 // boolean foundNoSuchElementException
         5: .line 270
            aload 1 /* ex */
            invokevirtual javax.script.ScriptException.getCause:()Ljava/lang/Throwable;
            astore 3 /* cause */
        start local 3 // java.lang.Throwable cause
         6: .line 271
            goto 11
         7: .line 272
      StackMap locals: javax.script.ScriptException int java.lang.Throwable
      StackMap stack:
            aload 3 /* cause */
            instanceof java.util.NoSuchElementException
            ifeq 10
         8: .line 273
            iconst_1
            istore 2 /* foundNoSuchElementException */
         9: .line 274
            goto 12
        10: .line 276
      StackMap locals:
      StackMap stack:
            aload 3 /* cause */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            astore 3 /* cause */
        11: .line 271
      StackMap locals:
      StackMap stack:
            aload 3 /* cause */
            ifnonnull 7
        12: .line 278
      StackMap locals:
      StackMap stack:
            iload 2 /* foundNoSuchElementException */
            invokestatic org.junit.Assert.assertTrue:(Z)V
        end local 3 // java.lang.Throwable cause
        end local 2 // boolean foundNoSuchElementException
        end local 1 // javax.script.ScriptException ex
        13: .line 280
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot                         Name  Signature
            0   14     0                         this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            4   13     1                           ex  Ljavax/script/ScriptException;
            5   13     2  foundNoSuchElementException  Z
            6   13     3                        cause  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     2       3  Class javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void noNullInNashornEngine();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
         0: .line 284
            aload 0 /* this */
            getfield com.oracle.truffle.js.scriptengine.test.TestEngine.manager:Ljavax/script/ScriptEngineManager;
            ldc "nashorn"
            invokevirtual javax.script.ScriptEngineManager.getEngineByName:(Ljava/lang/String;)Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 285
            aload 1 /* engine */
            ifnull 6
         2: .line 286
            aload 1 /* engine */
            invokeinterface javax.script.ScriptEngine.getFactory:()Ljavax/script/ScriptEngineFactory;
            astore 2 /* factory */
        start local 2 // javax.script.ScriptEngineFactory factory
         3: .line 287
            ldc -1
            aload 2 /* factory */
            invokeinterface javax.script.ScriptEngineFactory.getNames:()Ljava/util/List;
            aconst_null
            invokeinterface java.util.List.indexOf:(Ljava/lang/Object;)I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         4: .line 288
            ldc -1
            aload 2 /* factory */
            invokeinterface javax.script.ScriptEngineFactory.getMimeTypes:()Ljava/util/List;
            aconst_null
            invokeinterface java.util.List.indexOf:(Ljava/lang/Object;)I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         5: .line 289
            ldc -1
            aload 2 /* factory */
            invokeinterface javax.script.ScriptEngineFactory.getExtensions:()Ljava/util/List;
            aconst_null
            invokeinterface java.util.List.indexOf:(Ljava/lang/Object;)I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        end local 2 // javax.script.ScriptEngineFactory factory
         6: .line 291
      StackMap locals: javax.script.ScriptEngine
      StackMap stack:
            return
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.TestEngine this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lcom/oracle/truffle/js/scriptengine/test/TestEngine;
            1    7     1   engine  Ljavax/script/ScriptEngine;
            3    6     2  factory  Ljavax/script/ScriptEngineFactory;
    RuntimeVisibleAnnotations: 
      org.junit.Test()
}
SourceFile: "TestEngine.java"
InnerClasses:
  public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context
  public final Builder = org.graalvm.polyglot.Engine$Builder of org.graalvm.polyglot.Engine
  public Builder = org.graalvm.polyglot.Source$Builder of org.graalvm.polyglot.Source