public final class com.oracle.truffle.js.runtime.objects.JSObjectUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.js.runtime.objects.JSObjectUtil
  super_class: java.lang.Object
{
  private static final com.oracle.truffle.api.object.HiddenKey PROTOTYPE_DATA;
    descriptor: Lcom/oracle/truffle/api/object/HiddenKey;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  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=3, locals=0, args_size=0
         0: .line 73
            ldc Lcom/oracle/truffle/js/runtime/objects/JSObjectUtil;
            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.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
         3: .line 74
            new com.oracle.truffle.api.object.HiddenKey
            dup
            ldc "PROTOTYPE_DATA"
            invokespecial com.oracle.truffle.api.object.HiddenKey.<init>:(Ljava/lang/String;)V
            putstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.PROTOTYPE_DATA:Lcom/oracle/truffle/api/object/HiddenKey;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.runtime.objects.JSObjectUtil this
         0: .line 76
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 78
            return
        end local 0 // com.oracle.truffle.js.runtime.objects.JSObjectUtil this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/runtime/objects/JSObjectUtil;

  public static java.lang.String formatToString(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String object
         0: .line 88
            new java.lang.StringBuilder
            dup
            ldc "[object "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* object */
            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;
            areturn
        end local 0 // java.lang.String object
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  object  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
        Name  Flags
      object  

  public static com.oracle.truffle.api.object.DynamicObject createOrdinaryPrototypeObject(com.oracle.truffle.js.runtime.JSRealm);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSRealm;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.runtime.JSRealm realm
         0: .line 92
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 93
            aload 0 /* realm */
            aload 0 /* realm */
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getObjectPrototype:()Lcom/oracle/truffle/api/object/DynamicObject;
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.createOrdinaryPrototypeObject:(Lcom/oracle/truffle/js/runtime/JSRealm;Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 0 // com.oracle.truffle.js.runtime.JSRealm realm
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  realm  Lcom/oracle/truffle/js/runtime/JSRealm;
    MethodParameters:
       Name  Flags
      realm  

  public static com.oracle.truffle.api.object.DynamicObject createOrdinaryPrototypeObject(com.oracle.truffle.js.runtime.JSRealm, com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSRealm;Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.oracle.truffle.js.runtime.JSRealm realm
        start local 1 // com.oracle.truffle.api.object.DynamicObject prototype
         0: .line 97
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 99
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 2
            aload 1 /* prototype */
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpeq 2
            aload 1 /* prototype */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isObject:(Ljava/lang/Object;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 101
      StackMap locals:
      StackMap stack:
            aload 0 /* realm */
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            astore 2 /* context */
        start local 2 // com.oracle.truffle.js.runtime.JSContext context
         3: .line 103
            aload 2 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.isMultiContext:()Z
            ifeq 6
         4: .line 104
            aload 1 /* prototype */
            aload 2 /* context */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSOrdinary.createInitWithInstancePrototype:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/DynamicObject;
            astore 3 /* obj */
        start local 3 // com.oracle.truffle.api.object.DynamicObject obj
         5: .line 105
            goto 10
        end local 3 // com.oracle.truffle.api.object.DynamicObject obj
         6: .line 106
      StackMap locals: com.oracle.truffle.js.runtime.JSContext
      StackMap stack:
            aload 1 /* prototype */
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 7
            aload 2 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getEmptyShapeNullPrototype:()Lcom/oracle/truffle/api/object/Shape;
            goto 8
      StackMap locals:
      StackMap stack:
         7: aload 1 /* prototype */
            getstatic com.oracle.truffle.js.runtime.builtins.JSOrdinary.INSTANCE:Lcom/oracle/truffle/js/runtime/builtins/JSOrdinary;
            aload 2 /* context */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.getProtoChildShape:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/Shape;
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.object.Shape
         8: astore 4 /* initialShape */
        start local 4 // com.oracle.truffle.api.object.Shape initialShape
         9: .line 107
            aload 4 /* initialShape */
            invokestatic com.oracle.truffle.js.runtime.objects.JSOrdinaryObject.create:(Lcom/oracle/truffle/api/object/Shape;)Lcom/oracle/truffle/js/runtime/objects/JSOrdinaryObject;
            astore 3 /* obj */
        end local 4 // com.oracle.truffle.api.object.Shape initialShape
        start local 3 // com.oracle.truffle.api.object.DynamicObject obj
        10: .line 109
      StackMap locals: com.oracle.truffle.api.object.DynamicObject
      StackMap stack:
            aload 3 /* obj */
            areturn
        end local 3 // com.oracle.truffle.api.object.DynamicObject obj
        end local 2 // com.oracle.truffle.js.runtime.JSContext context
        end local 1 // com.oracle.truffle.api.object.DynamicObject prototype
        end local 0 // com.oracle.truffle.js.runtime.JSRealm realm
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0         realm  Lcom/oracle/truffle/js/runtime/JSRealm;
            0   11     1     prototype  Lcom/oracle/truffle/api/object/DynamicObject;
            3   11     2       context  Lcom/oracle/truffle/js/runtime/JSContext;
            5    6     3           obj  Lcom/oracle/truffle/api/object/DynamicObject;
           10   11     3           obj  Lcom/oracle/truffle/api/object/DynamicObject;
            9   10     4  initialShape  Lcom/oracle/truffle/api/object/Shape;
    MethodParameters:
           Name  Flags
      realm      
      prototype  

  public static void setOrVerifyPrototype(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.api.object.DynamicObject obj
        start local 2 // com.oracle.truffle.api.object.DynamicObject prototype
         0: .line 113
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 114
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 2
            aload 2 /* prototype */
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpeq 2
            aload 2 /* prototype */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isObject:(Ljava/lang/Object;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.isMultiContext:()Z
            ifeq 5
         3: .line 116
            aload 1 /* obj */
            getstatic com.oracle.truffle.js.runtime.objects.JSObject.HIDDEN_PROTO:Lcom/oracle/truffle/api/object/HiddenKey;
            aload 2 /* prototype */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putHiddenProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 117
            goto 6
         5: .line 118
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 6
            aload 1 /* obj */
            getstatic com.oracle.truffle.js.runtime.objects.JSObject.HIDDEN_PROTO:Lcom/oracle/truffle/api/object/HiddenKey;
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.getHiddenProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
            aload 2 /* prototype */
            if_acmpeq 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 120
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.oracle.truffle.api.object.DynamicObject prototype
        end local 1 // com.oracle.truffle.api.object.DynamicObject obj
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0    context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    7     1        obj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    7     2  prototype  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
           Name  Flags
      context    
      obj        
      prototype  

  public static boolean isValidPrototype(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object proto
         0: .line 123
            aload 0 /* proto */
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpeq 1
            aload 0 /* proto */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isObject:(Ljava/lang/Object;)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // java.lang.Object proto
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  proto  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      proto  

  private static com.oracle.truffle.api.object.LocationFactory declaredLocationFactory();
    descriptor: ()Lcom/oracle/truffle/api/object/LocationFactory;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 127
            invokedynamic createLocation()Lcom/oracle/truffle/api/object/LocationFactory;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Lcom/oracle/truffle/api/object/Shape;Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Location;
                  com/oracle/truffle/js/runtime/objects/JSObjectUtil.lambda$0(Lcom/oracle/truffle/api/object/Shape;Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Location; (6)
                  (Lcom/oracle/truffle/api/object/Shape;Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Location;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static com.oracle.truffle.api.object.Shape shapeDefineDataProperty(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.Shape, java.lang.Object, java.lang.Object, int);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/Shape;Ljava/lang/Object;Ljava/lang/Object;I)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.api.object.Shape shape
        start local 2 // java.lang.Object key
        start local 3 // java.lang.Object value
        start local 4 // int flags
         0: .line 131
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 132
            aload 1 /* shape */
            aload 0 /* context */
            aload 2 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForNoSuchPropertyOrMethod:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Object;)Ljava/lang/Object;
            aload 3 /* value */
            iload 4 /* flags */
            invokevirtual com.oracle.truffle.api.object.Shape.defineProperty:(Ljava/lang/Object;Ljava/lang/Object;I)Lcom/oracle/truffle/api/object/Shape;
            areturn
        end local 4 // int flags
        end local 3 // java.lang.Object value
        end local 2 // java.lang.Object key
        end local 1 // com.oracle.truffle.api.object.Shape shape
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    2     1    shape  Lcom/oracle/truffle/api/object/Shape;
            0    2     2      key  Ljava/lang/Object;
            0    2     3    value  Ljava/lang/Object;
            0    2     4    flags  I
    MethodParameters:
         Name  Flags
      context  
      shape    
      key      
      value    
      flags    

  public static com.oracle.truffle.api.object.Shape shapeDefineDeclaredDataProperty(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.Shape, java.lang.Object, java.lang.Object, int);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/Shape;Ljava/lang/Object;Ljava/lang/Object;I)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.api.object.Shape shape
        start local 2 // java.lang.Object key
        start local 3 // java.lang.Object value
        start local 4 // int flags
         0: .line 137
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 138
            aload 0 /* context */
            aload 2 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForNoSuchPropertyOrMethod:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 139
            aload 1 /* shape */
            aload 2 /* key */
            aload 3 /* value */
            iload 4 /* flags */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.declaredLocationFactory:()Lcom/oracle/truffle/api/object/LocationFactory;
            invokevirtual com.oracle.truffle.api.object.Shape.defineProperty:(Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;)Lcom/oracle/truffle/api/object/Shape;
            areturn
        end local 4 // int flags
        end local 3 // java.lang.Object value
        end local 2 // java.lang.Object key
        end local 1 // com.oracle.truffle.api.object.Shape shape
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    3     1    shape  Lcom/oracle/truffle/api/object/Shape;
            0    3     2      key  Ljava/lang/Object;
            0    3     3    value  Ljava/lang/Object;
            0    3     4    flags  I
    MethodParameters:
         Name  Flags
      context  
      shape    
      key      
      value    
      flags    

  public static void putDataProperty(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.DynamicObject, java.lang.Object, java.lang.Object, int);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 2 // java.lang.Object key
        start local 3 // java.lang.Object value
        start local 4 // int flags
         0: .line 144
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 1
            aload 1 /* thisObj */
            aload 2 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForExistingProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 145
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            aload 1 /* thisObj */
            aload 2 /* key */
            aload 3 /* value */
            iload 4 /* flags */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.defineDataProperty:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         2: .line 146
            return
        end local 4 // int flags
        end local 3 // java.lang.Object value
        end local 2 // java.lang.Object key
        end local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    3     1  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     2      key  Ljava/lang/Object;
            0    3     3    value  Ljava/lang/Object;
            0    3     4    flags  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      context  
      thisObj  
      key      
      value    
      flags    

  public static void putDataProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object, java.lang.Object, int);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 1 // java.lang.Object name
        start local 2 // java.lang.Object value
        start local 3 // int flags
         0: .line 150
            aload 0 /* thisObj */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getJSContext:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/JSContext;
            astore 4 /* context */
        start local 4 // com.oracle.truffle.js.runtime.JSContext context
         1: .line 151
            aload 4 /* context */
            aload 0 /* thisObj */
            aload 1 /* name */
            aload 2 /* value */
            iload 3 /* flags */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putDataProperty:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         2: .line 152
            return
        end local 4 // com.oracle.truffle.js.runtime.JSContext context
        end local 3 // int flags
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object name
        end local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     1     name  Ljava/lang/Object;
            0    3     2    value  Ljava/lang/Object;
            0    3     3    flags  I
            1    3     4  context  Lcom/oracle/truffle/js/runtime/JSContext;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      thisObj  
      name     
      value    
      flags    

  public static void defineDataProperty(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.DynamicObject, java.lang.Object, java.lang.Object, int);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 2 // java.lang.Object key
        start local 3 // java.lang.Object value
        start local 4 // int flags
         0: .line 156
            aload 0 /* context */
            aload 2 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForNoSuchPropertyOrMethod:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 157
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 1 /* thisObj */
            aload 2 /* key */
            aload 3 /* value */
            iload 4 /* flags */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putWithFlags:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         2: .line 158
            return
        end local 4 // int flags
        end local 3 // java.lang.Object value
        end local 2 // java.lang.Object key
        end local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    3     1  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     2      key  Ljava/lang/Object;
            0    3     3    value  Ljava/lang/Object;
            0    3     4    flags  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      context  
      thisObj  
      key      
      value    
      flags    

  public static void defineDataProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object, java.lang.Object, int);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 1 // java.lang.Object key
        start local 2 // java.lang.Object value
        start local 3 // int flags
         0: .line 162
            aload 0 /* thisObj */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getJSContext:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/JSContext;
            astore 4 /* context */
        start local 4 // com.oracle.truffle.js.runtime.JSContext context
         1: .line 163
            aload 4 /* context */
            aload 0 /* thisObj */
            aload 1 /* key */
            aload 2 /* value */
            iload 3 /* flags */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.defineDataProperty:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         2: .line 164
            return
        end local 4 // com.oracle.truffle.js.runtime.JSContext context
        end local 3 // int flags
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     1      key  Ljava/lang/Object;
            0    3     2    value  Ljava/lang/Object;
            0    3     3    flags  I
            1    3     4  context  Lcom/oracle/truffle/js/runtime/JSContext;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      thisObj  
      key      
      value    
      flags    

  public static void putOrSetDataProperty(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.DynamicObject, java.lang.Object, java.lang.Object, int);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 2 // java.lang.Object key
        start local 3 // java.lang.Object value
        start local 4 // int flags
         0: .line 167
            aload 1 /* thisObj */
            aload 2 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.hasOwnProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Z
            ifne 3
         1: .line 168
            aload 0 /* context */
            aload 1 /* thisObj */
            aload 2 /* key */
            aload 3 /* value */
            iload 4 /* flags */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putDataProperty:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         2: .line 169
            goto 4
         3: .line 170
      StackMap locals:
      StackMap stack:
            aload 1 /* thisObj */
            aload 2 /* key */
            aload 3 /* value */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.set:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)Z
            pop
         4: .line 172
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int flags
        end local 3 // java.lang.Object value
        end local 2 // java.lang.Object key
        end local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    5     1  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    5     2      key  Ljava/lang/Object;
            0    5     3    value  Ljava/lang/Object;
            0    5     4    flags  I
    MethodParameters:
         Name  Flags
      context  
      thisObj  
      key      
      value    
      flags    

  public static void defineAccessorProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object, com.oracle.truffle.js.runtime.objects.Accessor, int);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/js/runtime/objects/Accessor;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 1 // java.lang.Object key
        start local 2 // com.oracle.truffle.js.runtime.objects.Accessor accessor
        start local 3 // int flags
         0: .line 176
            iload 3 /* flags */
            bipush 8
            ior
            istore 4 /* finalFlags */
        start local 4 // int finalFlags
         1: .line 178
            aload 0 /* thisObj */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getJSContext:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/JSContext;
            astore 5 /* context */
        start local 5 // com.oracle.truffle.js.runtime.JSContext context
         2: .line 179
            aload 5 /* context */
            aload 1 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForNoSuchPropertyOrMethod:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 180
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 0 /* thisObj */
            aload 1 /* key */
            aload 2 /* accessor */
            iload 4 /* finalFlags */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putWithFlags:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         4: .line 181
            return
        end local 5 // com.oracle.truffle.js.runtime.JSContext context
        end local 4 // int finalFlags
        end local 3 // int flags
        end local 2 // com.oracle.truffle.js.runtime.objects.Accessor accessor
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0     thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    5     1         key  Ljava/lang/Object;
            0    5     2    accessor  Lcom/oracle/truffle/js/runtime/objects/Accessor;
            0    5     3       flags  I
            1    5     4  finalFlags  I
            2    5     5     context  Lcom/oracle/truffle/js/runtime/JSContext;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
          Name  Flags
      thisObj   
      key       
      accessor  
      flags     

  public static void defineProxyProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object, com.oracle.truffle.js.runtime.objects.PropertyProxy, int);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/js/runtime/objects/PropertyProxy;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 1 // java.lang.Object key
        start local 2 // com.oracle.truffle.js.runtime.objects.PropertyProxy proxy
        start local 3 // int flags
         0: .line 185
            iload 3 /* flags */
            bipush 16
            ior
            istore 4 /* finalFlags */
        start local 4 // int finalFlags
         1: .line 187
            aload 0 /* thisObj */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getJSContext:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/JSContext;
            astore 5 /* context */
        start local 5 // com.oracle.truffle.js.runtime.JSContext context
         2: .line 188
            aload 5 /* context */
            aload 1 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForNoSuchPropertyOrMethod:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 189
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 0 /* thisObj */
            aload 1 /* key */
            aload 2 /* proxy */
            iload 4 /* finalFlags */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putConstant:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         4: .line 190
            return
        end local 5 // com.oracle.truffle.js.runtime.JSContext context
        end local 4 // int finalFlags
        end local 3 // int flags
        end local 2 // com.oracle.truffle.js.runtime.objects.PropertyProxy proxy
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0     thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    5     1         key  Ljava/lang/Object;
            0    5     2       proxy  Lcom/oracle/truffle/js/runtime/objects/PropertyProxy;
            0    5     3       flags  I
            1    5     4  finalFlags  I
            2    5     5     context  Lcom/oracle/truffle/js/runtime/JSContext;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      thisObj  
      key      
      proxy    
      flags    

  public static void changePropertyFlags(com.oracle.truffle.api.object.DynamicObject, java.lang.Object, int);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 1 // java.lang.Object key
        start local 2 // int flags
         0: .line 195
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 1
            iload 2 /* flags */
            iload 2 /* flags */
            bipush 7
            iand
            if_icmpeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 197
      StackMap locals:
      StackMap stack:
            aload 0 /* thisObj */
            aload 1 /* key */
            iload 2 /* flags */
            invokedynamic applyAsInt(I)Ljava/util/function/IntUnaryOperator;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (I)I
                  com/oracle/truffle/js/runtime/objects/JSObjectUtil.lambda$1(II)I (6)
                  (I)I
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.updatePropertyFlags:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/util/function/IntUnaryOperator;)Z
            pop
         2: .line 198
            return
        end local 2 // int flags
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     1      key  Ljava/lang/Object;
            0    3     2    flags  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      thisObj  
      key      
      flags    

  public static void putDataProperty(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.DynamicObject, java.lang.String, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/String;Ljava/lang/Object;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 2 // java.lang.String name
        start local 3 // java.lang.Object value
         0: .line 201
            aload 0 /* context */
            aload 1 /* thisObj */
            aload 2 /* name */
            aload 3 /* value */
            invokestatic com.oracle.truffle.js.runtime.objects.JSAttributes.notConfigurableNotEnumerableNotWritable:()I
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putDataProperty:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         1: .line 202
            return
        end local 3 // java.lang.Object value
        end local 2 // java.lang.String name
        end local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    2     1  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     2     name  Ljava/lang/String;
            0    2     3    value  Ljava/lang/Object;
    MethodParameters:
         Name  Flags
      context  
      thisObj  
      name     
      value    

  public static void putDeclaredDataProperty(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.DynamicObject, java.lang.Object, java.lang.Object, int);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 2 // java.lang.Object key
        start local 3 // java.lang.Object value
        start local 4 // int flags
         0: .line 206
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 1
            aload 2 /* key */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isPropertyKey:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 207
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 2
            aload 1 /* thisObj */
            aload 2 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForExistingProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 209
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            aload 2 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForNoSuchPropertyOrMethod:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 210
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 1 /* thisObj */
            aload 2 /* key */
            aload 3 /* value */
            iload 4 /* flags */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putConstant:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         4: .line 211
            return
        end local 4 // int flags
        end local 3 // java.lang.Object value
        end local 2 // java.lang.Object key
        end local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    5     1  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    5     2      key  Ljava/lang/Object;
            0    5     3    value  Ljava/lang/Object;
            0    5     4    flags  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      context  
      thisObj  
      key      
      value    
      flags    

  public static void putConstructorProperty(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.api.object.DynamicObject prototype
        start local 2 // com.oracle.truffle.api.object.DynamicObject constructor
         0: .line 214
            aload 0 /* context */
            aload 1 /* prototype */
            ldc "constructor"
            aload 2 /* constructor */
            invokestatic com.oracle.truffle.js.runtime.objects.JSAttributes.configurableNotEnumerableWritable:()I
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putDataProperty:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         1: .line 215
            return
        end local 2 // com.oracle.truffle.api.object.DynamicObject constructor
        end local 1 // com.oracle.truffle.api.object.DynamicObject prototype
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0      context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    2     1    prototype  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     2  constructor  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
             Name  Flags
      context      
      prototype    
      constructor  

  public static void putConstructorPrototypeProperty(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.runtime.JSContext ctx
        start local 1 // com.oracle.truffle.api.object.DynamicObject constructor
        start local 2 // com.oracle.truffle.api.object.DynamicObject prototype
         0: .line 218
            aload 0 /* ctx */
            aload 1 /* constructor */
            ldc "prototype"
            aload 2 /* prototype */
            invokestatic com.oracle.truffle.js.runtime.objects.JSAttributes.notConfigurableNotEnumerableNotWritable:()I
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putDataProperty:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         1: .line 219
            return
        end local 2 // com.oracle.truffle.api.object.DynamicObject prototype
        end local 1 // com.oracle.truffle.api.object.DynamicObject constructor
        end local 0 // com.oracle.truffle.js.runtime.JSContext ctx
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0          ctx  Lcom/oracle/truffle/js/runtime/JSContext;
            0    2     1  constructor  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     2    prototype  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
             Name  Flags
      ctx          
      constructor  
      prototype    

  public static void putToStringTag(com.oracle.truffle.api.object.DynamicObject, java.lang.String);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.object.DynamicObject prototype
        start local 1 // java.lang.String toStringTag
         0: .line 222
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 1
            aload 0 /* prototype */
            getstatic com.oracle.truffle.js.runtime.Symbol.SYMBOL_TO_STRING_TAG:Lcom/oracle/truffle/js/runtime/Symbol;
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForExistingProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 223
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 0 /* prototype */
            getstatic com.oracle.truffle.js.runtime.Symbol.SYMBOL_TO_STRING_TAG:Lcom/oracle/truffle/js/runtime/Symbol;
            aload 1 /* toStringTag */
            invokestatic com.oracle.truffle.js.runtime.objects.JSAttributes.configurableNotEnumerableNotWritable:()I
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putWithFlags:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         2: .line 224
            return
        end local 1 // java.lang.String toStringTag
        end local 0 // com.oracle.truffle.api.object.DynamicObject prototype
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0    prototype  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     1  toStringTag  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      prototype    
      toStringTag  

  public static void putAccessorProperty(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.DynamicObject, java.lang.Object, com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.object.DynamicObject, int);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=6
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 2 // java.lang.Object key
        start local 3 // com.oracle.truffle.api.object.DynamicObject getter
        start local 4 // com.oracle.truffle.api.object.DynamicObject setter
        start local 5 // int flags
         0: .line 228
            new com.oracle.truffle.js.runtime.objects.Accessor
            dup
            aload 3 /* getter */
            aload 4 /* setter */
            invokespecial com.oracle.truffle.js.runtime.objects.Accessor.<init>:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;)V
            astore 6 /* accessor */
        start local 6 // com.oracle.truffle.js.runtime.objects.Accessor accessor
         1: .line 229
            aload 0 /* context */
            aload 1 /* thisObj */
            aload 2 /* key */
            aload 6 /* accessor */
            iload 5 /* flags */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putAccessorProperty:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/js/runtime/objects/Accessor;I)V
         2: .line 230
            return
        end local 6 // com.oracle.truffle.js.runtime.objects.Accessor accessor
        end local 5 // int flags
        end local 4 // com.oracle.truffle.api.object.DynamicObject setter
        end local 3 // com.oracle.truffle.api.object.DynamicObject getter
        end local 2 // java.lang.Object key
        end local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0   context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    3     1   thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     2       key  Ljava/lang/Object;
            0    3     3    getter  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     4    setter  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     5     flags  I
            1    3     6  accessor  Lcom/oracle/truffle/js/runtime/objects/Accessor;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      context  
      thisObj  
      key      
      getter   
      setter   
      flags    

  public static void putAccessorProperty(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.object.DynamicObject, java.lang.Object, com.oracle.truffle.js.runtime.objects.Accessor, int);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/js/runtime/objects/Accessor;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 2 // java.lang.Object key
        start local 3 // com.oracle.truffle.js.runtime.objects.Accessor accessor
        start local 4 // int flags
         0: .line 234
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 1
            aload 2 /* key */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isPropertyKey:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 235
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 2
            aload 1 /* thisObj */
            aload 2 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForExistingProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 237
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            aload 2 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForNoSuchPropertyOrMethod:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 238
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 1 /* thisObj */
            aload 2 /* key */
            aload 3 /* accessor */
            iload 4 /* flags */
            bipush 8
            ior
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putWithFlags:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         4: .line 239
            return
        end local 4 // int flags
        end local 3 // com.oracle.truffle.js.runtime.objects.Accessor accessor
        end local 2 // java.lang.Object key
        end local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0   context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    5     1   thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    5     2       key  Ljava/lang/Object;
            0    5     3  accessor  Lcom/oracle/truffle/js/runtime/objects/Accessor;
            0    5     4     flags  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
          Name  Flags
      context   
      thisObj   
      key       
      accessor  
      flags     

  public static void putBuiltinAccessorProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object, com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 1 // java.lang.Object key
        start local 2 // com.oracle.truffle.api.object.DynamicObject getter
        start local 3 // com.oracle.truffle.api.object.DynamicObject setter
         0: .line 242
            aload 0 /* thisObj */
            aload 1 /* key */
            aload 2 /* getter */
            aload 3 /* setter */
            invokestatic com.oracle.truffle.js.runtime.objects.JSAttributes.configurableNotEnumerable:()I
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putBuiltinAccessorProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;I)V
         1: .line 243
            return
        end local 3 // com.oracle.truffle.api.object.DynamicObject setter
        end local 2 // com.oracle.truffle.api.object.DynamicObject getter
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     1      key  Ljava/lang/Object;
            0    2     2   getter  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     3   setter  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
         Name  Flags
      thisObj  
      key      
      getter   
      setter   

  public static void putBuiltinAccessorProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object, com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.object.DynamicObject, int);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 1 // java.lang.Object key
        start local 2 // com.oracle.truffle.api.object.DynamicObject getter
        start local 3 // com.oracle.truffle.api.object.DynamicObject setter
        start local 4 // int flags
         0: .line 247
            new com.oracle.truffle.js.runtime.objects.Accessor
            dup
            aload 2 /* getter */
            aload 3 /* setter */
            invokespecial com.oracle.truffle.js.runtime.objects.Accessor.<init>:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;)V
            astore 5 /* accessor */
        start local 5 // com.oracle.truffle.js.runtime.objects.Accessor accessor
         1: .line 248
            aload 0 /* thisObj */
            aload 1 /* key */
            aload 5 /* accessor */
            iload 4 /* flags */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putBuiltinAccessorProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/js/runtime/objects/Accessor;I)V
         2: .line 249
            return
        end local 5 // com.oracle.truffle.js.runtime.objects.Accessor accessor
        end local 4 // int flags
        end local 3 // com.oracle.truffle.api.object.DynamicObject setter
        end local 2 // com.oracle.truffle.api.object.DynamicObject getter
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0   thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     1       key  Ljava/lang/Object;
            0    3     2    getter  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     3    setter  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     4     flags  I
            1    3     5  accessor  Lcom/oracle/truffle/js/runtime/objects/Accessor;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      thisObj  
      key      
      getter   
      setter   
      flags    

  public static void putBuiltinAccessorProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object, com.oracle.truffle.js.runtime.objects.Accessor, int);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/js/runtime/objects/Accessor;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 1 // java.lang.Object key
        start local 2 // com.oracle.truffle.js.runtime.objects.Accessor accessor
        start local 3 // int flags
         0: .line 253
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 2
            aload 1 /* key */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isPropertyKey:(Ljava/lang/Object;)Z
            ifeq 1
            aload 1 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.isNoSuchPropertyOrMethod:(Ljava/lang/Object;)Z
            ifeq 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 254
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 3
            aload 0 /* thisObj */
            aload 1 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForExistingProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Z
            ifne 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 255
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 0 /* thisObj */
            aload 1 /* key */
            aload 2 /* accessor */
            iload 3 /* flags */
            bipush 8
            ior
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putWithFlags:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         4: .line 256
            return
        end local 3 // int flags
        end local 2 // com.oracle.truffle.js.runtime.objects.Accessor accessor
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0   thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    5     1       key  Ljava/lang/Object;
            0    5     2  accessor  Lcom/oracle/truffle/js/runtime/objects/Accessor;
            0    5     3     flags  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
          Name  Flags
      thisObj   
      key       
      accessor  
      flags     

  public static void putProxyProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object, com.oracle.truffle.js.runtime.objects.PropertyProxy, int);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/js/runtime/objects/PropertyProxy;I)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 1 // java.lang.Object key
        start local 2 // com.oracle.truffle.js.runtime.objects.PropertyProxy proxy
        start local 3 // int flags
         0: .line 259
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 2
            aload 1 /* key */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isPropertyKey:(Ljava/lang/Object;)Z
            ifeq 1
            aload 1 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.isNoSuchPropertyOrMethod:(Ljava/lang/Object;)Z
            ifeq 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 260
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 3
            aload 0 /* thisObj */
            aload 1 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.checkForExistingProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Z
            ifne 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 261
      StackMap locals:
      StackMap stack:
            aload 0 /* thisObj */
            aload 1 /* key */
            aload 2 /* proxy */
            iload 3 /* flags */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.defineProxyProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/js/runtime/objects/PropertyProxy;I)V
         4: .line 262
            return
        end local 3 // int flags
        end local 2 // com.oracle.truffle.js.runtime.objects.PropertyProxy proxy
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    5     1      key  Ljava/lang/Object;
            0    5     2    proxy  Lcom/oracle/truffle/js/runtime/objects/PropertyProxy;
            0    5     3    flags  I
    MethodParameters:
         Name  Flags
      thisObj  
      key      
      proxy    
      flags    

  private static boolean checkForExistingProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 1 // java.lang.Object key
         0: .line 265
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 1
            aload 0 /* thisObj */
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            aload 1 /* key */
            invokevirtual com.oracle.truffle.api.object.Shape.hasProperty:(Ljava/lang/Object;)Z
            ifeq 1
            new java.lang.AssertionError
            dup
            ldc "Don't put a property that already exists. Use the setters."
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 266
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     1      key  Ljava/lang/Object;
    MethodParameters:
         Name  Flags
      thisObj  
      key      

  public static com.oracle.truffle.api.object.Shape getProtoChildShape(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.js.runtime.builtins.JSClass, com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.object.DynamicObject obj
        start local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
        start local 2 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 274
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 275
            aload 0 /* obj */
            ifnonnull 3
         2: .line 276
            aload 2 /* context */
            aload 1 /* jsclass */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.makeEmptyShapeWithPrototypeInObject:(Lcom/oracle/truffle/js/runtime/builtins/JSClass;)Lcom/oracle/truffle/api/object/Shape;
            areturn
         3: .line 278
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 4
            aload 0 /* obj */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isObject:(Ljava/lang/Object;)Z
            ifne 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 279
      StackMap locals:
      StackMap stack:
            aload 0 /* obj */
            aload 1 /* jsclass */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.getProtoChildShapeMaybe:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;)Lcom/oracle/truffle/api/object/Shape;
            astore 3 /* protoChild */
        start local 3 // com.oracle.truffle.api.object.Shape protoChild
         5: .line 280
            aload 3 /* protoChild */
            ifnull 7
         6: .line 281
            aload 3 /* protoChild */
            areturn
         7: .line 284
      StackMap locals: com.oracle.truffle.api.object.Shape
      StackMap stack:
            aload 0 /* obj */
            aload 1 /* jsclass */
            aload 2 /* context */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.getProtoChildShapeSlowPath:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/Shape;
            areturn
        end local 3 // com.oracle.truffle.api.object.Shape protoChild
        end local 2 // com.oracle.truffle.js.runtime.JSContext context
        end local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
        end local 0 // com.oracle.truffle.api.object.DynamicObject obj
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0         obj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    8     1     jsclass  Lcom/oracle/truffle/js/runtime/builtins/JSClass;
            0    8     2     context  Lcom/oracle/truffle/js/runtime/JSContext;
            5    8     3  protoChild  Lcom/oracle/truffle/api/object/Shape;
    MethodParameters:
         Name  Flags
      obj      
      jsclass  
      context  

  public static com.oracle.truffle.api.object.Shape getProtoChildShape(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.js.runtime.builtins.JSClass, com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.api.profiles.BranchProfile);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/profiles/BranchProfile;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.object.DynamicObject obj
        start local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
        start local 2 // com.oracle.truffle.js.runtime.JSContext context
        start local 3 // com.oracle.truffle.api.profiles.BranchProfile branchProfile
         0: .line 288
            aload 0 /* obj */
            aload 1 /* jsclass */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.getProtoChildShapeMaybe:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;)Lcom/oracle/truffle/api/object/Shape;
            astore 4 /* protoChild */
        start local 4 // com.oracle.truffle.api.object.Shape protoChild
         1: .line 289
            aload 4 /* protoChild */
            ifnull 3
         2: .line 290
            aload 4 /* protoChild */
            areturn
         3: .line 293
      StackMap locals: com.oracle.truffle.api.object.Shape
      StackMap stack:
            aload 3 /* branchProfile */
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
         4: .line 294
            aload 0 /* obj */
            aload 1 /* jsclass */
            aload 2 /* context */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.getProtoChildShapeSlowPath:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/Shape;
            areturn
        end local 4 // com.oracle.truffle.api.object.Shape protoChild
        end local 3 // com.oracle.truffle.api.profiles.BranchProfile branchProfile
        end local 2 // com.oracle.truffle.js.runtime.JSContext context
        end local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
        end local 0 // com.oracle.truffle.api.object.DynamicObject obj
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0            obj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    5     1        jsclass  Lcom/oracle/truffle/js/runtime/builtins/JSClass;
            0    5     2        context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    5     3  branchProfile  Lcom/oracle/truffle/api/profiles/BranchProfile;
            1    5     4     protoChild  Lcom/oracle/truffle/api/object/Shape;
    MethodParameters:
               Name  Flags
      obj            
      jsclass        
      context        
      branchProfile  

  private static com.oracle.truffle.api.object.Shape getProtoChildShapeMaybe(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.js.runtime.builtins.JSClass);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.object.DynamicObject obj
        start local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
         0: .line 298
            aload 0 /* obj */
            aload 1 /* jsclass */
            invokestatic com.oracle.truffle.js.runtime.objects.JSShape.getProtoChildTree:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;)Lcom/oracle/truffle/api/object/Shape;
            astore 2 /* protoChild */
        start local 2 // com.oracle.truffle.api.object.Shape protoChild
         1: .line 299
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 2
            aload 2 /* protoChild */
            ifnull 2
            aload 2 /* protoChild */
            invokestatic com.oracle.truffle.js.runtime.objects.JSShape.getJSClassNoCast:(Lcom/oracle/truffle/api/object/Shape;)Ljava/lang/Object;
            aload 1 /* jsclass */
            if_acmpeq 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 300
      StackMap locals: com.oracle.truffle.api.object.Shape
      StackMap stack:
            aload 2 /* protoChild */
            areturn
        end local 2 // com.oracle.truffle.api.object.Shape protoChild
        end local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
        end local 0 // com.oracle.truffle.api.object.DynamicObject obj
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0         obj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     1     jsclass  Lcom/oracle/truffle/js/runtime/builtins/JSClass;
            1    3     2  protoChild  Lcom/oracle/truffle/api/object/Shape;
    MethodParameters:
         Name  Flags
      obj      
      jsclass  

  private static com.oracle.truffle.api.object.Shape getProtoChildShapeSlowPath(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.js.runtime.builtins.JSClass, com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.object.DynamicObject obj
        start local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
        start local 2 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 305
            aload 0 /* obj */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.getPrototypeData:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/objects/JSPrototypeData;
            astore 3 /* prototypeData */
        start local 3 // com.oracle.truffle.js.runtime.objects.JSPrototypeData prototypeData
         1: .line 306
            aload 3 /* prototypeData */
            ifnonnull 3
         2: .line 307
            aload 0 /* obj */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putPrototypeData:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/objects/JSPrototypeData;
            astore 3 /* prototypeData */
         3: .line 309
      StackMap locals: com.oracle.truffle.js.runtime.objects.JSPrototypeData
      StackMap stack:
            aload 3 /* prototypeData */
            aload 1 /* jsclass */
            aload 0 /* obj */
            aload 1 /* jsclass */
            aload 2 /* context */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.createChildRootShape:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/Shape;
            invokevirtual com.oracle.truffle.js.runtime.objects.JSPrototypeData.getOrAddProtoChildTree:(Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/api/object/Shape;)Lcom/oracle/truffle/api/object/Shape;
            areturn
        end local 3 // com.oracle.truffle.js.runtime.objects.JSPrototypeData prototypeData
        end local 2 // com.oracle.truffle.js.runtime.JSContext context
        end local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
        end local 0 // com.oracle.truffle.api.object.DynamicObject obj
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0            obj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    4     1        jsclass  Lcom/oracle/truffle/js/runtime/builtins/JSClass;
            0    4     2        context  Lcom/oracle/truffle/js/runtime/JSContext;
            1    4     3  prototypeData  Lcom/oracle/truffle/js/runtime/objects/JSPrototypeData;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
         Name  Flags
      obj      
      jsclass  
      context  

  private static com.oracle.truffle.api.object.Shape createChildRootShape(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.js.runtime.builtins.JSClass, com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/Shape;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.object.DynamicObject proto
        start local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
        start local 2 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 313
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 314
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 3
            aload 0 /* proto */
            ifnull 2
            aload 0 /* proto */
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 3
      StackMap locals:
      StackMap stack:
         2: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 315
      StackMap locals:
      StackMap stack:
            aload 2 /* context */
            aload 1 /* jsclass */
            aload 0 /* proto */
            invokestatic com.oracle.truffle.js.runtime.objects.JSShape.createObjectShape:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/Shape;
            areturn
        end local 2 // com.oracle.truffle.js.runtime.JSContext context
        end local 1 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
        end local 0 // com.oracle.truffle.api.object.DynamicObject proto
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0    proto  Lcom/oracle/truffle/api/object/DynamicObject;
            0    4     1  jsclass  Lcom/oracle/truffle/js/runtime/builtins/JSClass;
            0    4     2  context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
         Name  Flags
      proto    
      jsclass  
      context  

  public static com.oracle.truffle.js.runtime.objects.JSPrototypeData putPrototypeData(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/objects/JSPrototypeData;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.object.DynamicObject obj
         0: .line 319
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 320
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 2
            aload 0 /* obj */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.getPrototypeData:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/objects/JSPrototypeData;
            ifnull 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 321
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.js.runtime.objects.JSPrototypeData
            dup
            invokespecial com.oracle.truffle.js.runtime.objects.JSPrototypeData.<init>:()V
            astore 1 /* prototypeData */
        start local 1 // com.oracle.truffle.js.runtime.objects.JSPrototypeData prototypeData
         3: .line 322
            aload 0 /* obj */
            aload 1 /* prototypeData */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putPrototypeData:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/objects/JSPrototypeData;)V
         4: .line 323
            aload 1 /* prototypeData */
            areturn
        end local 1 // com.oracle.truffle.js.runtime.objects.JSPrototypeData prototypeData
        end local 0 // com.oracle.truffle.api.object.DynamicObject obj
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0            obj  Lcom/oracle/truffle/api/object/DynamicObject;
            3    5     1  prototypeData  Lcom/oracle/truffle/js/runtime/objects/JSPrototypeData;
    MethodParameters:
      Name  Flags
      obj   

  private static void putPrototypeData(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.js.runtime.objects.JSPrototypeData);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/objects/JSPrototypeData;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.object.DynamicObject obj
        start local 1 // com.oracle.truffle.js.runtime.objects.JSPrototypeData prototypeData
         0: .line 327
            aload 0 /* obj */
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            invokestatic com.oracle.truffle.js.runtime.objects.JSShape.isExtensible:(Lcom/oracle/truffle/api/object/Shape;)Z
            istore 2 /* extensible */
        start local 2 // boolean extensible
         1: .line 328
            aload 0 /* obj */
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.PROTOTYPE_DATA:Lcom/oracle/truffle/api/object/HiddenKey;
            aload 1 /* prototypeData */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.putHiddenProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 329
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 3
            iload 2 /* extensible */
            aload 0 /* obj */
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            invokestatic com.oracle.truffle.js.runtime.objects.JSShape.isExtensible:(Lcom/oracle/truffle/api/object/Shape;)Z
            if_icmpeq 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 330
      StackMap locals: int
      StackMap stack:
            return
        end local 2 // boolean extensible
        end local 1 // com.oracle.truffle.js.runtime.objects.JSPrototypeData prototypeData
        end local 0 // com.oracle.truffle.api.object.DynamicObject obj
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0            obj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    4     1  prototypeData  Lcom/oracle/truffle/js/runtime/objects/JSPrototypeData;
            1    4     2     extensible  Z
    MethodParameters:
               Name  Flags
      obj            
      prototypeData  

  static com.oracle.truffle.js.runtime.objects.JSPrototypeData getPrototypeData(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/objects/JSPrototypeData;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.object.DynamicObject obj
         0: .line 333
            aload 0 /* obj */
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.PROTOTYPE_DATA:Lcom/oracle/truffle/api/object/HiddenKey;
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.getOrNull:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.js.runtime.objects.JSPrototypeData
            areturn
        end local 0 // com.oracle.truffle.api.object.DynamicObject obj
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   obj  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
      Name  Flags
      obj   

  public static java.util.Map<java.lang.Object, java.lang.Object> archive(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/util/Map;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // com.oracle.truffle.api.object.DynamicObject obj
         0: .line 337
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 1 /* ret */
        start local 1 // java.util.HashMap ret
         1: .line 338
            aload 0 /* obj */
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            astore 2 /* shape */
        start local 2 // com.oracle.truffle.api.object.Shape shape
         2: .line 339
            aload 2 /* shape */
            iconst_0
            invokevirtual com.oracle.truffle.api.object.Shape.getPropertyListInternal:(Z)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 6
      StackMap locals: com.oracle.truffle.api.object.DynamicObject java.util.HashMap com.oracle.truffle.api.object.Shape top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 3 /* prop */
        start local 3 // com.oracle.truffle.api.object.Property prop
         4: .line 340
            aload 3 /* prop */
            invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
            invokevirtual com.oracle.truffle.api.object.Location.isValue:()Z
            ifne 6
            aload 1 /* ret */
            aload 3 /* prop */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            invokevirtual java.util.HashMap.containsKey:(Ljava/lang/Object;)Z
            ifne 6
         5: .line 341
            aload 1 /* ret */
            aload 3 /* prop */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            aload 3 /* prop */
            aload 0 /* obj */
            iconst_0
            invokevirtual com.oracle.truffle.api.object.Property.get:(Lcom/oracle/truffle/api/object/DynamicObject;Z)Ljava/lang/Object;
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // com.oracle.truffle.api.object.Property prop
         6: .line 339
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         7: .line 344
            aload 1 /* ret */
            areturn
        end local 2 // com.oracle.truffle.api.object.Shape shape
        end local 1 // java.util.HashMap ret
        end local 0 // com.oracle.truffle.api.object.DynamicObject obj
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0    obj  Lcom/oracle/truffle/api/object/DynamicObject;
            1    8     1    ret  Ljava/util/HashMap<Ljava/lang/Object;Ljava/lang/Object;>;
            2    8     2  shape  Lcom/oracle/truffle/api/object/Shape;
            4    6     3   prop  Lcom/oracle/truffle/api/object/Property;
    Signature: (Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/util/Map<Ljava/lang/Object;Ljava/lang/Object;>;
    MethodParameters:
      Name  Flags
      obj   

  public static void setPrototypeImpl(com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=14, args_size=2
        start local 0 // com.oracle.truffle.api.object.DynamicObject object
        start local 1 // com.oracle.truffle.api.object.DynamicObject newPrototype
         0: .line 349
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 350
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 2
            aload 0 /* object */
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            invokestatic com.oracle.truffle.js.runtime.objects.JSShape.isPrototypeInShape:(Lcom/oracle/truffle/api/object/Shape;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 352
      StackMap locals:
      StackMap stack:
            aload 0 /* object */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getJSContext:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/JSContext;
            astore 2 /* context */
        start local 2 // com.oracle.truffle.js.runtime.JSContext context
         3: .line 353
            aload 0 /* object */
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            astore 3 /* oldShape */
        start local 3 // com.oracle.truffle.api.object.Shape oldShape
         4: .line 354
            aload 3 /* oldShape */
            invokestatic com.oracle.truffle.js.runtime.objects.JSShape.invalidatePrototypeAssumption:(Lcom/oracle/truffle/api/object/Shape;)V
         5: .line 356
            aload 3 /* oldShape */
            invokestatic com.oracle.truffle.js.runtime.objects.JSShape.getJSClass:(Lcom/oracle/truffle/api/object/Shape;)Lcom/oracle/truffle/js/runtime/builtins/JSClass;
            astore 5 /* jsclass */
        start local 5 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
         6: .line 357
            aload 1 /* newPrototype */
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 9
         7: .line 358
            aload 2 /* context */
            aload 5 /* jsclass */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.makeEmptyShapeWithNullPrototype:(Lcom/oracle/truffle/js/runtime/builtins/JSClass;)Lcom/oracle/truffle/api/object/Shape;
            astore 4 /* newRootShape */
        start local 4 // com.oracle.truffle.api.object.Shape newRootShape
         8: .line 359
            goto 14
        end local 4 // com.oracle.truffle.api.object.Shape newRootShape
         9: .line 360
      StackMap locals: com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.js.runtime.JSContext com.oracle.truffle.api.object.Shape top com.oracle.truffle.js.runtime.builtins.JSClass
      StackMap stack:
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 10
            aload 1 /* newPrototype */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isObject:(Ljava/lang/Object;)Z
            ifne 10
            new java.lang.AssertionError
            dup
            aload 1 /* newPrototype */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        10: .line 361
      StackMap locals:
      StackMap stack:
            aload 2 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.isMultiContext:()Z
            ifeq 13
        11: .line 362
            aload 2 /* context */
            aload 5 /* jsclass */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.makeEmptyShapeWithPrototypeInObject:(Lcom/oracle/truffle/js/runtime/builtins/JSClass;)Lcom/oracle/truffle/api/object/Shape;
            astore 4 /* newRootShape */
        start local 4 // com.oracle.truffle.api.object.Shape newRootShape
        12: .line 363
            goto 14
        end local 4 // com.oracle.truffle.api.object.Shape newRootShape
        13: .line 364
      StackMap locals:
      StackMap stack:
            aload 1 /* newPrototype */
            aload 5 /* jsclass */
            aload 2 /* context */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.getProtoChildShape:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/builtins/JSClass;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/Shape;
            astore 4 /* newRootShape */
        start local 4 // com.oracle.truffle.api.object.Shape newRootShape
        14: .line 368
      StackMap locals: com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.js.runtime.JSContext com.oracle.truffle.api.object.Shape com.oracle.truffle.api.object.Shape com.oracle.truffle.js.runtime.builtins.JSClass
      StackMap stack:
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            astore 6 /* lib */
        start local 6 // com.oracle.truffle.api.object.DynamicObjectLibrary lib
        15: .line 370
            aload 3 /* oldShape */
            iconst_1
            invokevirtual com.oracle.truffle.api.object.Shape.getPropertyListInternal:(Z)Ljava/util/List;
            astore 7 /* allProperties */
        start local 7 // java.util.List allProperties
        16: .line 371
            new java.util.ArrayList
            dup
            aload 7 /* allProperties */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 8 /* archive */
        start local 8 // java.util.List archive
        17: .line 372
            aload 7 /* allProperties */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 21
      StackMap locals: com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.js.runtime.JSContext com.oracle.truffle.api.object.Shape com.oracle.truffle.api.object.Shape com.oracle.truffle.js.runtime.builtins.JSClass com.oracle.truffle.api.object.DynamicObjectLibrary java.util.List java.util.List top java.util.Iterator
      StackMap stack:
        18: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 9 /* prop */
        start local 9 // com.oracle.truffle.api.object.Property prop
        19: .line 373
            aload 6 /* lib */
            aload 0 /* object */
            aload 9 /* prop */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            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;
            astore 11 /* value */
        start local 11 // java.lang.Object value
        20: .line 374
            aload 8 /* archive */
            aload 11 /* value */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 11 // java.lang.Object value
        end local 9 // com.oracle.truffle.api.object.Property prop
        21: .line 372
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        22: .line 377
            aload 6 /* lib */
            aload 0 /* object */
            aload 4 /* newRootShape */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.resetShape:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/Shape;)Z
            pop
        23: .line 379
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        24: goto 38
        25: .line 380
      StackMap locals: com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.js.runtime.JSContext com.oracle.truffle.api.object.Shape com.oracle.truffle.api.object.Shape com.oracle.truffle.js.runtime.builtins.JSClass com.oracle.truffle.api.object.DynamicObjectLibrary java.util.List java.util.List int
      StackMap stack:
            aload 7 /* allProperties */
            iload 9 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 10 /* property */
        start local 10 // com.oracle.truffle.api.object.Property property
        26: .line 381
            aload 10 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            astore 11 /* key */
        start local 11 // java.lang.Object key
        27: .line 382
            aload 4 /* newRootShape */
            aload 11 /* key */
            invokevirtual com.oracle.truffle.api.object.Shape.hasProperty:(Ljava/lang/Object;)Z
            ifne 37
        28: .line 383
            aload 8 /* archive */
            iload 9 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            astore 12 /* value */
        start local 12 // java.lang.Object value
        29: .line 384
            aload 10 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getFlags:()I
            istore 13 /* propertyFlags */
        start local 13 // int propertyFlags
        30: .line 385
            getstatic com.oracle.truffle.js.runtime.objects.JSObject.HIDDEN_PROTO:Lcom/oracle/truffle/api/object/HiddenKey;
            aload 11 /* key */
            invokevirtual com.oracle.truffle.api.object.HiddenKey.equals:(Ljava/lang/Object;)Z
            ifeq 33
        31: .line 387
            aload 6 /* lib */
            aload 0 /* object */
            aload 11 /* key */
            aload 1 /* newPrototype */
            iload 13 /* propertyFlags */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putWithFlags:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
        32: .line 388
            goto 37
      StackMap locals: com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.js.runtime.JSContext com.oracle.truffle.api.object.Shape com.oracle.truffle.api.object.Shape com.oracle.truffle.js.runtime.builtins.JSClass com.oracle.truffle.api.object.DynamicObjectLibrary java.util.List java.util.List int com.oracle.truffle.api.object.Property java.lang.Object java.lang.Object int
      StackMap stack:
        33: aload 10 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
            invokevirtual com.oracle.truffle.api.object.Location.isConstant:()Z
            ifeq 36
        34: .line 389
            aload 6 /* lib */
            aload 0 /* object */
            aload 11 /* key */
            aload 12 /* value */
            iload 13 /* propertyFlags */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putConstant:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
        35: .line 390
            goto 37
        36: .line 391
      StackMap locals:
      StackMap stack:
            aload 6 /* lib */
            aload 0 /* object */
            aload 11 /* key */
            aload 12 /* value */
            iload 13 /* propertyFlags */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putWithFlags:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
        end local 13 // int propertyFlags
        end local 12 // java.lang.Object value
        end local 11 // java.lang.Object key
        end local 10 // com.oracle.truffle.api.object.Property property
        37: .line 379
      StackMap locals: com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.js.runtime.JSContext com.oracle.truffle.api.object.Shape com.oracle.truffle.api.object.Shape com.oracle.truffle.js.runtime.builtins.JSClass com.oracle.truffle.api.object.DynamicObjectLibrary java.util.List java.util.List int
      StackMap stack:
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        38: iload 9 /* i */
            aload 7 /* allProperties */
            invokeinterface java.util.List.size:()I
            if_icmplt 25
        end local 9 // int i
        39: .line 396
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 40
            aload 0 /* object */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.getPrototype:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            aload 1 /* newPrototype */
            if_acmpeq 40
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        40: .line 397
      StackMap locals:
      StackMap stack:
            return
        end local 8 // java.util.List archive
        end local 7 // java.util.List allProperties
        end local 6 // com.oracle.truffle.api.object.DynamicObjectLibrary lib
        end local 5 // com.oracle.truffle.js.runtime.builtins.JSClass jsclass
        end local 4 // com.oracle.truffle.api.object.Shape newRootShape
        end local 3 // com.oracle.truffle.api.object.Shape oldShape
        end local 2 // com.oracle.truffle.js.runtime.JSContext context
        end local 1 // com.oracle.truffle.api.object.DynamicObject newPrototype
        end local 0 // com.oracle.truffle.api.object.DynamicObject object
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   41     0         object  Lcom/oracle/truffle/api/object/DynamicObject;
            0   41     1   newPrototype  Lcom/oracle/truffle/api/object/DynamicObject;
            3   41     2        context  Lcom/oracle/truffle/js/runtime/JSContext;
            4   41     3       oldShape  Lcom/oracle/truffle/api/object/Shape;
            8    9     4   newRootShape  Lcom/oracle/truffle/api/object/Shape;
           12   13     4   newRootShape  Lcom/oracle/truffle/api/object/Shape;
           14   41     4   newRootShape  Lcom/oracle/truffle/api/object/Shape;
            6   41     5        jsclass  Lcom/oracle/truffle/js/runtime/builtins/JSClass;
           15   41     6            lib  Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
           16   41     7  allProperties  Ljava/util/List<Lcom/oracle/truffle/api/object/Property;>;
           17   41     8        archive  Ljava/util/List<Ljava/lang/Object;>;
           19   21     9           prop  Lcom/oracle/truffle/api/object/Property;
           20   21    11          value  Ljava/lang/Object;
           24   39     9              i  I
           26   37    10       property  Lcom/oracle/truffle/api/object/Property;
           27   37    11            key  Ljava/lang/Object;
           29   37    12          value  Ljava/lang/Object;
           30   37    13  propertyFlags  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
              Name  Flags
      object        
      newPrototype  

  public static com.oracle.truffle.js.runtime.objects.JSDynamicObject getPrototype(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
         0: .line 400
            aload 0 /* thisObj */
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            invokestatic com.oracle.truffle.js.runtime.objects.JSShape.getSharedData:(Lcom/oracle/truffle/api/object/Shape;)Lcom/oracle/truffle/js/runtime/objects/JSSharedData;
            astore 1 /* sharedData */
        start local 1 // com.oracle.truffle.js.runtime.objects.JSSharedData sharedData
         1: .line 401
            aload 1 /* sharedData */
            invokevirtual com.oracle.truffle.js.runtime.objects.JSSharedData.getPrototype:()Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            astore 2 /* proto */
        start local 2 // com.oracle.truffle.js.runtime.objects.JSDynamicObject proto
         2: .line 402
            aload 2 /* proto */
            ifnull 5
         3: .line 403
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 4
            aload 2 /* proto */
            aload 0 /* thisObj */
            getstatic com.oracle.truffle.js.runtime.objects.JSObject.HIDDEN_PROTO:Lcom/oracle/truffle/api/object/HiddenKey;
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.getOrDefault:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            if_acmpeq 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 404
      StackMap locals: com.oracle.truffle.js.runtime.objects.JSSharedData com.oracle.truffle.js.runtime.objects.JSDynamicObject
      StackMap stack:
            aload 2 /* proto */
            areturn
         5: .line 406
      StackMap locals:
      StackMap stack:
            aload 0 /* thisObj */
            getstatic com.oracle.truffle.js.runtime.objects.JSObject.HIDDEN_PROTO:Lcom/oracle/truffle/api/object/HiddenKey;
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.getOrDefault:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.js.runtime.objects.JSDynamicObject
            areturn
        end local 2 // com.oracle.truffle.js.runtime.objects.JSDynamicObject proto
        end local 1 // com.oracle.truffle.js.runtime.objects.JSSharedData sharedData
        end local 0 // com.oracle.truffle.api.object.DynamicObject thisObj
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0     thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            1    6     1  sharedData  Lcom/oracle/truffle/js/runtime/objects/JSSharedData;
            2    6     2       proto  Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
    MethodParameters:
         Name  Flags
      thisObj  

  public static <T> T checkForNoSuchPropertyOrMethod(com.oracle.truffle.js.runtime.JSContext, );
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
        start local 1 // java.lang.Object key
         0: .line 410
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 411
            aload 0 /* context */
            ifnull 6
            aload 1 /* key */
            ifnull 6
            aload 0 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.isOptionNashornCompatibilityMode:()Z
            ifeq 6
         2: .line 412
            aload 0 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getNoSuchPropertyUnusedAssumption:()Lcom/oracle/truffle/api/Assumption;
            invokeinterface com.oracle.truffle.api.Assumption.isValid:()Z
            ifeq 4
            ldc "__noSuchProperty__"
            aload 1 /* key */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 413
            aload 0 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getNoSuchPropertyUnusedAssumption:()Lcom/oracle/truffle/api/Assumption;
            ldc "NoSuchProperty is used"
            invokeinterface com.oracle.truffle.api.Assumption.invalidate:(Ljava/lang/String;)V
         4: .line 415
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getNoSuchMethodUnusedAssumption:()Lcom/oracle/truffle/api/Assumption;
            invokeinterface com.oracle.truffle.api.Assumption.isValid:()Z
            ifeq 6
            ldc "__noSuchMethod__"
            aload 1 /* key */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 416
            aload 0 /* context */
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getNoSuchMethodUnusedAssumption:()Lcom/oracle/truffle/api/Assumption;
            ldc "NoSuchMethod is used"
            invokeinterface com.oracle.truffle.api.Assumption.invalidate:(Ljava/lang/String;)V
         6: .line 419
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            areturn
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    7     1      key  TT;
    Signature: <T:Ljava/lang/Object;>(Lcom/oracle/truffle/js/runtime/JSContext;TT;)TT;
    MethodParameters:
         Name  Flags
      context  
      key      

  public static boolean isNoSuchPropertyOrMethod(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object key
         0: .line 423
            invokestatic com.oracle.truffle.api.CompilerAsserts.neverPartOfCompilation:()V
         1: .line 424
            aload 0 /* key */
            instanceof java.lang.String
            ifeq 3
            aload 0 /* key */
            ldc "__noSuchProperty__"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 2
            aload 0 /* key */
            ldc "__noSuchMethod__"
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 3
      StackMap locals:
      StackMap stack:
         2: iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 0 // java.lang.Object key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0   key  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      key   

  public static com.oracle.truffle.api.object.DynamicObject createSymbolSpeciesGetterFunction(com.oracle.truffle.js.runtime.JSRealm);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSRealm;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.runtime.JSRealm realm
         0: .line 428
            aload 0 /* realm */
            aload 0 /* realm */
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 0 /* realm */
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getSpeciesGetterFunctionCallTarget:()Lcom/oracle/truffle/api/CallTarget;
            iconst_0
            ldc "get [Symbol.species]"
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunctionData.createCallOnly:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/CallTarget;ILjava/lang/String;)Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.create:(Lcom/oracle/truffle/js/runtime/JSRealm;Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 0 // com.oracle.truffle.js.runtime.JSRealm realm
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  realm  Lcom/oracle/truffle/js/runtime/JSRealm;
    MethodParameters:
       Name  Flags
      realm  

  public static void putFunctionsFromContainer(com.oracle.truffle.js.runtime.JSRealm, com.oracle.truffle.api.object.DynamicObject, com.oracle.truffle.js.builtins.JSBuiltinsContainer);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSRealm;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // com.oracle.truffle.js.runtime.JSRealm realm
        start local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        start local 2 // com.oracle.truffle.js.builtins.JSBuiltinsContainer container
         0: .line 432
            aload 0 /* realm */
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            astore 3 /* context */
        start local 3 // com.oracle.truffle.js.runtime.JSContext context
         1: .line 433
            aload 2 /* container */
            new com.oracle.truffle.js.runtime.objects.JSObjectUtil$1
            dup
            aload 3 /* context */
            aload 1 /* thisObj */
            aload 0 /* realm */
            invokespecial com.oracle.truffle.js.runtime.objects.JSObjectUtil$1.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/JSRealm;)V
            invokevirtual com.oracle.truffle.js.builtins.JSBuiltinsContainer.forEachBuiltin:(Ljava/util/function/Consumer;)V
         2: .line 445
            return
        end local 3 // com.oracle.truffle.js.runtime.JSContext context
        end local 2 // com.oracle.truffle.js.builtins.JSBuiltinsContainer container
        end local 1 // com.oracle.truffle.api.object.DynamicObject thisObj
        end local 0 // com.oracle.truffle.js.runtime.JSRealm realm
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0      realm  Lcom/oracle/truffle/js/runtime/JSRealm;
            0    3     1    thisObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     2  container  Lcom/oracle/truffle/js/builtins/JSBuiltinsContainer;
            1    3     3    context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
           Name  Flags
      realm      
      thisObj    
      container  

  public static void putHiddenProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.api.object.DynamicObject obj
        start local 1 // java.lang.Object key
        start local 2 // java.lang.Object value
         0: .line 448
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 1
            aload 1 /* key */
            instanceof com.oracle.truffle.api.object.HiddenKey
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 449
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 0 /* obj */
            aload 1 /* key */
            aload 2 /* value */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.put:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 450
            return
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject obj
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0    obj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    3     1    key  Ljava/lang/Object;
            0    3     2  value  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      obj    
      key    
      value  

  public static java.lang.Object getHiddenProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.object.DynamicObject obj
        start local 1 // java.lang.Object key
         0: .line 453
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 1
            aload 1 /* key */
            instanceof com.oracle.truffle.api.object.HiddenKey
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 454
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 0 /* obj */
            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.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject obj
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   obj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     1   key  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      obj   
      key   

  public static boolean hasHiddenProperty(com.oracle.truffle.api.object.DynamicObject, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.object.DynamicObject obj
        start local 1 // java.lang.Object key
         0: .line 458
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 1
            aload 1 /* key */
            instanceof com.oracle.truffle.api.object.HiddenKey
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 459
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            aload 0 /* obj */
            aload 1 /* key */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.containsKey:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.Object key
        end local 0 // com.oracle.truffle.api.object.DynamicObject obj
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   obj  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     1   key  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      obj   
      key   

  public static com.oracle.truffle.api.object.DynamicObjectLibrary createCached(java.lang.Object, com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Object key
        start local 1 // com.oracle.truffle.api.object.DynamicObject obj
         0: .line 463
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 1
            aload 0 /* key */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 464
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            aload 1 /* obj */
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.create:(Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.object.DynamicObjectLibrary
            areturn
        end local 1 // com.oracle.truffle.api.object.DynamicObject obj
        end local 0 // java.lang.Object key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   key  Ljava/lang/Object;
            0    2     1   obj  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
      Name  Flags
      key   
      obj   

  public static com.oracle.truffle.api.object.DynamicObjectLibrary createDispatched(java.lang.Object, int);
    descriptor: (Ljava/lang/Object;I)Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Object key
        start local 1 // int limit
         0: .line 468
            getstatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.$assertionsDisabled:Z
            ifne 1
            aload 0 /* key */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 469
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            iload 1 /* limit */
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.createDispatched:(I)Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.object.DynamicObjectLibrary
            areturn
        end local 1 // int limit
        end local 0 // java.lang.Object key
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0    key  Ljava/lang/Object;
            0    2     1  limit  I
    MethodParameters:
       Name  Flags
      key    
      limit  

  public static com.oracle.truffle.api.object.DynamicObjectLibrary createDispatched(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object key
         0: .line 473
            aload 0 /* key */
            iconst_5
            invokestatic com.oracle.truffle.js.runtime.objects.JSObjectUtil.createDispatched:(Ljava/lang/Object;I)Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            areturn
        end local 0 // java.lang.Object key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   key  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      key   

  public static <T extends com.oracle.truffle.api.object.DynamicObject> T copyProperties(T, com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // com.oracle.truffle.api.object.DynamicObject target
        start local 1 // com.oracle.truffle.api.object.DynamicObject source
         0: .line 477
            invokestatic com.oracle.truffle.api.object.DynamicObjectLibrary.getUncached:()Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            astore 2 /* objectLibrary */
        start local 2 // com.oracle.truffle.api.object.DynamicObjectLibrary objectLibrary
         1: .line 478
            aload 1 /* source */
            invokevirtual com.oracle.truffle.api.object.DynamicObject.getShape:()Lcom/oracle/truffle/api/object/Shape;
            iconst_1
            invokevirtual com.oracle.truffle.api.object.Shape.getPropertyListInternal:(Z)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 11
      StackMap locals: com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObjectLibrary top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.Property
            astore 3 /* property */
        start local 3 // com.oracle.truffle.api.object.Property property
         3: .line 479
            aload 3 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
            astore 5 /* key */
        start local 5 // java.lang.Object key
         4: .line 480
            aload 2 /* objectLibrary */
            aload 0 /* target */
            aload 5 /* key */
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.containsKey:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Z
            ifeq 6
         5: .line 481
            goto 11
         6: .line 483
      StackMap locals: com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObjectLibrary com.oracle.truffle.api.object.Property java.util.Iterator java.lang.Object
      StackMap stack:
            aload 2 /* objectLibrary */
            aload 1 /* source */
            aload 5 /* 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;
            astore 6 /* value */
        start local 6 // java.lang.Object value
         7: .line 484
            aload 3 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
            invokevirtual com.oracle.truffle.api.object.Location.isConstant:()Z
            ifeq 10
         8: .line 485
            aload 2 /* objectLibrary */
            aload 0 /* target */
            aload 5 /* key */
            aload 6 /* value */
            aload 3 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getFlags:()I
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putConstant:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
         9: .line 486
            goto 11
        10: .line 487
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* objectLibrary */
            aload 0 /* target */
            aload 5 /* key */
            aload 6 /* value */
            aload 3 /* property */
            invokevirtual com.oracle.truffle.api.object.Property.getFlags:()I
            invokevirtual com.oracle.truffle.api.object.DynamicObjectLibrary.putWithFlags:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Ljava/lang/Object;I)V
        end local 6 // java.lang.Object value
        end local 5 // java.lang.Object key
        end local 3 // com.oracle.truffle.api.object.Property property
        11: .line 478
      StackMap locals: com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObject com.oracle.truffle.api.object.DynamicObjectLibrary top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        12: .line 490
            aload 0 /* target */
            areturn
        end local 2 // com.oracle.truffle.api.object.DynamicObjectLibrary objectLibrary
        end local 1 // com.oracle.truffle.api.object.DynamicObject source
        end local 0 // com.oracle.truffle.api.object.DynamicObject target
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   13     0         target  TT;
            0   13     1         source  Lcom/oracle/truffle/api/object/DynamicObject;
            1   13     2  objectLibrary  Lcom/oracle/truffle/api/object/DynamicObjectLibrary;
            3   11     3       property  Lcom/oracle/truffle/api/object/Property;
            4   11     5            key  Ljava/lang/Object;
            7   11     6          value  Ljava/lang/Object;
    Signature: <T:Lcom/oracle/truffle/api/object/DynamicObject;>(TT;Lcom/oracle/truffle/api/object/DynamicObject;)TT;
    MethodParameters:
        Name  Flags
      target  
      source  

  private static com.oracle.truffle.api.object.Location lambda$0(com.oracle.truffle.api.object.Shape, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/object/Shape;Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Location;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.object.Shape shape
        start local 1 // java.lang.Object val
         0: .line 127
            aload 0 /* shape */
            invokevirtual com.oracle.truffle.api.object.Shape.allocator:()Lcom/oracle/truffle/api/object/Shape$Allocator;
            aload 1 /* val */
            invokevirtual com.oracle.truffle.api.object.Shape$Allocator.declaredLocation:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Location;
            areturn
        end local 1 // java.lang.Object val
        end local 0 // com.oracle.truffle.api.object.Shape shape
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  shape  Lcom/oracle/truffle/api/object/Shape;
            0    1     1    val  Ljava/lang/Object;

  private static int lambda$1(int, int);
    descriptor: (II)I
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // int attr
         0: .line 197
            iload 1 /* attr */
            bipush -8
            iand
            iload 0
            ior
            ireturn
        end local 1 // int attr
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     1  attr  I
}
SourceFile: "JSObjectUtil.java"
NestMembers:
  com.oracle.truffle.js.runtime.objects.JSObjectUtil$1
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract Allocator = com.oracle.truffle.api.object.Shape$Allocator of com.oracle.truffle.api.object.Shape
  com.oracle.truffle.js.runtime.objects.JSObjectUtil$1
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles