 
   @inline(never) // slow-path
   private mutating func _foreignGrow(_ n: Int) {
-    // TODO(String performance): Skip intermediary array, transcode directly
-    // into a StringStorage space.
-    let selfUTF8 = Array(String(self).utf8)
-    selfUTF8.withUnsafeBufferPointer {
-      self = _StringGuts(__StringStorage.create(
-        initializingFrom: $0, capacity: n, isASCII: self.isASCII))
-    }
+    let newString = String(uninitializedCapacity: n) { buffer in
+      guard let count = _foreignCopyUTF8(into: buffer) else {
+       fatalError("String capacity was smaller than required")
+      }
+      return count
+    }
+    self = newString._guts
   }
 
   // Ensure unique native storage with sufficient capacity for the following
   // append.
   private mutating func prepareForAppendInPlace(
+    totalCount: Int,
     otherUTF8Count otherCount: Int
   ) {
     defer {

        return
      }
    }

    append(_StringGutsSlice(other))
  }

  internal mutating func append(_ slicedOther: _StringGutsSlice) {
    defer { self._invariantCheck() }

    if self.isSmall && slicedOther._guts.isSmall {
      // TODO: In-register slicing
      let smolSelf = self.asSmall
      if let smol = slicedOther.withFastUTF8({ otherUTF8 in
        return _SmallString(smolSelf, appending: _SmallString(otherUTF8)!)
      }) {
        self = _StringGuts(smol)
        return
      }
    }

    prepareForAppendInPlace(otherUTF8Count: slicedOther.utf8Count)

    if slicedOther.isFastUTF8 {
      let otherIsASCII = slicedOther.isASCII

    self = result._guts
  }

  internal mutating func replaceSubrange<C>(
    _ bounds: Range<Index>,
    with newElements: C
