public abstract class com.oracle.truffle.js.nodes.cast.JSToObjectNode extends com.oracle.truffle.js.nodes.JavaScriptBaseNode
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.js.nodes.cast.JSToObjectNode
  super_class: com.oracle.truffle.js.nodes.JavaScriptBaseNode
{
  protected final com.oracle.truffle.js.runtime.JSContext context;
    descriptor: Lcom/oracle/truffle/js/runtime/JSContext;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final boolean checkForNullOrUndefined;
    descriptor: Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final boolean fromWith;
    descriptor: Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final boolean allowForeign;
    descriptor: Z
    flags: (0x0014) ACC_PROTECTED, 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=1, locals=0, args_size=0
         0: .line 80
            ldc Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            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.nodes.cast.JSToObjectNode.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(com.oracle.truffle.js.runtime.JSContext, boolean, boolean, boolean);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;ZZZ)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
        start local 2 // boolean checkForNullOrUndefined
        start local 3 // boolean fromWith
        start local 4 // boolean allowForeign
         0: .line 87
            aload 0 /* this */
            invokespecial com.oracle.truffle.js.nodes.JavaScriptBaseNode.<init>:()V
         1: .line 88
            aload 0 /* this */
            aload 1 /* context */
            putfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
         2: .line 89
            aload 0 /* this */
            iload 2 /* checkForNullOrUndefined */
            putfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.checkForNullOrUndefined:Z
         3: .line 90
            aload 0 /* this */
            iload 3 /* fromWith */
            putfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.fromWith:Z
         4: .line 91
            aload 0 /* this */
            iload 4 /* allowForeign */
            putfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.allowForeign:Z
         5: .line 92
            return
        end local 4 // boolean allowForeign
        end local 3 // boolean fromWith
        end local 2 // boolean checkForNullOrUndefined
        end local 1 // com.oracle.truffle.js.runtime.JSContext context
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0    6     0                     this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    6     1                  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    6     2  checkForNullOrUndefined  Z
            0    6     3                 fromWith  Z
            0    6     4             allowForeign  Z
    MethodParameters:
                         Name  Flags
      context                  
      checkForNullOrUndefined  
      fromWith                 
      allowForeign             

  public abstract java.lang.Object execute(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      value  

  public static com.oracle.truffle.js.nodes.cast.JSToObjectNode createToObject(com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 97
            aload 0 /* context */
            iconst_1
            iconst_0
            iconst_1
            invokestatic com.oracle.truffle.js.nodes.cast.JSToObjectNode.createToObject:(Lcom/oracle/truffle/js/runtime/JSContext;ZZZ)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            areturn
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
         Name  Flags
      context  

  public static com.oracle.truffle.js.nodes.cast.JSToObjectNode createToObjectNoCheck(com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 101
            aload 0 /* context */
            iconst_0
            iconst_0
            iconst_1
            invokestatic com.oracle.truffle.js.nodes.cast.JSToObjectNode.createToObject:(Lcom/oracle/truffle/js/runtime/JSContext;ZZZ)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            areturn
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
         Name  Flags
      context  

  public static com.oracle.truffle.js.nodes.cast.JSToObjectNode createToObjectNoCheckNoForeign(com.oracle.truffle.js.runtime.JSContext);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.runtime.JSContext context
         0: .line 105
            aload 0 /* context */
            iconst_0
            iconst_0
            iconst_0
            invokestatic com.oracle.truffle.js.nodes.cast.JSToObjectNode.createToObject:(Lcom/oracle/truffle/js/runtime/JSContext;ZZZ)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            areturn
        end local 0 // com.oracle.truffle.js.runtime.JSContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lcom/oracle/truffle/js/runtime/JSContext;
    MethodParameters:
         Name  Flags
      context  

  protected static com.oracle.truffle.js.nodes.cast.JSToObjectNode createToObject(com.oracle.truffle.js.runtime.JSContext, boolean, boolean, boolean);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;ZZZ)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=4
         0: .line 109
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tJSToObjectNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
                         Name  Flags
      context                  
      checkForNullOrUndefined  
      fromWith                 
      allowForeign             

  protected final com.oracle.truffle.js.runtime.JSContext getContext();
    descriptor: ()Lcom/oracle/truffle/js/runtime/JSContext;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
         0: .line 113
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            areturn
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;

  protected final boolean isCheckForNullOrUndefined();
    descriptor: ()Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
         0: .line 117
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.checkForNullOrUndefined:Z
            ireturn
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;

  protected final boolean isFromWith();
    descriptor: ()Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
         0: .line 121
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.fromWith:Z
            ireturn
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;

  protected final boolean isAllowForeign();
    descriptor: ()Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
         0: .line 125
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.allowForeign:Z
            ireturn
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;

  private com.oracle.truffle.js.runtime.JSException createTypeError(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/js/runtime/JSException;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // java.lang.Object value
         0: .line 130
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.isFromWith:()Z
            ifeq 2
         1: .line 131
            new java.lang.StringBuilder
            dup
            ldc "Cannot apply \"with\" to "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.safeToString:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.runtime.Errors.createTypeError:(Ljava/lang/String;Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
            areturn
         2: .line 133
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokestatic com.oracle.truffle.js.runtime.Errors.createTypeErrorNotObjectCoercible:(Ljava/lang/Object;Lcom/oracle/truffle/api/nodes/Node;Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/runtime/JSException;
            areturn
        end local 1 // java.lang.Object value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    3     1  value  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
       Name  Flags
      value  

  protected com.oracle.truffle.api.object.DynamicObject doBoolean(boolean);
    descriptor: (Z)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // boolean value
         0: .line 138
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            iload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSBoolean.create:(Lcom/oracle/truffle/js/runtime/JSContext;Z)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // boolean value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1  value  Z
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected com.oracle.truffle.api.object.DynamicObject doJSLazyString(com.oracle.truffle.js.runtime.objects.JSLazyString);
    descriptor: (Lcom/oracle/truffle/js/runtime/objects/JSLazyString;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // com.oracle.truffle.js.runtime.objects.JSLazyString value
         0: .line 143
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSString.create:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/CharSequence;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // com.oracle.truffle.js.runtime.objects.JSLazyString value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1  value  Lcom/oracle/truffle/js/runtime/objects/JSLazyString;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected com.oracle.truffle.api.object.DynamicObject doString(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // java.lang.String value
         0: .line 148
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSString.create:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/CharSequence;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // java.lang.String value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1  value  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected com.oracle.truffle.api.object.DynamicObject doInt(int);
    descriptor: (I)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // int value
         0: .line 153
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            iload 1 /* value */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSNumber.create:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Number;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // int value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1  value  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected com.oracle.truffle.api.object.DynamicObject doDouble(double);
    descriptor: (D)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // double value
         0: .line 158
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            dload 1 /* value */
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSNumber.create:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Number;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // double value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1  value  D
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected com.oracle.truffle.api.object.DynamicObject doBigInt(com.oracle.truffle.js.runtime.BigInt);
    descriptor: (Lcom/oracle/truffle/js/runtime/BigInt;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // com.oracle.truffle.js.runtime.BigInt value
         0: .line 163
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSBigInt.create:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/runtime/BigInt;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // com.oracle.truffle.js.runtime.BigInt value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1  value  Lcom/oracle/truffle/js/runtime/BigInt;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected com.oracle.truffle.api.object.DynamicObject doNumber(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // java.lang.Object value
         0: .line 168
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 1 /* value */
            checkcast java.lang.Number
            invokestatic com.oracle.truffle.js.runtime.builtins.JSNumber.create:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Number;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // java.lang.Object value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1  value  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isJavaNumber(value)"})
    MethodParameters:
       Name  Flags
      value  

  protected com.oracle.truffle.api.object.DynamicObject doSymbol(com.oracle.truffle.js.runtime.Symbol);
    descriptor: (Lcom/oracle/truffle/js/runtime/Symbol;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // com.oracle.truffle.js.runtime.Symbol value
         0: .line 173
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSSymbol.create:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/runtime/Symbol;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // com.oracle.truffle.js.runtime.Symbol value
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1  value  Lcom/oracle/truffle/js/runtime/Symbol;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected static  doJSObjectCached(, java.lang.Class<?>);
    descriptor: (Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Object object
        start local 1 // java.lang.Class cachedClass
         0: .line 179
            aload 1 /* cachedClass */
            aload 0 /* object */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.Class cachedClass
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0       object  Ljava/lang/Object;
            0    1     1  cachedClass  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Object;Ljava/lang/Class<*>;)Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"cachedClass != null", "cachedClass.isInstance(object)"}, limit = "1")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached(value = "getClassIfObject(object)")
    MethodParameters:
             Name  Flags
      object       
      cachedClass  

  final java.lang.Class<?> getClassIfObject();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Class;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // java.lang.Object object
         0: .line 183
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.isCheckForNullOrUndefined:()Z
            ifeq 2
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.nodes.JSGuards.isJSObject:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 184
            aload 1 /* object */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            areturn
         2: .line 185
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.isCheckForNullOrUndefined:()Z
            ifne 4
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.nodes.JSGuards.isJSDynamicObject:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 186
            aload 1 /* object */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            areturn
         4: .line 188
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    5     1  object  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/lang/Class<*>;
    MethodParameters:
        Name  Flags
      object  

  protected java.lang.Object doJSObjectNoCheck(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // java.lang.Object object
         0: .line 194
            aload 1 /* object */
            areturn
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1  object  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"!isCheckForNullOrUndefined()", "isJSDynamicObject(object)"}, replaces = {"doJSObjectCached"})
    MethodParameters:
        Name  Flags
      object  

  protected java.lang.Object doJSObjectCheck(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // java.lang.Object object
         0: .line 199
            aload 1 /* object */
            areturn
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1  object  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isCheckForNullOrUndefined()", "isJSObject(object)"}, replaces = {"doJSObjectCached"})
    MethodParameters:
        Name  Flags
      object  

  protected com.oracle.truffle.api.object.DynamicObject doNullOrUndefined(com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
         0: .line 204
            aload 0 /* this */
            aload 1 /* object */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.createTypeError:(Ljava/lang/Object;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1  object  Lcom/oracle/truffle/api/object/DynamicObject;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isCheckForNullOrUndefined()", "isNullOrUndefined(object)"})
    MethodParameters:
        Name  Flags
      object  

  protected java.lang.Object doForeignObjectAllowed(java.lang.Object, com.oracle.truffle.js.nodes.cast.JSToObjectNode, com.oracle.truffle.api.interop.InteropLibrary);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;Lcom/oracle/truffle/api/interop/InteropLibrary;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // java.lang.Object obj
        start local 2 // com.oracle.truffle.js.nodes.cast.JSToObjectNode toObjectNode
        start local 3 // com.oracle.truffle.api.interop.InteropLibrary interop
         0: .line 211
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.isFromWith:()Z
            ifeq 2
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.isOptionNashornCompatibilityMode:()Z
            ifeq 2
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            aload 1 /* obj */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.isHostObject:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 212
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.throwWithError:()V
         2: .line 214
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            aconst_null
            aload 3 /* interop */
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.runtime.interop.JSInteropUtil.toPrimitiveOrDefault:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/api/interop/InteropLibrary;Lcom/oracle/truffle/api/nodes/Node;)Ljava/lang/Object;
            astore 4 /* unboxed */
        start local 4 // java.lang.Object unboxed
         3: .line 215
            aload 4 /* unboxed */
            ifnonnull 5
         4: .line 216
            aload 1 /* obj */
            areturn
         5: .line 217
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4 /* unboxed */
            getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 7
         6: .line 218
            aload 0 /* this */
            aload 1 /* obj */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.createTypeError:(Ljava/lang/Object;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
         7: .line 220
      StackMap locals:
      StackMap stack:
            aload 2 /* toObjectNode */
            aload 4 /* unboxed */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.execute:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 4 // java.lang.Object unboxed
        end local 3 // com.oracle.truffle.api.interop.InteropLibrary interop
        end local 2 // com.oracle.truffle.js.nodes.cast.JSToObjectNode toObjectNode
        end local 1 // java.lang.Object obj
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    8     1           obj  Ljava/lang/Object;
            0    8     2  toObjectNode  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    8     3       interop  Lcom/oracle/truffle/api/interop/InteropLibrary;
            3    8     4       unboxed  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isAllowForeign()", "isForeignObject(obj)"}, limit = "InteropLibraryLimit")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.dsl.Cached(value = "createToObject(context, checkForNullOrUndefined, fromWith, allowForeign)")
      2:
        com.oracle.truffle.api.library.CachedLibrary(value = "obj")
    MethodParameters:
              Name  Flags
      obj           
      toObjectNode  
      interop       

  protected java.lang.Object doForeignObjectDisallowed(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // java.lang.Object obj
         0: .line 225
            ldc "Foreign TruffleObject not supported"
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.runtime.Errors.createTypeError:(Ljava/lang/String;Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
        end local 1 // java.lang.Object obj
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    1     1   obj  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"!isAllowForeign()", "isForeignObject(obj)"})
    MethodParameters:
      Name  Flags
      obj   

  protected java.lang.Object doJavaGeneric(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
        start local 1 // java.lang.Object object
         0: .line 231
            getstatic com.oracle.truffle.js.nodes.cast.JSToObjectNode.$assertionsDisabled:Z
            ifne 1
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isJSNative:(Ljava/lang/Object;)Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 232
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.isFromWith:()Z
            ifeq 3
         2: .line 234
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.throwWithError:()V
         3: .line 236
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSToObjectNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            aload 1 /* object */
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.asBoxedGuestValue:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            0    4     1  object  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"!isBoolean(object)", "!isNumber(object)", "!isString(object)", "!isSymbol(object)", "!isJSObject(object)", "!isForeignObject(object)"})
    MethodParameters:
        Name  Flags
      object  

  private void throwWithError();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
         0: .line 241
            ldc "Cannot apply \"with\" to non script object"
            astore 1 /* message */
        start local 1 // java.lang.String message
         1: .line 242
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.isOptionNashornCompatibilityMode:()Z
            ifeq 3
         2: .line 243
            new java.lang.StringBuilder
            dup
            aload 1 /* message */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ". Consider using \"with(Object.bindProperties({}, nonScriptObject))\"."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* message */
         3: .line 245
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* message */
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.runtime.Errors.createTypeError:(Ljava/lang/String;Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/js/runtime/JSException;
            athrow
        end local 1 // java.lang.String message
        end local 0 // com.oracle.truffle.js.nodes.cast.JSToObjectNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            1    4     1  message  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
}
SourceFile: "JSToObjectNode.java"
NestMembers:
  com.oracle.truffle.js.nodes.cast.JSToObjectNode$JSToObjectWrapperNode
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
  public abstract JSToObjectWrapperNode = com.oracle.truffle.js.nodes.cast.JSToObjectNode$JSToObjectWrapperNode of com.oracle.truffle.js.nodes.cast.JSToObjectNode
    RuntimeInvisibleAnnotations: 
      com.oracle.truffle.api.dsl.ImportStatic(value = {Lcom/oracle/truffle/js/runtime/JSConfig;})