     /// - Precondition: `position` is a valid position in `self` and
     ///   `position != endIndex`.
     subscript(position: Int) -> UTF16.CodeUnit {
-      _sanityCheck(position >= 0)
-      _sanityCheck(position < Int(count))
+      _sanityCheck(position >= startIndex)
+      _sanityCheck(position < endIndex)
       // 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
+        _data &>> ((UInt64(_count) &- UInt64(position) &- 1) &* 16))
+    }
+
+    var _count: UInt16
+    var _data: UInt64
   }
 
   /// The character's hash value.

    /// reachable from `startIndex` by zero or more applications of
    /// `index(after:)`.
    var endIndex: Int {
      return Int(count)
    }

    /// Access the code unit at `position`.

    /// reachable from `startIndex` by zero or more applications of
    /// `successor()`.
    var endIndex: Int {
      return Int(_count)
    }

    /// Access the code unit at `position`.
