public class com.oracle.truffle.js.test.runtime.MultiContextShapeTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.js.test.runtime.MultiContextShapeTest
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
         0: .line 57
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/runtime/MultiContextShapeTest;

  public void ordinaryObjectShape();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
         0: .line 61
            ldc "({key: 'value'});"
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.testSameShapeAcrossContexts:(Ljava/lang/String;)V
         1: .line 62
            ldc "Object.create(null);"
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.testSameShapeAcrossContexts:(Ljava/lang/String;)V
         2: .line 63
            ldc "Object.create({});"
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.testSameShapeAcrossContexts:(Ljava/lang/String;)V
         3: .line 64
            return
        end local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/js/test/runtime/MultiContextShapeTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void arrayShape();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
         0: .line 68
            ldc "[3,1,4,1,5,9,2,6,5,3,5,9]"
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.testSameShapeAcrossContexts:(Ljava/lang/String;)V
         1: .line 69
            return
        end local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/test/runtime/MultiContextShapeTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void promiseShape();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
         0: .line 73
            ldc "Promise.resolve(42);"
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.testSameShapeAcrossContexts:(Ljava/lang/String;)V
         1: .line 74
            return
        end local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/test/runtime/MultiContextShapeTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void functionShape();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
         0: .line 78
            ldc "(function() {});"
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.testSameShapeAcrossContexts:(Ljava/lang/String;)V
         1: .line 79
            ldc "function foo() {} foo;"
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.testSameShapeAcrossContexts:(Ljava/lang/String;)V
         2: .line 80
            return
        end local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/test/runtime/MultiContextShapeTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void argumentsShape();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
         0: .line 84
            ldc "(function() {return arguments;})();"
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.testSameShapeAcrossContexts:(Ljava/lang/String;)V
         1: .line 85
            ldc "(function() {'use strict'; return arguments;})();"
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.testSameShapeAcrossContexts:(Ljava/lang/String;)V
         2: .line 86
            return
        end local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/test/runtime/MultiContextShapeTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void classShape();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
         0: .line 90
            ldc "class C {} C;"
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.testSameShapeAcrossContexts:(Ljava/lang/String;)V
         1: .line 91
            ldc "class C extends null {} C;"
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.testSameShapeAcrossContexts:(Ljava/lang/String;)V
         2: .line 92
            return
        end local 0 // com.oracle.truffle.js.test.runtime.MultiContextShapeTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/test/runtime/MultiContextShapeTest;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void testSameShapeAcrossContexts(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=12, args_size=1
        start local 0 // java.lang.String source
         0: .line 95
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: invokestatic com.oracle.truffle.js.test.JSTest.newEngineBuilder:()Lorg/graalvm/polyglot/Engine$Builder;
            invokevirtual org.graalvm.polyglot.Engine$Builder.build:()Lorg/graalvm/polyglot/Engine;
            astore 3 /* engine */
        start local 3 // org.graalvm.polyglot.Engine engine
         2: .line 96
            aconst_null
            astore 4 /* lastShape */
        start local 4 // com.oracle.truffle.api.object.Shape lastShape
         3: .line 97
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         4: goto 20
         5: .line 98
      StackMap locals: java.lang.String java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Engine com.oracle.truffle.api.object.Shape int
      StackMap stack:
            aconst_null
            astore 6
            aconst_null
            astore 7
         6: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 3 /* engine */
            invokevirtual org.graalvm.polyglot.Context$Builder.engine:(Lorg/graalvm/polyglot/Engine;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 8 /* c */
        start local 8 // org.graalvm.polyglot.Context c
         7: .line 99
            aload 8 /* c */
            ldc "js"
            aload 0 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 9 /* object */
        start local 9 // org.graalvm.polyglot.Value object
         8: .line 100
            aload 8 /* c */
            aload 9 /* object */
            invokestatic com.oracle.truffle.js.test.runtime.MultiContextShapeTest.unwrapJSObject:(Lorg/graalvm/polyglot/Context;Lorg/graalvm/polyglot/Value;)Lcom/oracle/truffle/api/object/DynamicObject;
            astore 10 /* jsobject */
        start local 10 // com.oracle.truffle.api.object.DynamicObject jsobject
         9: .line 101
            aload 10 /* jsobject */
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            astore 11 /* objShape */
        start local 11 // com.oracle.truffle.api.object.Shape objShape
        10: .line 102
            aload 4 /* lastShape */
            ifnull 12
        11: .line 103
            aload 4 /* lastShape */
            aload 11 /* objShape */
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/Object;Ljava/lang/Object;)V
        12: .line 105
      StackMap locals: java.lang.String java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Engine com.oracle.truffle.api.object.Shape int java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.Shape
      StackMap stack:
            aload 11 /* objShape */
            astore 4 /* lastShape */
        end local 11 // com.oracle.truffle.api.object.Shape objShape
        end local 10 // com.oracle.truffle.api.object.DynamicObject jsobject
        end local 9 // org.graalvm.polyglot.Value object
        13: .line 106
            aload 8 /* c */
            ifnull 19
            aload 8 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 19
      StackMap locals: java.lang.String java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Engine com.oracle.truffle.api.object.Shape int java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        14: astore 6
            aload 8 /* c */
            ifnull 15
            aload 8 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 8 // org.graalvm.polyglot.Context c
      StackMap locals:
      StackMap stack:
        15: aload 6
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: astore 7
            aload 6
            ifnonnull 17
            aload 7
            astore 6
            goto 18
      StackMap locals:
      StackMap stack:
        17: aload 6
            aload 7
            if_acmpeq 18
            aload 6
            aload 7
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        18: aload 6
            athrow
        19: .line 97
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 5 /* i */
            iconst_2
            if_icmplt 5
        end local 5 // int i
        end local 4 // com.oracle.truffle.api.object.Shape lastShape
        21: .line 108
            aload 3 /* engine */
            ifnull 27
            aload 3 /* engine */
            invokevirtual org.graalvm.polyglot.Engine.close:()V
            goto 27
      StackMap locals: java.lang.String java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Engine
      StackMap stack: java.lang.Throwable
        22: astore 1
            aload 3 /* engine */
            ifnull 23
            aload 3 /* engine */
            invokevirtual org.graalvm.polyglot.Engine.close:()V
        end local 3 // org.graalvm.polyglot.Engine engine
      StackMap locals:
      StackMap stack:
        23: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: astore 2
            aload 1
            ifnonnull 25
            aload 2
            astore 1
            goto 26
      StackMap locals:
      StackMap stack:
        25: aload 1
            aload 2
            if_acmpeq 26
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        26: aload 1
            athrow
        27: .line 109
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String source
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   28     0     source  Ljava/lang/String;
            2   23     3     engine  Lorg/graalvm/polyglot/Engine;
            3   21     4  lastShape  Lcom/oracle/truffle/api/object/Shape;
            4   21     5          i  I
            7   15     8          c  Lorg/graalvm/polyglot/Context;
            8   13     9     object  Lorg/graalvm/polyglot/Value;
            9   13    10   jsobject  Lcom/oracle/truffle/api/object/DynamicObject;
           10   13    11   objShape  Lcom/oracle/truffle/api/object/Shape;
      Exception table:
        from    to  target  type
           7    13      14  any
           6    16      16  any
           2    21      22  any
           1    24      24  any
    MethodParameters:
        Name  Flags
      source  

  private static com.oracle.truffle.api.object.DynamicObject unwrapJSObject(org.graalvm.polyglot.Context, org.graalvm.polyglot.Value);
    descriptor: (Lorg/graalvm/polyglot/Context;Lorg/graalvm/polyglot/Value;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.graalvm.polyglot.Context c
        start local 1 // org.graalvm.polyglot.Value value
         0: .line 113
            aload 0 /* c */
            ldc "js"
            invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            ldc "_testObject"
            aload 1 /* value */
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 114
            aload 0 /* c */
            invokestatic com.oracle.truffle.js.lang.JavaScriptLanguage.getJSRealm:(Lorg/graalvm/polyglot/Context;)Lcom/oracle/truffle/js/runtime/JSRealm;
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getGlobalObject:()Lcom/oracle/truffle/api/object/DynamicObject;
            ldc "_testObject"
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.get:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.DynamicObject
            areturn
        end local 1 // org.graalvm.polyglot.Value value
        end local 0 // org.graalvm.polyglot.Context c
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0      c  Lorg/graalvm/polyglot/Context;
            0    2     1  value  Lorg/graalvm/polyglot/Value;
    MethodParameters:
       Name  Flags
      c      
      value  
}
SourceFile: "MultiContextShapeTest.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