# File lib/backports/2.0.0/enumerable/lazy.rb, line 110
      def grep(pattern)
        if block_given?
          # Split for performance
          Lazy.new(self) do |yielder, *values|
            values = values.first unless values.size > 1
            yielder.yield(yield(values)) if pattern === values
          end
        else
          Lazy.new(self) do |yielder, *values|
            values = values.first unless values.size > 1
            yielder.yield(values) if pattern === values
          end
        end.__set_inspect :grep, [pattern]
      end