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

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

  public mutating func removeFirst(n: Int) {

    return result
  }

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