     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
+  /// Either a pointer to the start of UTF-8 data, represented as an integer,
+  /// or an integer representation of a single Unicode scalar.
+  internal var _startPtrOrData: Builtin.Word
 
   /// If `_startPtrOrData` is a pointer, contains the length of the UTF-8 data
   /// in bytes.

    utf8CodeUnitCount: Builtin.Word,
    isASCII: Builtin.Int1
  ) {
    self._startPtrOrData = _start
    self._utf8CodeUnitCount = utf8CodeUnitCount
    self._flags = Bool(isASCII) ? (0x2 as UInt8)._value : (0x0 as UInt8)._value
  }

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

  /// The stored Unicode scalar value.
