docs: def _define_output_buffers(self):
          """
          Prepare a dictionary so we know what buffers have to be update with the the output of every step.
          """
  
          # First define buffers that need input data
          self.target_buffers = {
              None: [(step, self.buffers[step]) for step in self._get_input_steps()]
          }
  
          # Go through all steps and append the buffers of their child nodes
          for step in self.steps_sorted:
              if step != self:
                  child_steps = [edge[1] for edge in self.graph.out_edges(step)]
                  self.target_buffers[step] = [(child_step, self.buffers[child_step]) for child_step in child_steps]