public abstract class com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode extends com.oracle.truffle.js.nodes.function.JSBuiltinNode
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode
  super_class: com.oracle.truffle.js.nodes.function.JSBuiltinNode
{
  public void <init>(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.nodes.function.JSBuiltin);
    descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
        start local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
         0: .line 389
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* builtin */
            invokespecial com.oracle.truffle.js.nodes.function.JSBuiltinNode.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;)V
         1: .line 390
            return
        end local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
        end local 1 // com.oracle.truffle.js.runtime.JSContext context
        end local 0 // com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/oracle/truffle/js/builtins/DebugBuiltins$DebugPrintObjectNode;
            0    2     1  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    2     2  builtin  Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
    MethodParameters:
         Name  Flags
      context  
      builtin  

  protected java.lang.Object printObject(com.oracle.truffle.api.object.DynamicObject, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
        start local 2 // java.lang.Object level0
         0: .line 395
            aload 2 /* level0 */
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 2 /* level0 */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.toInt32:(Ljava/lang/Object;)I
      StackMap locals:
      StackMap stack: int
         2: istore 3 /* level */
        start local 3 // int level
         3: .line 396
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode.getContext:()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.getOutputWriter:()Ljava/io/PrintWriter;
            aload 0 /* this */
            aload 1 /* object */
            iconst_0
            iload 3 /* level */
            invokevirtual com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode.debugPrint:(Lcom/oracle/truffle/api/object/DynamicObject;II)Ljava/lang/String;
            invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
         4: .line 397
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            areturn
        end local 3 // int level
        end local 2 // java.lang.Object level0
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/js/builtins/DebugBuiltins$DebugPrintObjectNode;
            0    5     1  object  Lcom/oracle/truffle/api/object/DynamicObject;
            0    5     2  level0  Ljava/lang/Object;
            3    5     3   level  I
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
        Name  Flags
      object  
      level0  

  protected java.lang.String debugPrint(com.oracle.truffle.api.object.DynamicObject, int, int);
    descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;II)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=10, args_size=4
        start local 0 // com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode this
        start local 1 // com.oracle.truffle.api.object.DynamicObject object
        start local 2 // int level
        start local 3 // int levelStop
         0: .line 402
            aload 1 /* object */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.enumerableOwnNames:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/util/List;
            astore 4 /* properties */
        start local 4 // java.util.List properties
         1: .line 403
            new java.lang.StringBuilder
            dup
            aload 4 /* properties */
            invokeinterface java.util.List.size:()I
            bipush 10
            imul
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 5 /* sb */
        start local 5 // java.lang.StringBuilder sb
         2: .line 404
            aload 5 /* sb */
            ldc "{\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 405
            aload 4 /* properties */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 24
      StackMap locals: com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode com.oracle.truffle.api.object.DynamicObject int int java.util.List java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
         4: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 6 /* key */
        start local 6 // java.lang.String key
         5: .line 406
            aload 5 /* sb */
            iload 2 /* level */
            iconst_1
            iadd
            invokestatic com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode.indent:(Ljava/lang/StringBuilder;I)Ljava/lang/StringBuilder;
            pop
         6: .line 407
            aload 1 /* object */
            aload 6 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getOwnProperty:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Lcom/oracle/truffle/js/runtime/objects/PropertyDescriptor;
            astore 8 /* desc */
        start local 8 // com.oracle.truffle.js.runtime.objects.PropertyDescriptor desc
         7: .line 410
            aload 5 /* sb */
            aload 6 /* key */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 411
            aload 8 /* desc */
            invokevirtual com.oracle.truffle.js.runtime.objects.PropertyDescriptor.isDataDescriptor:()Z
            ifeq 21
         9: .line 412
            aload 1 /* object */
            aload 6 /* key */
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.get:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
            astore 9 /* value */
        start local 9 // java.lang.Object value
        10: .line 413
            aload 9 /* value */
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.isJSDynamicObject:(Ljava/lang/Object;)Z
            ifeq 19
        11: .line 414
            aload 9 /* value */
            invokestatic com.oracle.truffle.js.nodes.JSGuards.isJSOrdinaryObject:(Ljava/lang/Object;)Z
            ifne 12
            aload 9 /* value */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSGlobal.isJSGlobalObject:(Ljava/lang/Object;)Z
            ifeq 18
      StackMap locals: com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode com.oracle.truffle.api.object.DynamicObject int int java.util.List java.lang.StringBuilder java.lang.String java.util.Iterator com.oracle.truffle.js.runtime.objects.PropertyDescriptor java.lang.Object
      StackMap stack:
        12: aload 6 /* key */
            ldc "constructor"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
        13: .line 415
            iload 2 /* level */
            iload 3 /* levelStop */
            if_icmpge 16
            aload 6 /* key */
            ldc "constructor"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 16
        14: .line 416
            aload 0 /* this */
            aload 9 /* value */
            checkcast com.oracle.truffle.api.object.DynamicObject
            iload 2 /* level */
            iconst_1
            iadd
            iload 3 /* levelStop */
            invokevirtual com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode.debugPrint:(Lcom/oracle/truffle/api/object/DynamicObject;II)Ljava/lang/String;
            astore 9 /* value */
        15: .line 417
            goto 19
        16: .line 418
      StackMap locals:
      StackMap stack:
            ldc "{...}"
            astore 9 /* value */
        17: .line 420
            goto 19
        18: .line 421
      StackMap locals:
      StackMap stack:
            aload 9 /* value */
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getJSClass:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/builtins/JSClass;
            astore 9 /* value */
        19: .line 424
      StackMap locals:
      StackMap stack:
            aload 5 /* sb */
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        20: .line 425
            aload 5 /* sb */
            aload 9 /* value */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
        end local 9 // java.lang.Object value
        21: .line 427
      StackMap locals:
      StackMap stack:
            aload 6 /* key */
            aload 4 /* properties */
            aload 4 /* properties */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 23
        22: .line 428
            aload 5 /* sb */
            bipush 44
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        23: .line 430
      StackMap locals:
      StackMap stack:
            aload 5 /* sb */
            bipush 10
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        end local 8 // com.oracle.truffle.js.runtime.objects.PropertyDescriptor desc
        end local 6 // java.lang.String key
        24: .line 405
      StackMap locals: com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode com.oracle.truffle.api.object.DynamicObject int int java.util.List java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        25: .line 432
            aload 5 /* sb */
            iload 2 /* level */
            invokestatic com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode.indent:(Ljava/lang/StringBuilder;I)Ljava/lang/StringBuilder;
            pop
        26: .line 433
            aload 5 /* sb */
            bipush 125
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        27: .line 434
            aload 5 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 5 // java.lang.StringBuilder sb
        end local 4 // java.util.List properties
        end local 3 // int levelStop
        end local 2 // int level
        end local 1 // com.oracle.truffle.api.object.DynamicObject object
        end local 0 // com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   28     0        this  Lcom/oracle/truffle/js/builtins/DebugBuiltins$DebugPrintObjectNode;
            0   28     1      object  Lcom/oracle/truffle/api/object/DynamicObject;
            0   28     2       level  I
            0   28     3   levelStop  I
            1   28     4  properties  Ljava/util/List<Ljava/lang/String;>;
            2   28     5          sb  Ljava/lang/StringBuilder;
            5   24     6         key  Ljava/lang/String;
            7   24     8        desc  Lcom/oracle/truffle/js/runtime/objects/PropertyDescriptor;
           10   21     9       value  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
           Name  Flags
      object     
      level      
      levelStop  

  private static java.lang.StringBuilder indent(java.lang.StringBuilder, int);
    descriptor: (Ljava/lang/StringBuilder;I)Ljava/lang/StringBuilder;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.StringBuilder sb
        start local 1 // int level
         0: .line 438
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 4
         2: .line 439
      StackMap locals: int
      StackMap stack:
            aload 0 /* sb */
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         3: .line 438
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         4: iload 2 /* i */
            iload 1 /* level */
            if_icmplt 2
        end local 2 // int i
         5: .line 441
            aload 0 /* sb */
            areturn
        end local 1 // int level
        end local 0 // java.lang.StringBuilder sb
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0     sb  Ljava/lang/StringBuilder;
            0    6     1  level  I
            1    5     2      i  I
    MethodParameters:
       Name  Flags
      sb     
      level  
}
SourceFile: "DebugBuiltins.java"
NestHost: com.oracle.truffle.js.builtins.DebugBuiltins
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract DebugPrintObjectNode = com.oracle.truffle.js.builtins.DebugBuiltins$DebugPrintObjectNode of com.oracle.truffle.js.builtins.DebugBuiltins