# File lib/backports/1.9.2/array.rb, line 50
  def repeated_permutation(num)
    return to_enum(:repeated_permutation, num) unless block_given?
    num = Backports.coerce_to_int(num)
    if num <= 0
      yield [] if num == 0
    else
      indices = Array.new(num, 0)
      indices[-1] = size
      while dec = indices.find_index(&:nonzero?)
        indices[0...dec] = Array.new dec, size-1
        indices[dec] -= 1
        yield values_at(*indices)
      end
    end
    self
  end