 
 /// Do not use this operator directly; call advance(start, n, end) instead.
 @transparent
-public func ~> <T : _ForwardIndexType>(
+public func ~> <T : ForwardIndexType>(
   start:T, rest: ( _Advance, (T.Distance, T))
 ) -> T {
   return _advanceForward(start, rest.1.0, rest.1.1)
 }
 
 internal
-func _advanceForward<T : _ForwardIndexType>(
+func _advanceForward<T : ForwardIndexType>(
   start: T, _ n: T.Distance, _ end: T
 ) -> T {
   _precondition(n >= 0,


/// Do not use this operator directly; call distance(start, end) instead.
public
func ~> <T : _ForwardIndexType>(start:T, rest: (_Distance, T)) -> T.Distance {
  var p = start
  var count: T.Distance = 0
  let end = rest.1

///
/// Its requirements are inherited by `BidirectionalIndexType` and thus must
/// be satisfied by types conforming to that protocol.
public protocol _BidirectionalIndexDefaultsType : ForwardIndexType {
  /// Return the previous consecutive value in a discrete sequence.
  ///
  /// If `self` has a well-defined successor,
