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(), }; }
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;
}