# File lib/core/facets/enumerable/visit.rb, line 9
  def visit(opts={}, &block)
    type = opts[:type] ? [opts[:type]].flatten : [Enumerable]
    skip = opts[:skip]

    map do |v|
      case v
      when String # b/c of 1.8
        block.call(v)
      when *type
        v.visit(opts, &block)
      else
        if skip && Enumerable === v
          v
        else
          block.call(v)
        end
      end
    end
  end