    # File lib/core/facets/array/combination.rb, line 21
        def combination(k=2)
          if block_given?
            s = to_a
            n = s.size
            return unless (1..n) === k
            idx = (0...k).to_a
            loop do
              yield s.values_at(*idx)
              i = k - 1
              i -= 1 while idx[i] == n - k + i
              break if i < 0
              idx[i] += 1
              (i + 1 ... k).each {|j| idx[j] = idx[i] + j - i}
            end
          else
            to_enum(:combination, k)
          end
        end