# File lib/core/facets/array/recurse.rb, line 10
  def recurse(*types, &block)
    types = [self.class] if types.empty?
    a = inject([]) do |array, value|
      case value
      when *types
        array << value.recurse(*types, &block)
      else
        array << value
      end
      array
    end
    yield a
  end