public abstract class com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode extends com.oracle.truffle.js.builtins.JSONBuiltins$JSONOperation
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode
  super_class: com.oracle.truffle.js.builtins.JSONBuiltins$JSONOperation
{
  private com.oracle.truffle.js.builtins.helper.JSONStringifyStringNode jsonStringifyStringNode;
    descriptor: Lcom/oracle/truffle/js/builtins/helper/JSONStringifyStringNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.js.nodes.access.CreateDataPropertyNode createWrapperPropertyNode;
    descriptor: Lcom/oracle/truffle/js/nodes/access/CreateDataPropertyNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.js.nodes.cast.JSToIntegerAsIntNode toIntegerNode;
    descriptor: Lcom/oracle/truffle/js/nodes/cast/JSToIntegerAsIntNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.js.nodes.cast.JSToNumberNode toNumberNode;
    descriptor: Lcom/oracle/truffle/js/nodes/cast/JSToNumberNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.js.nodes.unary.JSIsArrayNode isArrayNode;
    descriptor: Lcom/oracle/truffle/js/nodes/unary/JSIsArrayNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private com.oracle.truffle.js.nodes.unary.IsCallableNode isCallableNode;
    descriptor: Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private final com.oracle.truffle.api.profiles.BranchProfile spaceIsStringBranch;
    descriptor: Lcom/oracle/truffle/api/profiles/BranchProfile;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.api.profiles.ConditionProfile spaceIsUndefinedProfile;
    descriptor: Lcom/oracle/truffle/api/profiles/ConditionProfile;
    flags: (0x0012) ACC_PRIVATE, 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 197
            ldc Lcom/oracle/truffle/js/builtins/JSONBuiltins;
            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.builtins.JSONBuiltins$JSONStringifyNode.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  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.JSONBuiltins$JSONStringifyNode this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
        start local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
         0: .line 200
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* builtin */
            invokespecial com.oracle.truffle.js.builtins.JSONBuiltins$JSONOperation.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;)V
         1: .line 209
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.profiles.BranchProfile.create:()Lcom/oracle/truffle/api/profiles/BranchProfile;
            putfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.spaceIsStringBranch:Lcom/oracle/truffle/api/profiles/BranchProfile;
         2: .line 210
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.profiles.ConditionProfile.createBinaryProfile:()Lcom/oracle/truffle/api/profiles/ConditionProfile;
            putfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.spaceIsUndefinedProfile:Lcom/oracle/truffle/api/profiles/ConditionProfile;
         3: .line 201
            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.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;
            0    4     1  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0    4     2  builtin  Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
    MethodParameters:
         Name  Flags
      context  
      builtin  

  protected java.lang.Object jsonStr(java.lang.Object, java.lang.String, com.oracle.truffle.api.object.DynamicObject);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
        start local 1 // java.lang.Object jsonData
        start local 2 // java.lang.String key
        start local 3 // com.oracle.truffle.api.object.DynamicObject holder
         0: .line 213
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.jsonStringifyStringNode:Lcom/oracle/truffle/js/builtins/helper/JSONStringifyStringNode;
            ifnonnull 3
         1: .line 214
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 215
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokestatic com.oracle.truffle.js.builtins.helper.JSONStringifyStringNode.create:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/builtins/helper/JSONStringifyStringNode;
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.builtins.helper.JSONStringifyStringNode
            putfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.jsonStringifyStringNode:Lcom/oracle/truffle/js/builtins/helper/JSONStringifyStringNode;
         3: .line 217
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.jsonStringifyStringNode:Lcom/oracle/truffle/js/builtins/helper/JSONStringifyStringNode;
            aload 1 /* jsonData */
            aload 2 /* key */
            aload 3 /* holder */
            invokevirtual com.oracle.truffle.js.builtins.helper.JSONStringifyStringNode.execute:(Ljava/lang/Object;Ljava/lang/String;Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/lang/Object;
            areturn
        end local 3 // com.oracle.truffle.api.object.DynamicObject holder
        end local 2 // java.lang.String key
        end local 1 // java.lang.Object jsonData
        end local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;
            0    4     1  jsonData  Ljava/lang/Object;
            0    4     2       key  Ljava/lang/String;
            0    4     3    holder  Lcom/oracle/truffle/api/object/DynamicObject;
    MethodParameters:
          Name  Flags
      jsonData  
      key       
      holder    

  protected boolean isArray(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
        start local 1 // java.lang.Object replacer
         0: .line 222
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.isArrayNode:Lcom/oracle/truffle/js/nodes/unary/JSIsArrayNode;
            ifnonnull 3
         1: .line 223
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 224
            aload 0 /* this */
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.unary.JSIsArrayNode.createIsArrayLike:()Lcom/oracle/truffle/js/nodes/unary/JSIsArrayNode;
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.nodes.unary.JSIsArrayNode
            putfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.isArrayNode:Lcom/oracle/truffle/js/nodes/unary/JSIsArrayNode;
         3: .line 226
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.isArrayNode:Lcom/oracle/truffle/js/nodes/unary/JSIsArrayNode;
            aload 1 /* replacer */
            invokevirtual com.oracle.truffle.js.nodes.unary.JSIsArrayNode.execute:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.Object replacer
        end local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;
            0    4     1  replacer  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      replacer  

  protected boolean isCallable(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
        start local 1 // java.lang.Object obj
         0: .line 230
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.isCallableNode:Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
            ifnonnull 3
         1: .line 231
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 232
            aload 0 /* this */
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.unary.IsCallableNode.create:()Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.nodes.unary.IsCallableNode
            putfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.isCallableNode:Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
         3: .line 234
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.isCallableNode:Lcom/oracle/truffle/js/nodes/unary/IsCallableNode;
            aload 1 /* obj */
            invokevirtual com.oracle.truffle.js.nodes.unary.IsCallableNode.executeBoolean:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.Object obj
        end local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;
            0    4     1   obj  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      obj   

  protected java.lang.Object stringify(java.lang.Object, com.oracle.truffle.api.object.DynamicObject, java.lang.Object);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
        start local 1 // java.lang.Object value
        start local 2 // com.oracle.truffle.api.object.DynamicObject replacerFn
        start local 3 // java.lang.Object spaceParam
         0: .line 239
            getstatic com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.$assertionsDisabled:Z
            ifne 1
            aload 2 /* replacerFn */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isCallable:(Ljava/lang/Object;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 240
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* value */
            aload 3 /* spaceParam */
            aload 2 /* replacerFn */
            aconst_null
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.stringifyIntl:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/util/List;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Object spaceParam
        end local 2 // com.oracle.truffle.api.object.DynamicObject replacerFn
        end local 1 // java.lang.Object value
        end local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;
            0    2     1       value  Ljava/lang/Object;
            0    2     2  replacerFn  Lcom/oracle/truffle/api/object/DynamicObject;
            0    2     3  spaceParam  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isCallable(replacerFn)"})
    MethodParameters:
            Name  Flags
      value       
      replacerFn  
      spaceParam  

  protected java.lang.Object stringifyReplacerArray(java.lang.Object, com.oracle.truffle.api.object.DynamicObject, java.lang.Object);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=9, args_size=4
        start local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
        start local 1 // java.lang.Object value
        start local 2 // com.oracle.truffle.api.object.DynamicObject replacerObj
        start local 3 // java.lang.Object spaceParam
         0: .line 245
            aload 2 /* replacerObj */
            ldc "length"
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.get:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.toLength:(Ljava/lang/Object;)J
            l2i
            istore 4 /* len */
        start local 4 // int len
         1: .line 246
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* replacerList */
        start local 5 // java.util.List replacerList
         2: .line 247
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         3: goto 14
         4: .line 249
      StackMap locals: int java.util.List int
      StackMap stack:
            aload 2 /* replacerObj */
            iload 6 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.toString:(Ljava/lang/Object;)Ljava/lang/String;
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.get:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* v */
        start local 7 // java.lang.Object v
         5: .line 250
            aconst_null
            astore 8 /* item */
        start local 8 // java.lang.String item
         6: .line 251
            aload 7 /* v */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isString:(Ljava/lang/Object;)Z
            ifeq 9
         7: .line 252
            aload 7 /* v */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.toStringIsString:(Ljava/lang/Object;)Ljava/lang/String;
            astore 8 /* item */
         8: .line 253
            goto 11
      StackMap locals: java.lang.Object java.lang.String
      StackMap stack:
         9: aload 7 /* v */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isNumber:(Ljava/lang/Object;)Z
            ifne 10
            aload 7 /* v */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSNumber.isJSNumber:(Ljava/lang/Object;)Z
            ifne 10
            aload 7 /* v */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSString.isJSString:(Ljava/lang/Object;)Z
            ifeq 11
        10: .line 254
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* v */
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.toString:(Ljava/lang/Object;)Ljava/lang/String;
            astore 8 /* item */
        11: .line 256
      StackMap locals:
      StackMap stack:
            aload 8 /* item */
            ifnull 13
        12: .line 257
            aload 5 /* replacerList */
            aload 8 /* item */
            invokestatic com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.addToReplacer:(Ljava/util/List;Ljava/lang/String;)V
        end local 8 // java.lang.String item
        end local 7 // java.lang.Object v
        13: .line 247
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 6 /* i */
            iload 4 /* len */
            if_icmplt 4
        end local 6 // int i
        15: .line 260
            aload 0 /* this */
            aload 1 /* value */
            aload 3 /* spaceParam */
            aconst_null
            aload 5 /* replacerList */
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.stringifyIntl:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/util/List;)Ljava/lang/Object;
            areturn
        end local 5 // java.util.List replacerList
        end local 4 // int len
        end local 3 // java.lang.Object spaceParam
        end local 2 // com.oracle.truffle.api.object.DynamicObject replacerObj
        end local 1 // java.lang.Object value
        end local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   16     0          this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;
            0   16     1         value  Ljava/lang/Object;
            0   16     2   replacerObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0   16     3    spaceParam  Ljava/lang/Object;
            1   16     4           len  I
            2   16     5  replacerList  Ljava/util/List<Ljava/lang/String;>;
            3   15     6             i  I
            5   13     7             v  Ljava/lang/Object;
            6   13     8          item  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isArray(replacerObj)"})
    MethodParameters:
             Name  Flags
      value        
      replacerObj  
      spaceParam   

  private static void addToReplacer(java.util.List<java.lang.String>, java.lang.String);
    descriptor: (Ljava/util/List;Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.util.List replacerList
        start local 1 // java.lang.String item
         0: .line 265
            aload 0 /* replacerList */
            aload 1 /* item */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 266
            aload 0 /* replacerList */
            aload 1 /* item */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 268
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String item
        end local 0 // java.util.List replacerList
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  replacerList  Ljava/util/List<Ljava/lang/String;>;
            0    3     1          item  Ljava/lang/String;
    Signature: (Ljava/util/List<Ljava/lang/String;>;Ljava/lang/String;)V
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
              Name  Flags
      replacerList  
      item          

  protected java.lang.Object stringifyAStringNoReplacer(java.lang.Object, java.lang.Object, java.lang.Object, com.oracle.truffle.js.runtime.util.StringBuilderProfile);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/js/runtime/util/StringBuilderProfile;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=5
        start local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
        start local 1 // java.lang.Object value
        start local 2 // java.lang.Object replacer
        start local 3 // java.lang.Object spaceParam
        start local 4 // com.oracle.truffle.js.runtime.util.StringBuilderProfile stringBuilderProfile
         0: .line 275
            aload 1 /* value */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.toStringIsString:(Ljava/lang/Object;)Ljava/lang/String;
            astore 5 /* str */
        start local 5 // java.lang.String str
         1: .line 276
            new java.lang.StringBuilder
            dup
            aload 5 /* str */
            invokevirtual java.lang.String.length:()I
            bipush 8
            iadd
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 6 /* builder */
        start local 6 // java.lang.StringBuilder builder
         2: .line 277
            aload 4 /* stringBuilderProfile */
            aload 6 /* builder */
            aload 5 /* str */
            invokestatic com.oracle.truffle.js.builtins.helper.JSONStringifyStringNode.jsonQuote:(Lcom/oracle/truffle/js/runtime/util/StringBuilderProfile;Ljava/lang/StringBuilder;Ljava/lang/String;)V
         3: .line 278
            aload 4 /* stringBuilderProfile */
            aload 6 /* builder */
            invokevirtual com.oracle.truffle.js.runtime.util.StringBuilderProfile.toString:(Ljava/lang/StringBuilder;)Ljava/lang/String;
            areturn
        end local 6 // java.lang.StringBuilder builder
        end local 5 // java.lang.String str
        end local 4 // com.oracle.truffle.js.runtime.util.StringBuilderProfile stringBuilderProfile
        end local 3 // java.lang.Object spaceParam
        end local 2 // java.lang.Object replacer
        end local 1 // java.lang.Object value
        end local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    4     0                  this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;
            0    4     1                 value  Ljava/lang/Object;
            0    4     2              replacer  Ljava/lang/Object;
            0    4     3            spaceParam  Ljava/lang/Object;
            0    4     4  stringBuilderProfile  Lcom/oracle/truffle/js/runtime/util/StringBuilderProfile;
            1    4     5                   str  Ljava/lang/String;
            2    4     6               builder  Ljava/lang/StringBuilder;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"isString(value)", "!isCallable(replacer)", "!isArray(replacer)"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        com.oracle.truffle.api.dsl.Cached(value = "createStringBuilderProfile()")
    MethodParameters:
                      Name  Flags
      value                 
      replacer              
      spaceParam            
      stringBuilderProfile  

  protected com.oracle.truffle.js.runtime.util.StringBuilderProfile createStringBuilderProfile();
    descriptor: ()Lcom/oracle/truffle/js/runtime/util/StringBuilderProfile;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
         0: .line 282
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getStringLengthLimit:()I
            invokestatic com.oracle.truffle.js.runtime.util.StringBuilderProfile.create:(I)Lcom/oracle/truffle/js/runtime/util/StringBuilderProfile;
            areturn
        end local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;

  protected java.lang.Object stringifyNoReplacer(java.lang.Object, java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
        start local 1 // java.lang.Object value
        start local 2 // java.lang.Object replacer
        start local 3 // java.lang.Object spaceParam
         0: .line 288
            aload 0 /* this */
            aload 1 /* value */
            aload 3 /* spaceParam */
            aconst_null
            aconst_null
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.stringifyIntl:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/util/List;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Object spaceParam
        end local 2 // java.lang.Object replacer
        end local 1 // java.lang.Object value
        end local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;
            0    1     1       value  Ljava/lang/Object;
            0    1     2    replacer  Ljava/lang/Object;
            0    1     3  spaceParam  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"!isString(value)", "!isCallable(replacer)", "!isArray(replacer)"})
    MethodParameters:
            Name  Flags
      value       
      replacer    
      spaceParam  

  private  stringifyIntl(, , com.oracle.truffle.api.object.DynamicObject, java.util.List<java.lang.String>);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/util/List;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=5
        start local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
        start local 1 // java.lang.Object value
        start local 2 // java.lang.Object spaceParam
        start local 3 // com.oracle.truffle.api.object.DynamicObject replacerFnObj
        start local 4 // java.util.List replacerList
         0: .line 292
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.spaceIsUndefinedProfile:Lcom/oracle/truffle/api/profiles/ConditionProfile;
            aload 2 /* spaceParam */
            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: com.oracle.truffle.api.profiles.ConditionProfile
         1: iconst_0
      StackMap locals: com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode java.lang.Object java.lang.Object com.oracle.truffle.api.object.DynamicObject java.util.List
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
         2: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 3
            ldc ""
            goto 4
      StackMap locals:
      StackMap stack:
         3: aload 0 /* this */
            aload 2 /* spaceParam */
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.getGap:(Ljava/lang/Object;)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
         4: astore 5 /* gap */
        start local 5 // java.lang.String gap
         5: .line 294
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSOrdinary.create:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/api/object/DynamicObject;
            astore 6 /* wrapper */
        start local 6 // com.oracle.truffle.api.object.DynamicObject wrapper
         6: .line 295
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.createWrapperPropertyNode:Lcom/oracle/truffle/js/nodes/access/CreateDataPropertyNode;
            ifnonnull 9
         7: .line 296
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         8: .line 297
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            ldc ""
            invokestatic com.oracle.truffle.js.nodes.access.CreateDataPropertyNode.create:(Lcom/oracle/truffle/js/runtime/JSContext;Ljava/lang/Object;)Lcom/oracle/truffle/js/nodes/access/CreateDataPropertyNode;
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.nodes.access.CreateDataPropertyNode
            putfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.createWrapperPropertyNode:Lcom/oracle/truffle/js/nodes/access/CreateDataPropertyNode;
         9: .line 299
      StackMap locals: java.lang.String com.oracle.truffle.api.object.DynamicObject
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.createWrapperPropertyNode:Lcom/oracle/truffle/js/nodes/access/CreateDataPropertyNode;
            aload 6 /* wrapper */
            aload 1 /* value */
            invokevirtual com.oracle.truffle.js.nodes.access.CreateDataPropertyNode.executeVoid:(Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 300
            aload 0 /* this */
            new com.oracle.truffle.js.builtins.helper.JSONData
            dup
            aload 5 /* gap */
            aload 3 /* replacerFnObj */
            aload 4 /* replacerList */
            invokespecial com.oracle.truffle.js.builtins.helper.JSONData.<init>:(Ljava/lang/String;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/util/List;)V
            ldc ""
            aload 6 /* wrapper */
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.jsonStr:(Ljava/lang/Object;Ljava/lang/String;Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/lang/Object;
            areturn
        end local 6 // com.oracle.truffle.api.object.DynamicObject wrapper
        end local 5 // java.lang.String gap
        end local 4 // java.util.List replacerList
        end local 3 // com.oracle.truffle.api.object.DynamicObject replacerFnObj
        end local 2 // java.lang.Object spaceParam
        end local 1 // java.lang.Object value
        end local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0           this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;
            0   11     1          value  Ljava/lang/Object;
            0   11     2     spaceParam  Ljava/lang/Object;
            0   11     3  replacerFnObj  Lcom/oracle/truffle/api/object/DynamicObject;
            0   11     4   replacerList  Ljava/util/List<Ljava/lang/String;>;
            5   11     5            gap  Ljava/lang/String;
            6   11     6        wrapper  Lcom/oracle/truffle/api/object/DynamicObject;
    Signature: (Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/util/List<Ljava/lang/String;>;)Ljava/lang/Object;
    MethodParameters:
               Name  Flags
      value          
      spaceParam     
      replacerFnObj  
      replacerList   

  private java.lang.String getGap(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
        start local 1 // java.lang.Object spaceParam
         0: .line 304
            aload 1 /* spaceParam */
            astore 2 /* space */
        start local 2 // java.lang.Object space
         1: .line 305
            aload 2 /* space */
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.isJSDynamicObject:(Ljava/lang/Object;)Z
            ifeq 7
         2: .line 306
            aload 2 /* space */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSNumber.isJSNumber:(Ljava/lang/Object;)Z
            ifeq 5
         3: .line 307
            aload 0 /* this */
            aload 2 /* space */
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.toNumber:(Ljava/lang/Object;)Ljava/lang/Number;
            astore 2 /* space */
         4: .line 308
            goto 7
      StackMap locals: java.lang.Object
      StackMap stack:
         5: aload 2 /* space */
            invokestatic com.oracle.truffle.js.runtime.builtins.JSString.isJSString:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 309
            aload 0 /* this */
            aload 2 /* space */
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.toString:(Ljava/lang/Object;)Ljava/lang/String;
            astore 2 /* space */
         7: .line 312
      StackMap locals:
      StackMap stack:
            aload 2 /* space */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isNumber:(Ljava/lang/Object;)Z
            ifeq 13
         8: .line 313
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.toIntegerNode:Lcom/oracle/truffle/js/nodes/cast/JSToIntegerAsIntNode;
            ifnonnull 11
         9: .line 314
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
        10: .line 315
            aload 0 /* this */
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.cast.JSToIntegerAsIntNode.create:()Lcom/oracle/truffle/js/nodes/cast/JSToIntegerAsIntNode;
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.nodes.cast.JSToIntegerAsIntNode
            putfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.toIntegerNode:Lcom/oracle/truffle/js/nodes/cast/JSToIntegerAsIntNode;
        11: .line 317
      StackMap locals:
      StackMap stack:
            iconst_0
            bipush 10
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.toIntegerNode:Lcom/oracle/truffle/js/nodes/cast/JSToIntegerAsIntNode;
            aload 2 /* space */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToIntegerAsIntNode.executeInt:(Ljava/lang/Object;)I
            invokestatic java.lang.Math.min:(II)I
            invokestatic java.lang.Math.max:(II)I
            istore 3 /* newSpace */
        start local 3 // int newSpace
        12: .line 318
            iload 3 /* newSpace */
            invokestatic com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.makeGap:(I)Ljava/lang/String;
            areturn
        end local 3 // int newSpace
        13: .line 319
      StackMap locals:
      StackMap stack:
            aload 2 /* space */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.isString:(Ljava/lang/Object;)Z
            ifeq 16
        14: .line 320
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.spaceIsStringBranch:Lcom/oracle/truffle/api/profiles/BranchProfile;
            invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
        15: .line 321
            aload 2 /* space */
            invokestatic com.oracle.truffle.js.runtime.JSRuntime.toStringIsString:(Ljava/lang/Object;)Ljava/lang/String;
            invokestatic com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.makeGap:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        16: .line 323
      StackMap locals:
      StackMap stack:
            ldc ""
            areturn
        end local 2 // java.lang.Object space
        end local 1 // java.lang.Object spaceParam
        end local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   17     0        this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;
            0   17     1  spaceParam  Ljava/lang/Object;
            1   17     2       space  Ljava/lang/Object;
           12   13     3    newSpace  I
    MethodParameters:
            Name  Flags
      spaceParam  

  private static java.lang.String makeGap(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String spaceStr
         0: .line 329
            aload 0 /* spaceStr */
            invokevirtual java.lang.String.length:()I
            bipush 10
            if_icmpgt 2
         1: .line 330
            aload 0 /* spaceStr */
            areturn
         2: .line 332
      StackMap locals:
      StackMap stack:
            aload 0 /* spaceStr */
            iconst_0
            bipush 10
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String spaceStr
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  spaceStr  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
          Name  Flags
      spaceStr  

  private static java.lang.String makeGap(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // int spaceValue
         0: .line 338
            iload 0 /* spaceValue */
            newarray 5
            astore 1 /* ar */
        start local 1 // char[] ar
         1: .line 339
            aload 1 /* ar */
            bipush 32
            invokestatic java.util.Arrays.fill:([CC)V
         2: .line 340
            new java.lang.String
            dup
            aload 1 /* ar */
            invokespecial java.lang.String.<init>:([C)V
            areturn
        end local 1 // char[] ar
        end local 0 // int spaceValue
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0  spaceValue  I
            1    3     1          ar  [C
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
            Name  Flags
      spaceValue  

  protected java.lang.Number toNumber(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Number;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
        start local 1 // java.lang.Object target
         0: .line 344
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.toNumberNode:Lcom/oracle/truffle/js/nodes/cast/JSToNumberNode;
            ifnonnull 3
         1: .line 345
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         2: .line 346
            aload 0 /* this */
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.cast.JSToNumberNode.create:()Lcom/oracle/truffle/js/nodes/cast/JSToNumberNode;
            invokevirtual com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.insert:(Lcom/oracle/truffle/api/nodes/Node;)Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.js.nodes.cast.JSToNumberNode
            putfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.toNumberNode:Lcom/oracle/truffle/js/nodes/cast/JSToNumberNode;
         3: .line 348
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode.toNumberNode:Lcom/oracle/truffle/js/nodes/cast/JSToNumberNode;
            aload 1 /* target */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToNumberNode.executeNumber:(Ljava/lang/Object;)Ljava/lang/Number;
            areturn
        end local 1 // java.lang.Object target
        end local 0 // com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/js/builtins/JSONBuiltins$JSONStringifyNode;
            0    4     1  target  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      target  
}
SourceFile: "JSONBuiltins.java"
NestHost: com.oracle.truffle.js.builtins.JSONBuiltins
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
  public abstract JSONOperation = com.oracle.truffle.js.builtins.JSONBuiltins$JSONOperation of com.oracle.truffle.js.builtins.JSONBuiltins
  public abstract JSONStringifyNode = com.oracle.truffle.js.builtins.JSONBuiltins$JSONStringifyNode of com.oracle.truffle.js.builtins.JSONBuiltins