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

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

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