     }
 }
 
-public struct GatherGenerator<C: CollectionType, Indices: GeneratorType where C.Index == Indices.Element> : GeneratorType, SequenceType {
+public struct LazyGatherGenerator<C: CollectionType, Indices: GeneratorType where C.Index == Indices.Element> : GeneratorType, SequenceType {
     
     private var seq : C
     private var indices : Indices

    }
}

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

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