     /// reachable from `startIndex` by zero or more applications of
     /// `successor()`.
     var endIndex: Int {
-      return Int(count)
+      return Int(_count)
     }
 
     /// Access the code unit at `position`.

    /// - Precondition: `position` is a valid position in `self` and
    ///   `position != endIndex`.
    subscript(position: Int) -> UTF16.CodeUnit {
      _sanityCheck(position >= 0)
      _sanityCheck(position < Int(count))
      // Note: using unchecked arithmetic because overflow cannot happen if the
      // above sanity checks hold.
      return UTF16.CodeUnit(extendingOrTruncating:
        data &>> ((UInt64(count) &- UInt64(position) &- 1) &* 16))
    }

    var count: UInt16
    var data: UInt64
  }

  /// The character's hash value.

    /// - Precondition: `position` is a valid position in `self` and
    ///   `position != endIndex`.
    subscript(position: Int) -> UTF8.CodeUnit {
      _sanityCheck(position >= startIndex)
      _sanityCheck(position < endIndex)
      // Note: using unchecked arithmetic because overflow cannot happen if the
      // above sanity checks hold.
      return UTF8.CodeUnit(
        extendingOrTruncating: _data &>> (UInt64(position) &* 8))
    }

    internal struct Iterator : IteratorProtocol {
