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

  protected void <init>(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.nodes.JavaScriptNode);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
        start local 2 // com.oracle.truffle.js.nodes.JavaScriptNode child
         0: .line 78
            aload 0 /* this */
            aload 2 /* child */
            invokespecial com.oracle.truffle.js.nodes.unary.JSUnaryNode.<init>:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;)V
         1: .line 79
            aload 0 /* this */
            aload 1 /* context */
            putfield com.oracle.truffle.js.nodes.cast.JSPrepareThisNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
         2: .line 80
            return
        end local 2 // com.oracle.truffle.js.nodes.JavaScriptNode child
        end local 1 // com.oracle.truffle.js.runtime.JSContext context
        end local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            0    3     1  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    3     2    child  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    MethodParameters:
         Name  Flags
      context  
      child    

  public static com.oracle.truffle.js.nodes.cast.JSPrepareThisNode createPrepareThisBinding(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.nodes.JavaScriptNode);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
         0: .line 83
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tJSPrepareThisNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
         Name  Flags
      context  
      child    

  protected com.oracle.truffle.api.object.DynamicObject doJSObject(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lcom/oracle/truffle/api/object/DynamicObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
        start local 1 // java.lang.Object object
         0: .line 88
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSPrepareThisNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokestatic com.oracle.truffle.js.nodes.access.GlobalObjectNode.getGlobalObject:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            0    1     1  object  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isNullOrUndefined(object)"})
    MethodParameters:
        Name  Flags
      object  

  protected  doJSObjectCached(, java.lang.Class<?>);
    descriptor: (Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
        start local 1 // java.lang.Object object
        start local 2 // java.lang.Class cachedClass
         0: .line 95
            aload 1 /* object */
            areturn
        end local 2 // java.lang.Class cachedClass
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            0    1     1       object  Ljava/lang/Object;
            0    1     2  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 = "getClassIfJSObject(object)")
    MethodParameters:
             Name  Flags
      object       
      cachedClass  

  protected com.oracle.truffle.api.object.DynamicObject doJSObject(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=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
         0: .line 100
            aload 1 /* object */
            areturn
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            0    1     1  object  Lcom/oracle/truffle/api/object/DynamicObject;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isJSObject(object)"}, replaces = {"doJSObjectCached"})
    MethodParameters:
        Name  Flags
      object  

  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.JSPrepareThisNode this
        start local 1 // boolean value
         0: .line 105
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSPrepareThisNode.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.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            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.JSPrepareThisNode this
        start local 1 // com.oracle.truffle.js.runtime.objects.JSLazyString value
         0: .line 110
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSPrepareThisNode.context: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.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            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.JSPrepareThisNode this
        start local 1 // java.lang.String value
         0: .line 115
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSPrepareThisNode.context: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.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            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.JSPrepareThisNode this
        start local 1 // int value
         0: .line 120
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSPrepareThisNode.context: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.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            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.JSPrepareThisNode this
        start local 1 // double value
         0: .line 125
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSPrepareThisNode.context: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.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            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.JSPrepareThisNode this
        start local 1 // com.oracle.truffle.js.runtime.BigInt value
         0: .line 130
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSPrepareThisNode.context: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.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            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.JSPrepareThisNode this
        start local 1 // java.lang.Object value
         0: .line 135
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSPrepareThisNode.context: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.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            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.JSPrepareThisNode this
        start local 1 // com.oracle.truffle.js.runtime.Symbol value
         0: .line 140
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSPrepareThisNode.context: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.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            0    1     1  value  Lcom/oracle/truffle/js/runtime/Symbol;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
       Name  Flags
      value  

  protected java.lang.Object doForeignObject(java.lang.Object, com.oracle.truffle.api.interop.InteropLibrary);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/interop/InteropLibrary;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
        start local 1 // java.lang.Object object
        start local 2 // com.oracle.truffle.api.interop.InteropLibrary interop
         0: .line 146
            aload 2 /* interop */
            aload 1 /* object */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isNull:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 147
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.cast.JSPrepareThisNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
            invokestatic com.oracle.truffle.js.nodes.access.GlobalObjectNode.getGlobalObject:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/DynamicObject;
            areturn
         2: .line 149
      StackMap locals:
      StackMap stack:
            aload 1 /* object */
            areturn
        end local 2 // com.oracle.truffle.api.interop.InteropLibrary interop
        end local 1 // java.lang.Object object
        end local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
            0    3     1   object  Ljava/lang/Object;
            0    3     2  interop  Lcom/oracle/truffle/api/interop/InteropLibrary;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isForeignObject(object)"}, limit = "InteropLibraryLimit")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
        com.oracle.truffle.api.library.CachedLibrary(value = "object")
    MethodParameters:
         Name  Flags
      object   
      interop  

  protected com.oracle.truffle.js.nodes.JavaScriptNode copyUninitialized(java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>);
    descriptor: (Ljava/util/Set;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
         0: .line 154
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tJSPrepareThisNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.js.nodes.cast.JSPrepareThisNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/cast/JSPrepareThisNode;
    Signature: (Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    MethodParameters:
                  Name  Flags
      materializedTags  
}
SourceFile: "JSPrepareThisNode.java"
    RuntimeInvisibleAnnotations: 
      com.oracle.truffle.api.dsl.ImportStatic(value = {Lcom/oracle/truffle/js/runtime/JSConfig;})