 	)
 }
 
-internal class Box<T> {
-	let value : T
-	internal init(_ x : T) { self.value = x }
-}
-
-internal enum Either<L, R> {
-	case Left(Box<L>)
-	case Right(Box<R>)
+internal indirect enum Either<L, R> {
+	case Left(L)
+	case Right(R)
 }
 
 internal struct Arguments {

									, numTryShrinks: st.numTryShrinks
									, numTotTryShrinks: st.numTotTryShrinks
									, shouldAbort: abort)
			return .Left(Box((stat, nstate)))
		}
	default:
		fatalError("Pattern Match Failed: Rose should have been reduced to MkRose, not IORose.")

	quickCheckWithResult(stdArgs(name), p: prop)
}

/// MARK: - Implementation Details

internal enum Result {
	case Success(numTests: Int
