public abstract class com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode 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.StringFunctionBuiltins$StringRawNode
  super_class: com.oracle.truffle.js.nodes.function.JSBuiltinNode
{
  private com.oracle.truffle.js.nodes.cast.JSToObjectNode templateToObjectNode;
    descriptor: Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

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

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

  private com.oracle.truffle.js.nodes.array.JSGetLengthNode getRawLengthNode;
    descriptor: Lcom/oracle/truffle/js/nodes/array/JSGetLengthNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

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

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

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

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

  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=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode this
        start local 1 // com.oracle.truffle.js.runtime.JSContext context
        start local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
         0: .line 202
            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 199
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.profiles.ConditionProfile.createBinaryProfile:()Lcom/oracle/truffle/api/profiles/ConditionProfile;
            putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.emptyProf:Lcom/oracle/truffle/api/profiles/ConditionProfile;
         2: .line 203
            aload 0 /* this */
            aload 1 /* context */
            invokestatic com.oracle.truffle.js.nodes.cast.JSToObjectNode.createToObject:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.templateToObjectNode:Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
         3: .line 204
            aload 0 /* this */
            aload 1 /* context */
            invokestatic com.oracle.truffle.js.nodes.cast.JSToObjectNode.createToObject:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.rawToObjectNode:Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
         4: .line 205
            aload 0 /* this */
            ldc "raw"
            iconst_0
            aload 1 /* context */
            invokestatic com.oracle.truffle.js.nodes.access.PropertyGetNode.create:(Ljava/lang/Object;ZLcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getRawNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
         5: .line 206
            aload 0 /* this */
            aload 1 /* context */
            invokestatic com.oracle.truffle.js.nodes.array.JSGetLengthNode.create:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/array/JSGetLengthNode;
            putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getRawLengthNode:Lcom/oracle/truffle/js/nodes/array/JSGetLengthNode;
         6: .line 207
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.cast.JSToStringNode.create:()Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
            putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.segToStringNode:Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
         7: .line 208
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.cast.JSToStringNode.create:()Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
            putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.subToStringNode:Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
         8: .line 209
            aload 0 /* this */
            aload 1 /* context */
            invokestatic com.oracle.truffle.js.nodes.access.ReadElementNode.create:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/ReadElementNode;
            putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.readRawElementNode:Lcom/oracle/truffle/js/nodes/access/ReadElementNode;
         9: .line 210
            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.StringFunctionBuiltins$StringRawNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lcom/oracle/truffle/js/builtins/StringFunctionBuiltins$StringRawNode;
            0   10     1  context  Lcom/oracle/truffle/js/runtime/JSContext;
            0   10     2  builtin  Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
    MethodParameters:
         Name  Flags
      context  
      builtin  

  protected java.lang.String raw(java.lang.Object, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=12, args_size=3
        start local 0 // com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode this
        start local 1 // java.lang.Object template
        start local 2 // java.lang.Object[] substitutions
         0: .line 214
            aload 2 /* substitutions */
            arraylength
            istore 3 /* numberOfSubstitutions */
        start local 3 // int numberOfSubstitutions
         1: .line 215
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.templateToObjectNode:Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            aload 1 /* template */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.execute:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* cooked */
        start local 4 // java.lang.Object cooked
         2: .line 216
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.rawToObjectNode:Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getRawNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
            aload 4 /* cooked */
            invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode.getValue:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.execute:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* raw */
        start local 5 // java.lang.Object raw
         3: .line 218
            aload 0 /* this */
            aload 5 /* raw */
            invokevirtual com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getRawLength:(Ljava/lang/Object;)I
            istore 6 /* literalSegments */
        start local 6 // int literalSegments
         4: .line 219
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.emptyProf:Lcom/oracle/truffle/api/profiles/ConditionProfile;
            iload 6 /* literalSegments */
            ifgt 5
            iconst_1
            goto 6
      StackMap locals: com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode java.lang.Object java.lang.Object[] int java.lang.Object java.lang.Object int
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
         5: iconst_0
      StackMap locals: com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode java.lang.Object java.lang.Object[] int java.lang.Object java.lang.Object int
      StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
         6: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
            ifeq 8
         7: .line 220
            ldc ""
            areturn
         8: .line 223
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 7 /* result */
        start local 7 // java.lang.StringBuilder result
         9: .line 224
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        10: .line 225
      StackMap locals: java.lang.StringBuilder int
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.readRawElementNode:Lcom/oracle/truffle/js/nodes/access/ReadElementNode;
            aload 5 /* raw */
            iload 8 /* i */
            invokevirtual com.oracle.truffle.js.nodes.access.ReadElementNode.executeWithTargetAndIndex:(Ljava/lang/Object;I)Ljava/lang/Object;
            astore 9 /* rawElement */
        start local 9 // java.lang.Object rawElement
        11: .line 226
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.segToStringNode:Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
            aload 9 /* rawElement */
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToStringNode.executeString:(Ljava/lang/Object;)Ljava/lang/String;
            astore 10 /* nextSeg */
        start local 10 // java.lang.String nextSeg
        12: .line 227
            aload 0 /* this */
            aload 7 /* result */
            aload 10 /* nextSeg */
            invokevirtual com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.appendChecked:(Ljava/lang/StringBuilder;Ljava/lang/String;)V
        13: .line 228
            iload 8 /* i */
            iconst_1
            iadd
            iload 6 /* literalSegments */
            if_icmpne 15
        14: .line 229
            goto 19
        15: .line 231
      StackMap locals: java.lang.Object java.lang.String
      StackMap stack:
            iload 8 /* i */
            iload 3 /* numberOfSubstitutions */
            if_icmpge 18
        16: .line 232
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.subToStringNode:Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
            aload 2 /* substitutions */
            iload 8 /* i */
            aaload
            invokevirtual com.oracle.truffle.js.nodes.cast.JSToStringNode.executeString:(Ljava/lang/Object;)Ljava/lang/String;
            astore 11 /* nextSub */
        start local 11 // java.lang.String nextSub
        17: .line 233
            aload 0 /* this */
            aload 7 /* result */
            aload 11 /* nextSub */
            invokevirtual com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.appendChecked:(Ljava/lang/StringBuilder;Ljava/lang/String;)V
        end local 11 // java.lang.String nextSub
        end local 10 // java.lang.String nextSeg
        end local 9 // java.lang.Object rawElement
        18: .line 224
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
            goto 10
        end local 8 // int i
        19: .line 236
      StackMap locals:
      StackMap stack:
            aload 7 /* result */
            invokestatic com.oracle.truffle.js.runtime.Boundaries.builderToString:(Ljava/lang/StringBuilder;)Ljava/lang/String;
            areturn
        end local 7 // java.lang.StringBuilder result
        end local 6 // int literalSegments
        end local 5 // java.lang.Object raw
        end local 4 // java.lang.Object cooked
        end local 3 // int numberOfSubstitutions
        end local 2 // java.lang.Object[] substitutions
        end local 1 // java.lang.Object template
        end local 0 // com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   20     0                   this  Lcom/oracle/truffle/js/builtins/StringFunctionBuiltins$StringRawNode;
            0   20     1               template  Ljava/lang/Object;
            0   20     2          substitutions  [Ljava/lang/Object;
            1   20     3  numberOfSubstitutions  I
            2   20     4                 cooked  Ljava/lang/Object;
            3   20     5                    raw  Ljava/lang/Object;
            4   20     6        literalSegments  I
            9   20     7                 result  Ljava/lang/StringBuilder;
           10   19     8                      i  I
           11   18     9             rawElement  Ljava/lang/Object;
           12   18    10                nextSeg  Ljava/lang/String;
           17   18    11                nextSub  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    MethodParameters:
               Name  Flags
      template       
      substitutions  

  private int getRawLength(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode this
        start local 1 // java.lang.Object raw
         0: .line 240
            aload 0 /* this */
            getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getRawLengthNode:Lcom/oracle/truffle/js/nodes/array/JSGetLengthNode;
            aload 1 /* raw */
            invokevirtual com.oracle.truffle.js.nodes.array.JSGetLengthNode.executeLong:(Ljava/lang/Object;)J
            lstore 2 /* length */
        start local 2 // long length
         1: .line 242
            lload 2 /* length */
            invokestatic java.lang.Math.toIntExact:(J)I
         2: ireturn
         3: .line 243
      StackMap locals: com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode java.lang.Object long
      StackMap stack: java.lang.ArithmeticException
            pop
         4: .line 244
            iconst_0
            ireturn
        end local 2 // long length
        end local 1 // java.lang.Object raw
        end local 0 // com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/js/builtins/StringFunctionBuiltins$StringRawNode;
            0    5     1     raw  Ljava/lang/Object;
            1    5     2  length  J
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.ArithmeticException
    MethodParameters:
      Name  Flags
      raw   

  private void appendChecked(java.lang.StringBuilder, java.lang.String);
    descriptor: (Ljava/lang/StringBuilder;Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode this
        start local 1 // java.lang.StringBuilder result
        start local 2 // java.lang.String str
         0: .line 249
            aload 1 /* result */
            invokevirtual java.lang.StringBuilder.length:()I
            aload 2 /* str */
            invokevirtual java.lang.String.length:()I
            iadd
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getStringLengthLimit:()I
            if_icmple 3
         1: .line 250
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
         2: .line 251
            invokestatic com.oracle.truffle.js.runtime.Errors.createRangeErrorInvalidStringLength:()Lcom/oracle/truffle/js/runtime/JSException;
            athrow
         3: .line 253
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            aload 2 /* str */
            invokestatic com.oracle.truffle.js.runtime.Boundaries.builderAppend:(Ljava/lang/StringBuilder;Ljava/lang/String;)V
         4: .line 254
            return
        end local 2 // java.lang.String str
        end local 1 // java.lang.StringBuilder result
        end local 0 // com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/js/builtins/StringFunctionBuiltins$StringRawNode;
            0    5     1  result  Ljava/lang/StringBuilder;
            0    5     2     str  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      result  
      str     
}
SourceFile: "StringFunctionBuiltins.java"
NestHost: com.oracle.truffle.js.builtins.StringFunctionBuiltins
InnerClasses:
  public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
  public abstract StringRawNode = com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode of com.oracle.truffle.js.builtins.StringFunctionBuiltins