     if _fastPath(buffer.isEmpty) {
       guard let codeUnit = input.next() else { return .emptyInput }
       // ASCII, return immediately.
-      if Self._isScalar(codeUnit) {
+      if Encoding._isScalar(codeUnit) {
         return .valid(Encoding.EncodedScalar(containing: codeUnit))
       }
       // Non-ASCII, proceed to buffering mode.
       buffer.append(codeUnit)
-    } else if Self._isScalar(Encoding.CodeUnit(extendingOrTruncating: buffer._storage)) {
+    } else if Encoding._isScalar(Encoding.CodeUnit(extendingOrTruncating: buffer._storage)) {
       // ASCII in buffer.  We don't refill the buffer so we can return
       // to bufferless mode once we've exhausted it.
       let codeUnit = Encoding.CodeUnit(extendingOrTruncating: buffer._storage)

}

extension
 Unicode.UTF8.ForwardDecoder : _UTF8Decoder {
  public typealias Encoding = Unicode.UTF8
  
  public // @testable

//===--- UTF-16 Decoders --------------------------------------------------===//
//===----------------------------------------------------------------------===//

extension Unicode.UTF16 : UnicodeEncoding {
  public typealias EncodedScalar = _UIntBuffer<UInt32, UInt16>

