   public mutating func removeSubrange<
     R: _RangeProtocol where R.Bound == Index
   >(bounds: R) {
-    replaceSubrange(makeHalfOpen(bounds), with: EmptyCollection())
+    replaceSubrange(_makeHalfOpen(bounds), with: EmptyCollection())
   }
 
   public mutating func removeFirst(n: Int) {

  >(
    subRange: R, with newElements: C
  ) {
    self.replaceSubrange(makeHalfOpen(subRange), with: newElements)
  }
  
  @warn_unused_result

    return result
  }

  internal func _makeHalfOpen<
    R: _RangeProtocol where R.Bound == Index
  >(r: R) -> Range<Index> {
    return Range(
