code: function createTree (currentNode, traceGraph, nestingLevel, accumulator) {
    currentNode.durationMs = nanoToMillisecond(currentNode.durationNs)
    currentNode.timelineStartNs =
      currentNode.timeStartNs - accumulator.timeStartNs
    currentNode.timelineStartMs = nanoToMillisecond(currentNode.timelineStartNs)
    currentNode.nestingLevel = nestingLevel
    currentNode.label = createTraceNodeLabel(currentNode)
  
    currentNode.reducerSummary = createReducerSummary(currentNode.reducer)
  
    const children = traceGraph.filter(node => {
      return node.parent && node.parent.id === currentNode.id
    })
  
    currentNode.children = children
  
    nestingLevel += 1
  
    // update maxNestingLevel if new nestingLevel is higher
    if (nestingLevel > accumulator.maxNestingLevel) {
      accumulator.maxNestingLevel = nestingLevel
    }
  
    children.forEach(node => {
      createTree(node, traceGraph, nestingLevel, accumulator)
    })
  }
docs: Creates a Tree structure off of a trace stack
  NOTE: Mutates currentNode argument, which as a result mutates traceGraph
  mutation could be avoided but for the purpose of this operations it might be
  an overkill
  @param {TraceNode} currentNode
  @param {Array<TraceNode>} traceGraph
  @param {Number} nestingLevel
  @param {Accumulator} accumulator