             }
         }
         
-        if let reply = parse(with: firstParser, successIfNoChangeFailure: !atLeastOne) {
+        if let reply = parse(with: firstParser) {
             return reply
         }
         
         while true {
             let stateTag = stream.stateTag
-            if let reply = parse(with: repeatedParser, successIfNoChangeFailure: true) {
+            if let reply = parse(with: repeatedParser) {
                 return reply
             }
             precondition(stateTag != stream.stateTag, infiniteLoopErrorMessage)

                errors = e
                valueCount += 1
            case let .failure(e) where stateTag == stream.stateTag:
                let satisfiesAtLeastOne = !atLeastOne || valueCount > 0
                if satisfiesAtLeastOne && (allowEndBySeparator || valueCount == 0) {
                    return .success(handler.result, errors + e)
                }
                return .failure(errors + e)

        var handler = makeHandler()
        var errors: [Error] = []
        var valueCount = 0
        let minValueCount = atLeastOne ? 1 : 0
        
        while true {
            let stateTag = stream.stateTag
