    # 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