 
 	convenience init(_ arr : @escaping (T) -> U) {
 		var table = [T:U]()
-		self.init(table, { (_ : T) -> U in return undefined() })
+		self.init(table, { (_ : T) -> U in
+			fatalError("Table forced before initialization completed; is something re-entrant?")
+		})
 
 		self.arr = { x in
 			if let v = table[x] {


// MARK: - Implementation Details Follow


private func undefined<A>() -> A {
	fatalError("")
}

fileprivate final class ArrowOfImpl<T : Hashable & CoArbitrary, U : Arbitrary> : Arbitrary, CustomStringConvertible {
	fileprivate var table : Dictionary<T, U>
	fileprivate var arr : (T) -> U


	convenience init(_ embed : @escaping (T) -> U, _ project : @escaping (U) -> T) {
		var table = [T:U]()
		self.init(table, { (_ : T) -> U in
			fatalError("Table forced before initialization completed; is something re-entrant?")
		}, { (_ : U) -> T in
			fatalError("Table forced before initialization completed; is something re-entrant?")
		})

		self.embed = { t in
			if let v = table[t] {
