protocol Collection: Sequence { associatedtype Index: Comparable var startIndex: Index var endIndex: Index subscript(position: Index) -> Element { get } func index(after i: Index) -> Index }