   subscript(i: Index) -> Generator.Element { get set }
 }
 
-public protocol MyIndexType : Equatable {
-  // Move to CollectionType?
-  associatedtype Distance : SignedIntegerType = Int
-}
+public protocol MyIndexType : Equatable {}
+
 public protocol MyIndexRangeType : Equatable {
   associatedtype Index : MyIndexType
   var startIndex: Index { get }

    // FIXME: where IndexRange.Generator.Element == Index
    // FIXME: where IndexRange.Index == Index
    = DefaultForwardIndexRange<Self>

  var startIndex: Index { get }
  var endIndex: Index { get }

  }

  @warn_unused_result
  public func advance(i: Index, by n: IndexDistance) -> Index {
    _precondition(n >= 0,
      "Can't advance an Index of MyForwardCollectionType by a negative amount")
    return i.advancedBy(n)
  }

  @warn_unused_result
  public func advance(i: Index, by n: IndexDistance, limit: Index) -> Index {
    _precondition(n >= 0,
      "Can't advance an Index of MyForwardCollectionType by a negative amount")
    let d = i.distanceTo(limit)
