code: def reduce_to_cycles(self):
          
          if not self._reduced:
              reduced = copy(self)
              reduced.objects = self.objects[:]
              reduced.metadata = []
              reduced.edges = []
              self.num_in_cycles = reduced._reduce_to_cycles()
              reduced.num_in_cycles = self.num_in_cycles
              if self.num_in_cycles:
                  reduced._get_edges()
                  reduced._annotate_objects()
                  for meta in reduced.metadata:
                      meta.cycle = True
              else:
                  reduced = None
              self._reduced = reduced
          return self._reduced
docs: Iteratively eliminate leafs to reduce the set of objects to only those
          that build cycles. Return the reduced graph. If there are no cycles,
          None is returned.