   /// "past the end" position that's not valid for use as a subscript.
   public typealias Index = Int
   public typealias IndexDistance = Int
+  public typealias SubSequence = EmptyCollection<Element>
 
   /// Construct an instance.
   public init() {}


/// A collection whose element type is `Element` but that is always empty.
public struct EmptyCollection<Element> :
  RandomAccessCollection
  // FIXME: swift-3-indexing-model - conform to MutableCollection as well
{
  /// A type that represents a valid position in the collection.
  ///

    return 0
  }

  public func _failEarlyRangeCheck(_ index: Index, bounds: Range<Index>) {
    _precondition(index == 0, "out of bounds")
    _precondition(bounds.lowerBound == 0 && bounds.upperBound == 0,
      "invalid bounds for an empty collection")
  }

  public func _failEarlyRangeCheck(_ range: Range<Index>, bounds: Range<Index>) {
    _precondition(range.lowerBound == 0 && range.upperBound == 0,
      "invalid range for an empty collection")
    _precondition(bounds.lowerBound == 0 && bounds.upperBound == 0,
      "invalid bounds for an empty collection")
  }

  // TODO: swift-3-indexing-model - fast fail any others from RandomAccessCollection (and up inheritance)?
}

