code: def new_workunit_under_parent(self, name, parent, labels=None, cmd='', log_config=None):
      
      workunit = WorkUnit(run_info_dir=self.run_info_dir, parent=parent, name=name, labels=labels,
                          cmd=cmd, log_config=log_config)
      workunit.start()
  
      outcome = WorkUnit.FAILURE  # Default to failure we will override if we get success/abort.
      try:
        self.report.start_workunit(workunit)
        yield workunit
      except KeyboardInterrupt:
        outcome = WorkUnit.ABORTED
        self._aborted = True
        raise
      else:
        outcome = WorkUnit.SUCCESS
      finally:
        workunit.set_outcome(outcome)
        self.end_workunit(workunit)
docs: Creates a (hierarchical) subunit of work for the purpose of timing and reporting.
  
      - name: A short name for this work. E.g., 'resolve', 'compile', 'scala', 'zinc'.
      - parent: The new workunit is created under this parent.
      - labels: An optional iterable of labels. The reporters can use this to decide how to
                display information about this work.
      - cmd: An optional longer string representing this work.
             E.g., the cmd line of a compiler invocation.
  
      Task code should not typically call this directly.
  
      :API: public