   expectEmpty(s.popFirst())
 }
 
+NewCollection.test("RangeLiterals") {
+  let comparable = MinimalComparableValue(0)
+  let strideable = MySimplestStrideable(0)
+
+  var comparableRange = comparable..<*comparable
+  expectType(MyRange<MinimalComparableValue>.self, &comparableRange)
+
+  var strideableRange = strideable..<*strideable
+  expectType(MyIterableRange<MySimplestStrideable>.self, &strideableRange)
+
+  for _ in OldSequence(0..<*10) {}
+}
+
 runAllTests()
 

public func ..<*
  <Index : Comparable>(lhs: Index, rhs: Index) -> MyRange<Index> {
  return MyRange(start: lhs, end: rhs)
}

// FIXME: in order for all this to be usable, we need to unify MyRange and

}

//------------------------------------------------------------------------
// Simplest Strideable

public struct MySimplestStrideable : MyStrideable {
  internal let _value: Int
  internal init(_ value: Int) {
    self._value = value
  }

  @warn_unused_result
  public func distanceTo(other: MySimplestStrideable) -> Int {
    return _value.distanceTo(other._value)
  }

  @warn_unused_result
  public func advancedBy(n: Int) -> MySimplestStrideable {
    return MySimplestStrideable(_value.advancedBy(n))
  }
}

public func == (
  lhs: MySimplestStrideable,
  rhs: MySimplestStrideable
) -> Bool {
  return lhs._value == rhs._value
}

public func < (
  lhs: MySimplestStrideable,
  rhs: MySimplestStrideable
) -> Bool {
  return lhs._value < rhs._value
}

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

// FIXME: how does AnyCollection look like in the new scheme?

