     }
     
     public func generate() -> Generator {
-        return GatherGenerator(seq: _base, indices: _indices.generate())
+        return LazyGatherGenerator(seq: _base, indices: _indices.generate())
     }
     
     public func underestimateCount() -> Int {

    }
}

public struct GatherCollection<C : CollectionType, Indices : CollectionType where C.Index == Indices.Generator.Element> : CollectionType {
    
    public typealias Generator = GatherGenerator<C, Indices.Generator>
    
    public typealias Index = Indices.Index
    public typealias Element = C.Generator.Element

    }
}

public struct LazyGatherSequence<C : CollectionType, Indices : SequenceType where C.Index == Indices.Generator.Element> : LazySequenceType {
    
    public typealias Generator = LazyGatherGenerator<C, Indices.Generator>
    
    public typealias Element = C.Generator.Element
    
