code: def _find_compositor(self, dataset_key, **dfilter):
          
          # NOTE: This function can not find a modifier that performs
          # one or more modifications if it has modifiers see if we can find
          # the unmodified version first
          src_node = None
          if isinstance(dataset_key, DatasetID) and dataset_key.modifiers:
              new_prereq = DatasetID(
                  *dataset_key[:-1] + (dataset_key.modifiers[:-1],))
              src_node, u = self._find_dependencies(new_prereq, **dfilter)
              # Update the requested DatasetID with information from the src
              if src_node is not None:
                  dataset_key = self._update_modifier_key(dataset_key,
                                                          src_node.name)
              if u:
                  return None, u
  
          try:
              compositor = self.get_compositor(dataset_key)
          except KeyError:
              raise KeyError("Can't find anything called {}".format(str(dataset_key)))
          dataset_key = compositor.id
          root = Node(dataset_key, data=(compositor, [], []))
          if src_node is not None:
              self.add_child(root, src_node)
              root.data[1].append(src_node)
  
          # 2.1 get the prerequisites
          LOG.trace("Looking for composite prerequisites for: {}".format(dataset_key))
          prereqs, unknowns = self._get_compositor_prereqs(root, compositor.attrs['prerequisites'], **dfilter)
          if unknowns:
              # Should we remove all of the unknown nodes that were found
              # if there is an unknown prerequisite are we in trouble?
              return None, unknowns
          root.data[1].extend(prereqs)
  
          LOG.trace("Looking for optional prerequisites for: {}".format(dataset_key))
          optional_prereqs, _ = self._get_compositor_prereqs(
              root, compositor.attrs['optional_prerequisites'], skip=True, **dfilter)
          root.data[2].extend(optional_prereqs)
  
          return root, set()
docs: Find the compositor object for the given dataset_key.