public class com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest
  super_class: java.lang.Object
{
  private final javax.script.ScriptEngineManager manager;
    descriptor: Ljavax/script/ScriptEngineManager;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  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.JSONCompatibleTest this
         0: .line 59
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 61
            aload 0 /* this */
            new javax.script.ScriptEngineManager
            dup
            invokespecial javax.script.ScriptEngineManager.<init>:()V
            putfield com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.manager:Ljavax/script/ScriptEngineManager;
         2: .line 59
            return
        end local 0 // com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/scriptengine/test/JSONCompatibleTest;

  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.JSONCompatibleTest this
         0: .line 64
            aload 0 /* this */
            getfield com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.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.JSONCompatibleTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/scriptengine/test/JSONCompatibleTest;

  public void testWrapArray();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest this
         0: .line 72
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.getEngine:()Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 73
            aload 1 /* engine */
            ldc "Java.asJSONCompatible([1, 2, 3])"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            astore 2 /* val */
        start local 2 // java.lang.Object val
         2: .line 74
            aload 2 /* val */
            invokestatic com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.asList:(Ljava/lang/Object;)Ljava/util/List;
            iconst_3
            anewarray java.lang.Integer
            dup
            iconst_0
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iconst_2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iconst_3
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 75
            return
        end local 2 // java.lang.Object val
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/js/scriptengine/test/JSONCompatibleTest;
            1    4     1  engine  Ljavax/script/ScriptEngine;
            2    4     2     val  Ljava/lang/Object;
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testWrapObjectWithArray();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest this
         0: .line 82
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.getEngine:()Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 83
            aload 1 /* engine */
            ldc "Java.asJSONCompatible({x: [1, 2, 3]})"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            astore 2 /* val */
        start local 2 // java.lang.Object val
         2: .line 84
            aload 2 /* val */
            invokestatic com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.asMap:(Ljava/lang/Object;)Ljava/util/Map;
            ldc "x"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.asList:(Ljava/lang/Object;)Ljava/util/List;
            iconst_3
            anewarray java.lang.Integer
            dup
            iconst_0
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iconst_2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iconst_3
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 85
            return
        end local 2 // java.lang.Object val
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/js/scriptengine/test/JSONCompatibleTest;
            1    4     1  engine  Ljavax/script/ScriptEngine;
            2    4     2     val  Ljava/lang/Object;
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testDeepWrapping();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest this
         0: .line 92
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.getEngine:()Ljavax/script/ScriptEngine;
            astore 1 /* engine */
        start local 1 // javax.script.ScriptEngine engine
         1: .line 93
            aload 1 /* engine */
            ldc "Java.asJSONCompatible({x: [1, {y: [2, {z: [3]}]}, [4, 5]]})"
            invokeinterface javax.script.ScriptEngine.eval:(Ljava/lang/String;)Ljava/lang/Object;
            astore 2 /* val */
        start local 2 // java.lang.Object val
         2: .line 94
            aload 2 /* val */
            invokestatic com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.asMap:(Ljava/lang/Object;)Ljava/util/Map;
            astore 3 /* root */
        start local 3 // java.util.Map root
         3: .line 95
            aload 3 /* root */
            ldc "x"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.asList:(Ljava/lang/Object;)Ljava/util/List;
            astore 4 /* x */
        start local 4 // java.util.List x
         4: .line 96
            aload 4 /* x */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 97
            aload 4 /* x */
            iconst_1
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.asMap:(Ljava/lang/Object;)Ljava/util/Map;
            astore 5 /* x1 */
        start local 5 // java.util.Map x1
         6: .line 98
            aload 5 /* x1 */
            ldc "y"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.asList:(Ljava/lang/Object;)Ljava/util/List;
            astore 6 /* y */
        start local 6 // java.util.List y
         7: .line 99
            aload 6 /* y */
            iconst_0
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            iconst_2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 100
            aload 6 /* y */
            iconst_1
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.asMap:(Ljava/lang/Object;)Ljava/util/Map;
            astore 7 /* y1 */
        start local 7 // java.util.Map y1
         9: .line 101
            aload 7 /* y1 */
            ldc "z"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.asList:(Ljava/lang/Object;)Ljava/util/List;
            iconst_1
            anewarray java.lang.Integer
            dup
            iconst_0
            iconst_3
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 102
            aload 4 /* x */
            iconst_2
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest.asList:(Ljava/lang/Object;)Ljava/util/List;
            iconst_2
            anewarray java.lang.Integer
            dup
            iconst_0
            iconst_4
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iconst_5
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        11: .line 103
            return
        end local 7 // java.util.Map y1
        end local 6 // java.util.List y
        end local 5 // java.util.Map x1
        end local 4 // java.util.List x
        end local 3 // java.util.Map root
        end local 2 // java.lang.Object val
        end local 1 // javax.script.ScriptEngine engine
        end local 0 // com.oracle.truffle.js.scriptengine.test.JSONCompatibleTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lcom/oracle/truffle/js/scriptengine/test/JSONCompatibleTest;
            1   12     1  engine  Ljavax/script/ScriptEngine;
            2   12     2     val  Ljava/lang/Object;
            3   12     3    root  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            4   12     4       x  Ljava/util/List<Ljava/lang/Object;>;
            6   12     5      x1  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            7   12     6       y  Ljava/util/List<Ljava/lang/Object;>;
            9   12     7      y1  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    Exceptions:
      throws javax.script.ScriptException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static java.util.List<java.lang.Object> asList();
    descriptor: (Ljava/lang/Object;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object obj
         0: .line 107
            aload 0 /* obj */
            ldc Ljava/util/List;
            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 108
            aload 0 /* obj */
            checkcast java.util.List
            areturn
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   obj  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/util/List<Ljava/lang/Object;>;
    MethodParameters:
      Name  Flags
      obj   final

  private static java.util.Map<java.lang.String, java.lang.Object> asMap();
    descriptor: (Ljava/lang/Object;)Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object obj
         0: .line 113
            aload 0 /* obj */
            ldc Ljava/util/Map;
            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 114
            aload 0 /* obj */
            checkcast java.util.Map
            areturn
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   obj  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    MethodParameters:
      Name  Flags
      obj   final
}
SourceFile: "JSONCompatibleTest.java"
    RuntimeVisibleAnnotations: 
      org.junit.Ignore()