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