   ///   - Parameter knownCountExceeds3: true if and only if the input is known
   ///   be at least 4 elements long.  If so, we can skip end checks.  Note: pass
   ///   a compile-time constant here or you will just slow the algorithm down!
-  static func parseReverseStateMachine<C: BidirectionalCollection>(
+  static func parse1Reverse<C: BidirectionalCollection>(
     _ input: C, knownCountExceeds3: Bool = false
   ) -> ParseResult<UInt32, C.Index>
   where C.Iterator.Element == UTF8.CodeUnit,

    return UInt8(_leadingZeros((~x)._value))
  }

  static func maskLeading1s(_ x: UInt8) -> UInt8 {
    return x & ((1 << (7 &- leading1s(x))) - 1)
  }
  
  /// Parses one scalar forward from `input`.

    let ret = checkDecodeUTF(TestUTF8.self, expectedHead, expectedRepairedTail, utf8Str)

    var reverseResult: [UInt32] = []
    UTF8.parseReverse(utf8Str, using: UTF8.parse1Reverse) {
      reverseResult.append($0.valid ?? 0xFFFD)
    }
    let expected = expectedHead + expectedRepairedTail
