public class com.oracle.truffle.js.nodes.function.FunctionRootNode extends com.oracle.truffle.js.runtime.JavaScriptRealmBoundaryRootNode implements com.oracle.truffle.js.nodes.FrameDescriptorProvider, com.oracle.truffle.js.runtime.builtins.JSFunctionData$CallTargetInitializer
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.js.nodes.function.FunctionRootNode
  super_class: com.oracle.truffle.js.runtime.JavaScriptRealmBoundaryRootNode
{
  private com.oracle.truffle.js.nodes.JavaScriptNode body;
    descriptor: Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.Node$Child()

  private final com.oracle.truffle.js.runtime.builtins.JSFunctionData functionData;
    descriptor: Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.lang.String internalFunctionName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  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 65
            ldc Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.js.nodes.function.FunctionRootNode.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(com.oracle.truffle.js.nodes.function.AbstractBodyNode, com.oracle.truffle.api.frame.FrameDescriptor, com.oracle.truffle.js.runtime.builtins.JSFunctionData, com.oracle.truffle.api.source.SourceSection, java.lang.String);
    descriptor: (Lcom/oracle/truffle/js/nodes/function/AbstractBodyNode;Lcom/oracle/truffle/api/frame/FrameDescriptor;Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=6, args_size=6
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
        start local 1 // com.oracle.truffle.js.nodes.function.AbstractBodyNode body
        start local 2 // com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor
        start local 3 // com.oracle.truffle.js.runtime.builtins.JSFunctionData functionData
        start local 4 // com.oracle.truffle.api.source.SourceSection sourceSection
        start local 5 // java.lang.String internalFunctionName
         0: .line 73
            aload 0 /* this */
            aload 3 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getLanguage:()Lcom/oracle/truffle/js/lang/JavaScriptLanguage;
            aload 4 /* sourceSection */
            aload 2 /* frameDescriptor */
            invokespecial com.oracle.truffle.js.runtime.JavaScriptRealmBoundaryRootNode.<init>:(Lcom/oracle/truffle/js/lang/JavaScriptLanguage;Lcom/oracle/truffle/api/source/SourceSection;Lcom/oracle/truffle/api/frame/FrameDescriptor;)V
         1: .line 74
            aload 0 /* this */
            aload 1 /* body */
            putfield com.oracle.truffle.js.nodes.function.FunctionRootNode.body:Lcom/oracle/truffle/js/nodes/JavaScriptNode;
         2: .line 75
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.body:Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            invokevirtual com.oracle.truffle.js.nodes.JavaScriptNode.hasSourceSection:()Z
            ifne 4
         3: .line 76
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.body:Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            aload 4 /* sourceSection */
            invokevirtual com.oracle.truffle.js.nodes.JavaScriptNode.setSourceSection:(Lcom/oracle/truffle/api/source/SourceSection;)V
         4: .line 78
      StackMap locals: com.oracle.truffle.js.nodes.function.FunctionRootNode com.oracle.truffle.js.nodes.function.AbstractBodyNode com.oracle.truffle.api.frame.FrameDescriptor com.oracle.truffle.js.runtime.builtins.JSFunctionData com.oracle.truffle.api.source.SourceSection java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 3 /* functionData */
            putfield com.oracle.truffle.js.nodes.function.FunctionRootNode.functionData:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
         5: .line 79
            aload 0 /* this */
            aload 5 /* internalFunctionName */
            putfield com.oracle.truffle.js.nodes.function.FunctionRootNode.internalFunctionName:Ljava/lang/String;
         6: .line 80
            return
        end local 5 // java.lang.String internalFunctionName
        end local 4 // com.oracle.truffle.api.source.SourceSection sourceSection
        end local 3 // com.oracle.truffle.js.runtime.builtins.JSFunctionData functionData
        end local 2 // com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor
        end local 1 // com.oracle.truffle.js.nodes.function.AbstractBodyNode body
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    7     0                  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;
            0    7     1                  body  Lcom/oracle/truffle/js/nodes/function/AbstractBodyNode;
            0    7     2       frameDescriptor  Lcom/oracle/truffle/api/frame/FrameDescriptor;
            0    7     3          functionData  Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            0    7     4         sourceSection  Lcom/oracle/truffle/api/source/SourceSection;
            0    7     5  internalFunctionName  Ljava/lang/String;
    MethodParameters:
                      Name  Flags
      body                  
      frameDescriptor       
      functionData          
      sourceSection         
      internalFunctionName  

  public static com.oracle.truffle.js.nodes.function.FunctionRootNode create(com.oracle.truffle.js.nodes.function.AbstractBodyNode, com.oracle.truffle.api.frame.FrameDescriptor, com.oracle.truffle.js.runtime.builtins.JSFunctionData, com.oracle.truffle.api.source.SourceSection, java.lang.String);
    descriptor: (Lcom/oracle/truffle/js/nodes/function/AbstractBodyNode;Lcom/oracle/truffle/api/frame/FrameDescriptor;Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=6, args_size=5
        start local 0 // com.oracle.truffle.js.nodes.function.AbstractBodyNode body
        start local 1 // com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor
        start local 2 // com.oracle.truffle.js.runtime.builtins.JSFunctionData functionData
        start local 3 // com.oracle.truffle.api.source.SourceSection sourceSection
        start local 4 // java.lang.String internalFunctionName
         0: .line 83
            new com.oracle.truffle.js.nodes.function.FunctionRootNode
            dup
            aload 0 /* body */
            aload 1 /* frameDescriptor */
            aload 2 /* functionData */
            aload 3 /* sourceSection */
            aload 4 /* internalFunctionName */
            invokespecial com.oracle.truffle.js.nodes.function.FunctionRootNode.<init>:(Lcom/oracle/truffle/js/nodes/function/AbstractBodyNode;Lcom/oracle/truffle/api/frame/FrameDescriptor;Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)V
            astore 5 /* rootNode */
        start local 5 // com.oracle.truffle.js.nodes.function.FunctionRootNode rootNode
         1: .line 84
            aload 2 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getContextOptions:()Lcom/oracle/truffle/js/runtime/JSContextOptions;
            invokevirtual com.oracle.truffle.js.runtime.JSContextOptions.isTestCloneUninitialized:()Z
            ifeq 4
         2: .line 85
            getstatic com.oracle.truffle.js.nodes.function.FunctionRootNode.$assertionsDisabled:Z
            ifne 3
            aload 0 /* body */
            invokestatic com.oracle.truffle.js.nodes.JSNodeUtil.hasExactlyOneRootBodyTag:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Z
            ifne 3
            new java.lang.AssertionError
            dup
            ldc "Function does not have exactly one RootBodyTag"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         3: .line 86
      StackMap locals: com.oracle.truffle.js.nodes.function.FunctionRootNode
      StackMap stack:
            aload 5 /* rootNode */
            invokevirtual com.oracle.truffle.js.nodes.function.FunctionRootNode.cloneUninitialized:()Lcom/oracle/truffle/js/runtime/JavaScriptRootNode;
            checkcast com.oracle.truffle.js.nodes.function.FunctionRootNode
            areturn
         4: .line 88
      StackMap locals:
      StackMap stack:
            aload 5 /* rootNode */
            areturn
        end local 5 // com.oracle.truffle.js.nodes.function.FunctionRootNode rootNode
        end local 4 // java.lang.String internalFunctionName
        end local 3 // com.oracle.truffle.api.source.SourceSection sourceSection
        end local 2 // com.oracle.truffle.js.runtime.builtins.JSFunctionData functionData
        end local 1 // com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor
        end local 0 // com.oracle.truffle.js.nodes.function.AbstractBodyNode body
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    5     0                  body  Lcom/oracle/truffle/js/nodes/function/AbstractBodyNode;
            0    5     1       frameDescriptor  Lcom/oracle/truffle/api/frame/FrameDescriptor;
            0    5     2          functionData  Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            0    5     3         sourceSection  Lcom/oracle/truffle/api/source/SourceSection;
            0    5     4  internalFunctionName  Ljava/lang/String;
            1    5     5              rootNode  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;
    MethodParameters:
                      Name  Flags
      body                  
      frameDescriptor       
      functionData          
      sourceSection         
      internalFunctionName  

  public com.oracle.truffle.js.runtime.builtins.JSFunctionData getFunctionData();
    descriptor: ()Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 93
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.functionData:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            areturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  public boolean isCloningAllowed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 98
            iconst_1
            ireturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  protected boolean isCloneUninitializedSupported();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 103
            iconst_1
            ireturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  protected com.oracle.truffle.js.runtime.JavaScriptRootNode cloneUninitialized();
    descriptor: ()Lcom/oracle/truffle/js/runtime/JavaScriptRootNode;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 108
            new com.oracle.truffle.js.nodes.function.FunctionRootNode
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.body:Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            aconst_null
            invokestatic com.oracle.truffle.js.nodes.JavaScriptNode.cloneUninitialized:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;Ljava/util/Set;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            checkcast com.oracle.truffle.js.nodes.function.AbstractBodyNode
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.function.FunctionRootNode.getFrameDescriptor:()Lcom/oracle/truffle/api/frame/FrameDescriptor;
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.functionData:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.function.FunctionRootNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.internalFunctionName:Ljava/lang/String;
            invokespecial com.oracle.truffle.js.nodes.function.FunctionRootNode.<init>:(Lcom/oracle/truffle/js/nodes/function/AbstractBodyNode;Lcom/oracle/truffle/api/frame/FrameDescriptor;Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)V
            areturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  public boolean isInlineImmediately();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 112
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.functionData:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.isBuiltin:()Z
            ireturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  public boolean isSplitImmediately();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 117
            iconst_0
            ireturn
         1: .line 119
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.functionData:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.isBuiltin:()Z
            ireturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 124
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.functionData:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.isBuiltin:()Z
            ifne 1
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.functionData:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 3
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.internalFunctionName:Ljava/lang/String;
            ifnull 3
         1: .line 125
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.function.FunctionRootNode.$assertionsDisabled:Z
            ifne 2
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.internalFunctionName:Ljava/lang/String;
            ifnonnull 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 126
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.internalFunctionName:Ljava/lang/String;
            areturn
         3: .line 128
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.functionData:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.getName:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 133
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.function.FunctionRootNode.getName:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  public com.oracle.truffle.js.nodes.JavaScriptNode getBody();
    descriptor: ()Lcom/oracle/truffle/js/nodes/JavaScriptNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 137
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.body:Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            areturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  protected com.oracle.truffle.js.runtime.JSContext getContext();
    descriptor: ()Lcom/oracle/truffle/js/runtime/JSContext;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 142
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.functionData:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            areturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  protected java.lang.Object executeInRealm(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 147
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.body:Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            aload 1 /* frame */
            invokevirtual com.oracle.truffle.js.nodes.JavaScriptNode.execute:(Lcom/oracle/truffle/api/frame/VirtualFrame;)Ljava/lang/Object;
            areturn
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;
            0    1     1  frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
    MethodParameters:
       Name  Flags
      frame  

  public java.util.Map<java.lang.String, java.lang.Object> getDebugProperties();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 153
            aload 0 /* this */
            invokespecial com.oracle.truffle.js.runtime.JavaScriptRealmBoundaryRootNode.getDebugProperties:()Ljava/util/Map;
            astore 1 /* map */
        start local 1 // java.util.Map map
         1: .line 154
            aload 1 /* map */
            ldc "name"
            new java.lang.StringBuilder
            dup
            ldc "function "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.function.FunctionRootNode.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.function.FunctionRootNode.getParamCount:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.function.FunctionRootNode.getFrameDescriptor:()Lcom/oracle/truffle/api/frame/FrameDescriptor;
            invokevirtual com.oracle.truffle.api.frame.FrameDescriptor.getSize:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 155
            aload 1 /* map */
            areturn
        end local 1 // java.util.Map map
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;
            1    3     1   map  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    Signature: ()Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  public int getParamCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 159
            aload 0 /* this */
            getfield com.oracle.truffle.js.nodes.function.FunctionRootNode.functionData:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.getLength:()I
            ireturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  public boolean isFunction();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
         0: .line 164
            iconst_1
            ireturn
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;

  public void initializeRoot(com.oracle.truffle.js.runtime.builtins.JSFunctionData);
    descriptor: (Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
        start local 1 // com.oracle.truffle.js.runtime.builtins.JSFunctionData fd
         0: .line 169
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.nodes.function.FunctionRootNode.getCallTarget:()Lcom/oracle/truffle/api/RootCallTarget;
            ifnull 2
         1: .line 172
            return
         2: .line 174
      StackMap locals:
      StackMap stack:
            aload 1 /* fd */
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            aload 0 /* this */
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.setRootTarget:(Lcom/oracle/truffle/api/CallTarget;)Lcom/oracle/truffle/api/CallTarget;
            pop
         3: .line 175
            return
        end local 1 // com.oracle.truffle.js.runtime.builtins.JSFunctionData fd
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;
            0    4     1    fd  Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
    MethodParameters:
      Name  Flags
      fd    

  public void initializeCallTarget(com.oracle.truffle.js.runtime.builtins.JSFunctionData, com.oracle.truffle.js.runtime.builtins.JSFunctionData$Target, com.oracle.truffle.api.CallTarget);
    descriptor: (Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData$Target;Lcom/oracle/truffle/api/CallTarget;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
        start local 1 // com.oracle.truffle.js.runtime.builtins.JSFunctionData fd
        start local 2 // com.oracle.truffle.js.runtime.builtins.JSFunctionData$Target target
        start local 3 // com.oracle.truffle.api.CallTarget rootTarget
         0: .line 179
            aload 1 /* fd */
            aload 2 /* target */
            aload 3 /* rootTarget */
            aload 0 /* this */
            invokestatic com.oracle.truffle.js.nodes.function.FunctionRootNode.initializeFunctionDataCallTarget:(Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData$Target;Lcom/oracle/truffle/api/CallTarget;Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;)V
         1: .line 180
            return
        end local 3 // com.oracle.truffle.api.CallTarget rootTarget
        end local 2 // com.oracle.truffle.js.runtime.builtins.JSFunctionData$Target target
        end local 1 // com.oracle.truffle.js.runtime.builtins.JSFunctionData fd
        end local 0 // com.oracle.truffle.js.nodes.function.FunctionRootNode this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;
            0    2     1          fd  Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            0    2     2      target  Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData$Target;
            0    2     3  rootTarget  Lcom/oracle/truffle/api/CallTarget;
    MethodParameters:
            Name  Flags
      fd          
      target      
      rootTarget  

  private static void initializeFunctionDataCallTarget(com.oracle.truffle.js.runtime.builtins.JSFunctionData, com.oracle.truffle.js.runtime.builtins.JSFunctionData$Target, com.oracle.truffle.api.CallTarget, com.oracle.truffle.js.nodes.function.FunctionRootNode);
    descriptor: (Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData$Target;Lcom/oracle/truffle/api/CallTarget;Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // com.oracle.truffle.js.runtime.builtins.JSFunctionData functionData
        start local 1 // com.oracle.truffle.js.runtime.builtins.JSFunctionData$Target target
        start local 2 // com.oracle.truffle.api.CallTarget rootTarget
        start local 3 // com.oracle.truffle.js.nodes.function.FunctionRootNode functionRoot
         0: .line 183
            invokestatic com.oracle.truffle.js.nodes.NodeFactory.getDefaultInstance:()Lcom/oracle/truffle/js/nodes/NodeFactory;
            astore 4 /* factory */
        start local 4 // com.oracle.truffle.js.nodes.NodeFactory factory
         1: .line 184
            aload 1 /* target */
            getstatic com.oracle.truffle.js.runtime.builtins.JSFunctionData$Target.Call:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData$Target;
            if_acmpne 11
         2: .line 186
            aload 0 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.requiresNew:()Z
            ifeq 5
         3: .line 187
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            aload 4 /* factory */
            aload 0 /* functionData */
            aload 3 /* functionRoot */
            invokevirtual com.oracle.truffle.js.nodes.function.FunctionRootNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createConstructorRequiresNewRoot:(Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;Lcom/oracle/truffle/api/source/SourceSection;)Lcom/oracle/truffle/js/runtime/JavaScriptRootNode;
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            astore 5 /* functionCallTarget */
        start local 5 // com.oracle.truffle.api.CallTarget functionCallTarget
         4: .line 188
            goto 9
        end local 5 // com.oracle.truffle.api.CallTarget functionCallTarget
         5: .line 189
      StackMap locals: com.oracle.truffle.js.nodes.NodeFactory
      StackMap stack:
            aload 0 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.needsNewTarget:()Z
            ifeq 8
         6: .line 192
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            aload 4 /* factory */
            aload 0 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 2 /* rootTarget */
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createNewTargetCall:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/CallTarget;)Lcom/oracle/truffle/js/runtime/JavaScriptRootNode;
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            astore 5 /* functionCallTarget */
        start local 5 // com.oracle.truffle.api.CallTarget functionCallTarget
         7: .line 193
            goto 9
        end local 5 // com.oracle.truffle.api.CallTarget functionCallTarget
         8: .line 194
      StackMap locals:
      StackMap stack:
            aload 2 /* rootTarget */
            astore 5 /* functionCallTarget */
        start local 5 // com.oracle.truffle.api.CallTarget functionCallTarget
         9: .line 197
      StackMap locals: com.oracle.truffle.api.CallTarget
      StackMap stack:
            aload 0 /* functionData */
            aload 5 /* functionCallTarget */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.setCallTarget:(Lcom/oracle/truffle/api/CallTarget;)Lcom/oracle/truffle/api/CallTarget;
            pop
        end local 5 // com.oracle.truffle.api.CallTarget functionCallTarget
        10: .line 198
            goto 30
      StackMap locals:
      StackMap stack:
        11: aload 1 /* target */
            getstatic com.oracle.truffle.js.runtime.builtins.JSFunctionData$Target.Construct:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData$Target;
            if_acmpne 23
        12: .line 200
            aload 0 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.isGenerator:()Z
            ifeq 15
        13: .line 201
            aload 0 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getGeneratorNotConstructibleCallTarget:()Lcom/oracle/truffle/api/CallTarget;
            astore 5 /* constructCallTarget */
        start local 5 // com.oracle.truffle.api.CallTarget constructCallTarget
        14: .line 202
            goto 21
        end local 5 // com.oracle.truffle.api.CallTarget constructCallTarget
      StackMap locals:
      StackMap stack:
        15: aload 0 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.isAsync:()Z
            ifeq 18
        16: .line 203
            aload 0 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getNotConstructibleCallTarget:()Lcom/oracle/truffle/api/CallTarget;
            astore 5 /* constructCallTarget */
        start local 5 // com.oracle.truffle.api.CallTarget constructCallTarget
        17: .line 204
            goto 21
        end local 5 // com.oracle.truffle.api.CallTarget constructCallTarget
        18: .line 205
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            aload 4 /* factory */
            aload 0 /* functionData */
            aload 2 /* rootTarget */
            iconst_0
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createConstructorRootNode:(Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;Lcom/oracle/truffle/api/CallTarget;Z)Lcom/oracle/truffle/js/nodes/function/ConstructorRootNode;
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            astore 5 /* constructCallTarget */
        start local 5 // com.oracle.truffle.api.CallTarget constructCallTarget
        19: .line 206
            aload 0 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.needsNewTarget:()Z
            ifeq 21
        20: .line 209
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            aload 4 /* factory */
            aload 0 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 5 /* constructCallTarget */
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createNewTargetConstruct:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/CallTarget;)Lcom/oracle/truffle/js/runtime/JavaScriptRootNode;
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            astore 5 /* constructCallTarget */
        21: .line 212
      StackMap locals: com.oracle.truffle.api.CallTarget
      StackMap stack:
            aload 0 /* functionData */
            aload 5 /* constructCallTarget */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.setConstructTarget:(Lcom/oracle/truffle/api/CallTarget;)Lcom/oracle/truffle/api/CallTarget;
            pop
        end local 5 // com.oracle.truffle.api.CallTarget constructCallTarget
        22: .line 213
            goto 30
      StackMap locals:
      StackMap stack:
        23: aload 1 /* target */
            getstatic com.oracle.truffle.js.runtime.builtins.JSFunctionData$Target.ConstructNewTarget:Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData$Target;
            if_acmpne 30
        24: .line 215
            aload 0 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.needsNewTarget:()Z
            ifeq 27
        25: .line 216
            aload 2 /* rootTarget */
            astore 5 /* newTargetCallTarget */
        start local 5 // com.oracle.truffle.api.CallTarget newTargetCallTarget
        26: .line 217
            goto 28
        end local 5 // com.oracle.truffle.api.CallTarget newTargetCallTarget
        27: .line 218
      StackMap locals:
      StackMap stack:
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            aload 4 /* factory */
            aload 0 /* functionData */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
            aload 2 /* rootTarget */
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createDropNewTarget:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/api/CallTarget;)Lcom/oracle/truffle/js/runtime/JavaScriptRootNode;
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            astore 5 /* newTargetCallTarget */
        start local 5 // com.oracle.truffle.api.CallTarget newTargetCallTarget
        28: .line 220
      StackMap locals: com.oracle.truffle.api.CallTarget
      StackMap stack:
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            aload 4 /* factory */
            aload 0 /* functionData */
            aload 5 /* newTargetCallTarget */
            iconst_1
            invokevirtual com.oracle.truffle.js.nodes.NodeFactory.createConstructorRootNode:(Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;Lcom/oracle/truffle/api/CallTarget;Z)Lcom/oracle/truffle/js/nodes/function/ConstructorRootNode;
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            astore 6 /* constructNewTargetCallTarget */
        start local 6 // com.oracle.truffle.api.CallTarget constructNewTargetCallTarget
        29: .line 221
            aload 0 /* functionData */
            aload 6 /* constructNewTargetCallTarget */
            invokevirtual com.oracle.truffle.js.runtime.builtins.JSFunctionData.setConstructNewTarget:(Lcom/oracle/truffle/api/CallTarget;)Lcom/oracle/truffle/api/CallTarget;
            pop
        end local 6 // com.oracle.truffle.api.CallTarget constructNewTargetCallTarget
        end local 5 // com.oracle.truffle.api.CallTarget newTargetCallTarget
        30: .line 223
      StackMap locals:
      StackMap stack:
            return
        end local 4 // com.oracle.truffle.js.nodes.NodeFactory factory
        end local 3 // com.oracle.truffle.js.nodes.function.FunctionRootNode functionRoot
        end local 2 // com.oracle.truffle.api.CallTarget rootTarget
        end local 1 // com.oracle.truffle.js.runtime.builtins.JSFunctionData$Target target
        end local 0 // com.oracle.truffle.js.runtime.builtins.JSFunctionData functionData
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   31     0                  functionData  Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData;
            0   31     1                        target  Lcom/oracle/truffle/js/runtime/builtins/JSFunctionData$Target;
            0   31     2                    rootTarget  Lcom/oracle/truffle/api/CallTarget;
            0   31     3                  functionRoot  Lcom/oracle/truffle/js/nodes/function/FunctionRootNode;
            1   31     4                       factory  Lcom/oracle/truffle/js/nodes/NodeFactory;
            4    5     5            functionCallTarget  Lcom/oracle/truffle/api/CallTarget;
            7    8     5            functionCallTarget  Lcom/oracle/truffle/api/CallTarget;
            9   10     5            functionCallTarget  Lcom/oracle/truffle/api/CallTarget;
           14   15     5           constructCallTarget  Lcom/oracle/truffle/api/CallTarget;
           17   18     5           constructCallTarget  Lcom/oracle/truffle/api/CallTarget;
           19   22     5           constructCallTarget  Lcom/oracle/truffle/api/CallTarget;
           26   27     5           newTargetCallTarget  Lcom/oracle/truffle/api/CallTarget;
           28   30     5           newTargetCallTarget  Lcom/oracle/truffle/api/CallTarget;
           29   30     6  constructNewTargetCallTarget  Lcom/oracle/truffle/api/CallTarget;
    MethodParameters:
              Name  Flags
      functionData  
      target        
      rootTarget    
      functionRoot  

  protected com.oracle.truffle.api.nodes.RootNode cloneUninitialized();
    descriptor: ()Lcom/oracle/truffle/api/nodes/RootNode;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.oracle.truffle.js.nodes.function.FunctionRootNode.cloneUninitialized:()Lcom/oracle/truffle/js/runtime/JavaScriptRootNode;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "FunctionRootNode.java"
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 CallTargetInitializer = com.oracle.truffle.js.runtime.builtins.JSFunctionData$CallTargetInitializer of com.oracle.truffle.js.runtime.builtins.JSFunctionData
  public final Target = com.oracle.truffle.js.runtime.builtins.JSFunctionData$Target of com.oracle.truffle.js.runtime.builtins.JSFunctionData
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.NodeInfo(cost = com.oracle.truffle.api.nodes.NodeCost.NONE:Lcom/oracle/truffle/api/nodes/NodeCost;, language = "JavaScript", description = "The root node of all functions in JavaScript.")