# File lib/backports/2.0.0/enumerator/lazy.rb, line 95
    def take(n)
      n = Backports::coerce_to_int(n)
      raise ArgumentError, 'attempt to take negative size' if n < 0
      return Lazy.new([]){} if n == 0
      Lazy.new(self) do |yielder, *values|
        data = yielder.backports_memo ||= {remain: n}
        yielder.yield(*values)
        throw @@done if (data[:remain] -= 1) == 0
      end
    end