code: def root_frame(self):
          
          if not hasattr(self, '_root_frame'):
              self._root_frame = Frame()
  
              # define a recursive function that builds the hierarchy of frames given the
              # stack of frame identifiers
              def frame_for_stack(stack):
                  if len(stack) == 0:
                      return self._root_frame
  
                  parent = frame_for_stack(stack[:-1])
                  frame_name = stack[-1]
  
                  if not frame_name in parent.children_dict:
                      parent.add_child(Frame(frame_name, parent))
  
                  return parent.children_dict[frame_name]
  
              for stack, self_time in self.stack_self_time.items():
                  frame_for_stack(stack).self_time = self_time
  
          return self._root_frame
docs: Returns the parsed results in the form of a tree of Frame objects