     
     private let base: Base
     
-    public typealias Generator = IndexingGenerator<ParallelCollection>
+    public typealias Generator = ParallelCollectionGenerator<Base.Generator>
     
     public typealias Index = Base.Index
     

    private let base: Base
    private let transform: (Base.Generator.Element) -> Element
    
    public typealias Generator = IndexingGenerator<ParallelMapCollection>
    
    public typealias Index = Base.Index
    

    public subscript(position: Index) -> Base.Generator.Element {
        return base[position]
    }
    
    public func generate() -> Generator {
        return ParallelCollectionGenerator(base: base.generate())
    }
}

public struct ParallelCollectionGenerator<Base: GeneratorType> : GeneratorType, SequenceType {
    
    private var base: Base
    
    public mutating func next() -> Base.Element? {
        return base.next()
    }
}

public struct ParallelMapCollection<Base: CollectionType, Element where Base.Index : RandomAccessIndexType> : ParallelCollectionType {
