     /// - Precondition: `position` is a valid position in `self` and
     ///   `position != endIndex`.
     subscript(position: Int) -> UTF8.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 UTF8.CodeUnit(
-        extendingOrTruncating: data &>> (UInt64(position) &* 8))
+        extendingOrTruncating: _data &>> (UInt64(position) &* 8))
     }
 
     internal struct Iterator : IteratorProtocol {

    }

    internal func makeIterator() -> Iterator {
      return Iterator(data)
    }

    var count: UInt16
    var data: UInt64
  }

  struct _SmallUTF16 : RandomAccessCollection {

    init(_ u8: UInt64) {
      let utf8Count = Character._smallSize(u8)
      _sanityCheck(utf8Count <= 8, "Character with more than 8 UTF-8 code units")
      self._count = UInt16(utf8Count)
      self._data = u8
    }

    /// The position of the first element in a non-empty collection.
