code: def find_cycles(self):
          
  
          # Apply the Tarjan's algorithm successively until all functions are visited
          stack = []
          data = {}
          order = 0
          for function in compat_itervalues(self.functions):
              order = self._tarjan(function, order, stack, data)
          cycles = []
          for function in compat_itervalues(self.functions):
              if function.cycle is not None and function.cycle not in cycles:
                  cycles.append(function.cycle)
          self.cycles = cycles
          if 0:
              for cycle in cycles:
                  sys.stderr.write("Cycle:\n")
                  for member in cycle.functions:
                      sys.stderr.write("\tFunction %s\n" % member.name)
docs: Find cycles using Tarjan's strongly connected components algorithm.