 }
 
 @frozen
-public struct LazyRecursiveMapSequence<Base: Sequence, Transformed: Collection>: LazySequenceProtocol where Base.Element == Transformed.Element {
+public struct LazyRecursiveMapSequence<Base: Sequence, Transformed: Sequence>: LazySequenceProtocol where Base.Element == Transformed.Element {
     
     @usableFromInline
     let base: Base

extension LazySequenceProtocol {
    
    @inlinable
    public func recursiveMap<C>(_ transform: @escaping (Element) -> C) -> LazyRecursiveMapSequence<Elements, C> {
        return LazyRecursiveMapSequence(self.elements, transform)
    }
}

extension Sequence {
    
    @inlinable
    public func recursiveMap<S: Sequence>(_ transform: (Element) throws -> S) rethrows -> [Element] where S.Element == Element {
        var result: [Element] = Array(self)
        var mapped = try result.flatMap(transform)
        repeat {
