# File lib/kwala/lib/cycle_detector.rb, line 154
  def find_cycle(node, path = Array.new)
    begin
      path << node.name
      node.state = Node::INPROGRESS

      all_cycles = Array.new

      node.edges.each do |edge|
        npath = path.dup
        case edge.state
        when Node::INPROGRESS
          npath << edge.name
          return npath
        when Node::DONE
          nil
        else
          c = find_cycle(edge, npath)
          if c
            return c
          end
        end
      end

      node.state = Node::DONE
    rescue SystemStackError => err
      puts err.class
      puts "<"
      puts path
      puts ">"
      node.state = Node::DONE
      nil
    end
    nil
  end