whole_func_string: function getSrcInfo(stack) {
  
    const fileLineNoArr = [];
  
    const end = Math.min(callsiteStackDepth, stack.length - 1);
  
    for (let i = 1; i <= end; ++i)
    {
      const call = stack[i];
  
      // console.log(frameInfo(call));
  
      const file = call.getFileName();
      const lineno = call.getLineNumber();
      const fileLineNoStr = `${EOL}FILE: ${file}:${lineno}`;
      fileLineNoArr.push(fileLineNoStr);
    }
  
    return fileLineNoArr.join('') + EOL;
  }
func_code_string: function getSrcInfo(stack) {
  
    const fileLineNoArr = [];
  
    const end = Math.min(callsiteStackDepth, stack.length - 1);
  
    for (let i = 1; i <= end; ++i)
    {
      const call = stack[i];
  
      // console.log(frameInfo(call));
  
      const file = call.getFileName();
      const lineno = call.getLineNumber();
      const fileLineNoStr = `${EOL}FILE: ${file}:${lineno}`;
      fileLineNoArr.push(fileLineNoStr);
    }
  
    return fileLineNoArr.join('') + EOL;
  }
func_documentation_string: function frameInfo(frame) { return { getThis: frame.getThis(),  getTypeName: frame.getTypeName(), getFunction: frame.getFunction(), getFunctionName: frame.getFunctionName(), getMethodName: frame.getMethodName(), getFileName: frame.getFileName(), getLineNumber: frame.getLineNumber(), getColumnNumber: frame.getColumnNumber(), getEvalOrigin: frame.getEvalOrigin(), isToplevel: frame.isToplevel(), isEval: frame.isEval(), isNative: frame.isNative(), isConstructor: frame.isConstructor(), }; }