def map
      walk_times = lambda do |elements|
        break unless elements
        elements.map do |element|
          next walk_times.call(element.elements) unless Time === element
          block_given? ? yield(element) : element
        end
      end
      walk_times.call(elements).flatten.compact
    end
def map
      walk_times = lambda do |elements|
        break unless elements
        elements.map do |element|
          next walk_times.call(element.elements) unless Time === element
          block_given? ? yield(element) : element
        end
      end
      walk_times.call(elements).flatten.compact
    end
:nodoc: