def reject
      raise ArgumentError, "Lazy#reject requires a block" unless block_given?

      Lazy.new(self, nil) do |yielder, *args|
        val = args.length >= 2 ? args : args.first