     
     enum PersonWithShortName_Spec: SemanticTypeSpec {
         typealias BackingPrimitiveWithValueSemantics = Person
+        typealias Error = NameIsTooLongError
         
-        enum Error: Swift.Error, Equatable {
-            case nameIsTooLong(name: String)
+        struct NameIsTooLongError: Swift.Error, Equatable {
+            var name: String
         }
         
         static func gatewayMap(preMap: Person) -> Result<Person, PersonWithShortName_Spec.Error> {
             guard preMap.name.count < 5
-                else { return .failure(.nameIsTooLong(name: preMap.name)) }
+                else { return .failure(NameIsTooLongError(name: preMap.name)) }
             
             return .success(preMap)
         }

        XCTAssertEqual(bill.associatedGreeting, "Hello, my name is Bill.")
    }
    
    func testTryMap() {
        
    }
    
    

    static var allTests = [
        ("testInitialization", testInitialization),
        ("testBackingPrimitiveAccess", testBackingPrimitiveAccess),
        ("testSubscriptAccess", testSubscriptAccess),
        ("testTryMap", testTryMap),
    ]
}

        
        XCTAssertThrowsError(try PersonWithShortName(Person(name: "Joseph"))) { error in
            XCTAssertEqual(
                error as! PersonWithShortName.Spec.NameIsTooLongError,
                PersonWithShortName.Spec.NameIsTooLongError.init(name: "Joseph")
            )
        }
    }
