 // and avoid keeping a reference to the whole collection.
 
 public protocol MyGeneratorType {
-  typealias Element
+  associatedtype Element
   mutating func next() -> Element?
 }
 public protocol MySequenceType {
-  typealias Generator : MyGeneratorType
-  typealias SubSequence /* : MySequenceType */
+  associatedtype Generator : MyGeneratorType
+  associatedtype SubSequence /* : MySequenceType */
   func generate() -> Generator
   @warn_unused_result
   func map<T>(

//------------------------------------------------------------------------

public protocol MyIndexableType {
  typealias Index : MyIndexType
  typealias _Element
  typealias UnownedHandle
  var startIndex: Index { get }
  var endIndex: Index { get }
  subscript(i: Index) -> _Element { get }

}

public protocol MyRandomAccessCollectionType : MyBidirectionalCollectionType {
  associatedtype Index : MyRandomAccessIndex
}

public struct DefaultUnownedForwardCollection<Collection : MyForwardCollectionType> {
