 func testIsEmptyFirstLast() {
   // CHECK: testing isEmpty
   print("testing isEmpty")
+  // FIXME: swift-3-indexing-model: cast shouldn't be necessary
   // CHECK-NEXT: true
-  print((10..<10).isEmpty)
+  print((10..<10 as RangeOfStrideable).isEmpty)
+  
+  // FIXME: swift-3-indexing-model: cast shouldn't be necessary
   // CHECK-NEXT: false
-  print((10...10).isEmpty)
+  print((10...10 as RangeOfStrideable).isEmpty)
+  
   // CHECK-NEXT: 10
   print((10..<100).first)
   // CHECK-NEXT: 99

CollectionTests.test("first/performance") {
  // accessing `first` should not perform duplicate work on lazy collections
  var log: [Int] = []
  let col_ = (0..<10).lazy.filter({ log.append($0); return (2..<8).contains($0) })
  let col = CollectionOnly(base: col_)
  expectEqual(2, col.first)
  expectEqual([0, 1, 2], log)

  subscript(position: T.Index) -> T.Iterator.Element {
    return base[position]
  }
  func next(i: T.Index) -> T.Index { return base.next(i) }
}

// CHECK: all done.
