         return base[index.base]
     }
     
-    public func generate() -> DropRangeGenerator<C> {
+    public func generate() -> DropRangeGenerator<C.SubSequence.Generator> {
         return DropRangeGenerator(base: base.generate())
     }
     

    }
}

public struct DropRangeGenerator<C : CollectionType> : GeneratorType {
    
    private var base: ConcatGenerator<C.SubSequence.Generator, C.SubSequence.Generator>
    
    public mutating func next() -> C.SubSequence.Generator.Element? {
        return base.next()
    }
}

        return base[index.base]
    }
    
    public func generate() -> LazyReplaceRangeGenerator<C.SubSequence.Generator, S.Generator> {
        return LazyReplaceRangeGenerator(base: base.generate())
    }
    
