def walk(s = nil)
      s ||= @root
      if [:module, :class].member?(s[0])
        add_node s
      elsif find_relations? && s[0] == :call && s.length >= 4 && [:extend, :include].member?(s[2]) && !@graph.scope.empty?
        add_relation s
      else
        walk_siblings s.slice(1..-1)
      end
    end
def walk(s = nil)
      s ||= @root
      if [:module, :class].member?(s[0])
        add_node s
      elsif find_relations? && s[0] == :call && s.length >= 4 && [:extend, :include].member?(s[2]) && !@graph.scope.empty?
        add_relation s
      else
        walk_siblings s.slice(1..-1)
      end
    end
Initialize a walker with a graph and sexp

 All files in a code base should be walked once in <tt>:find_nodes</tt> mode, and then walked again in <tt>:find_relations</tt> mode.

 @param graph [IR::Graph] a graph to which nodes and relations will be added
 @param sexp [Sexp] the root sexp of a ruby file
 @option opt [Symbol] :mode (:find_nodes) one of <tt>:find_nodes</tt> or <tt>:find_relations</tt>
 Walk the tree rooted at the given sexp
 @param s [Sexp] if +nil+ will be the root sexp
 @return [nil]