 	return (st.successfulShrinkCount, st.failedShrinkStepCount - st.failedShrinkStepDistance, st.failedShrinkStepDistance)
 }
 
-private func reportExistentialFailure(_ st : CheckerState, res : Result) -> Result {
+private func reportExistentialFailure(_ st : CheckerState, res : QuickCheckResult) -> QuickCheckResult {
 	switch res {
 	case let .existentialFailure(_, _, _, reason, _, _, lastTest):
 		let testMsg = " (after \(st.discardedTestCount) test"

	}
}

private func doneTesting(_ st : CheckerState) -> Result {
	if !st.hasFulfilledExpectedFailure {
		if insufficientCoverage(st) {
			printCond(st.silence, "+++ OK, failed as expected. ")

			let (numShrinks, _, _) = findMinimalFailingTestCase(st, res: res, ts: ts())

			if !expect {
				let s = QuickCheckResult.success(numTests: (st.successfulTestCount + 1), labels: summary(st), output: "+++ OK, failed as expected. ")
				return .left((s, st))
			}

			let stat = QuickCheckResult.failure(
				numTests:    (st.successfulTestCount + 1),
				numShrinks:  numShrinks,
				usedSeed:    st.randomSeedGenerator,
