   internal init(
     unicodeScalar: Builtin.Int32
   ) {
-    self._startPtrOrData =
-      unsafeBitCast(
-        UInt(UInt32(unicodeScalar)),
-        to: OpaquePointer.self
-      )._rawValue
+    self._startPtrOrData = UInt(UInt32(unicodeScalar))._builtinWordValue
     self._utf8CodeUnitCount = 0._builtinWordValue
     self._flags = UnicodeScalar(_builtinUnicodeScalarLiteral: unicodeScalar).isASCII
       ? (0x3 as UInt8)._value

    CustomDebugStringConvertible,
    CustomReflectable {

  // FIXME(ABI): RawPointer is non-nullable, but we can store a null Unicode
  // scalar in it.  Change it to an integer.
  //
  /// Either a pointer to the start of UTF-8 data, or an integer representation
  /// of a single Unicode scalar.
  internal var _startPtrOrData: Builtin.RawPointer

  /// If `_startPtrOrData` is a pointer, contains the length of the UTF-8 data
  /// in bytes.

    _precondition(
      hasPointerRepresentation,
      "StaticString should have pointer representation")
    return UnsafePointer(bitPattern: UInt(_startPtrOrData))!
  }

  /// The stored Unicode scalar value.
