code: def get_specs_depth_first(self):
          
  
          done = set()
          specs = [self]
  
          def recursive_find(task_spec):
              if task_spec in done:
                  return
  
              done.add(task_spec)
  
              if hasattr(task_spec, 'spec'):
                  specs.append(task_spec.spec)
                  recursive_find(task_spec.spec.start)
  
              for t in task_spec.outputs:
                  recursive_find(t)
  
          recursive_find(self.start)
  
          return specs
docs: Get the specs for all processes (including called ones), in depth first
          order.