# File lib/code_analyzer/sexp.rb, line 65
  def grep_nodes(options)
    sexp_type = options[:sexp_type]
    receiver = options[:receiver]
    message = options[:message]
    to_s = options[:to_s]
    self.recursive_children do |child|
      if (!sexp_type || (sexp_type.is_a?(Array) ? sexp_type.include?(child.sexp_type) : sexp_type == child.sexp_type)) &&
         (!receiver || (receiver.is_a?(Array) ? receiver.include?(child.receiver.to_s) : receiver == child.receiver.to_s)) &&
         (!message || (message.is_a?(Array) ? message.include?(child.message.to_s) : message == child.message.to_s)) &&
         (!to_s || (to_s.is_a?(Array) ? to_s.include?(child.to_s) : to_s == child.to_s))
        yield child
      end
    end
  end