**SysML v2 API Java client version:** 2021-09 (commit: [Merge branch 'release/2021-09'](https://github.com/Systems-Modeling/SysML-v2-API-Java-Client/commit/09be58a2de0bb44fa8f4c9deb2537a0bdd822068) on Oct 15, 2021) **Steps to reproduce:** - Using the api client, create a project and a commit with some SysMLv2 element (e.g. with type `ActionDefinition`). - Send a request to get the created commit (use `getCommitByProjectAndId` method with the id of the created project and commit). The following simple project reproduces the problem: [api-client-bug-report.zip](https://github.com/Systems-Modeling/SysML-v2-API-Java-Client/files/8949144/api-client-bug-report.zip). Essential part: ```kotlin val projectApi = ProjectApi(defaultClient) val commitApi = CommitApi(defaultClient) // ... val project = projectApi.postProject(Project().apply { name = "demo project" }) val commit = commitApi.postCommitByProject(project.atId, Commit().apply { change = listOf(DataVersion().apply { val id = UUID.randomUUID() identity = DataIdentity().atId(id) payload = Data().apply { put("@id", id.toString()) put("@type", "ActionDefinition") put("empty", Random.nextBoolean()) } }) }, null) commitApi.getCommitByProjectAndId(project.atId, commit.atId) // Exception: cannot determine model class of name: <ActionDefinition> ``` **Expected output:** the result of the `getCommitByProjectAndId` request is a `Commit` object with the appropriate content. **Actual output:** an exception: `IllegalArgumentException: cannot determine model class of name: <ActionDefinition>` **Additional info:** the stacktrace reveals (see below) that the exception occurs in the [getClassByDiscriminator method of JSON.java](https://github.com/Systems-Modeling/SysML-v2-API-Java-Client/blob/09be58a2de0bb44fa8f4c9deb2537a0bdd822068/src/main/java/org/omg/sysml/JSON.java#L96) when trying to deserialize the response (more specifically when the payload of the commit change is deserialized). The source of the problem is that the `@type` property of the payload is used to determine the class for the result of the deserialization. The type (e.g. `ActionDefinition`) is searched in a hash map which only contains the key `Data` in our case (see the [creation of the hash map](https://github.com/Systems-Modeling/SysML-v2-API-Java-Client/blob/09be58a2de0bb44fa8f4c9deb2537a0bdd822068/src/main/java/org/omg/sysml/JSON.java#L67)). ```shell Exception in thread "main" java.lang.IllegalArgumentException: cannot determine model class of name: <ActionDefinition> at org.omg.sysml.JSON.getClassByDiscriminator(JSON.java:96) at org.omg.sysml.JSON.access$100(JSON.java:44) at org.omg.sysml.JSON$1.getClassForElement(JSON.java:69) at io.gsonfire.gson.TypeSelectorTypeAdapterFactory$TypeSelectorTypeAdapter.read(TypeSelectorTypeAdapterFactory.java:65) at io.gsonfire.gson.NullableTypeAdapter.read(NullableTypeAdapter.java:36) at io.gsonfire.gson.HooksTypeAdapter.deserialize(HooksTypeAdapter.java:86) at io.gsonfire.gson.HooksTypeAdapter.read(HooksTypeAdapter.java:54) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) at com.google.gson.Gson.fromJson(Gson.java:932) at com.google.gson.Gson.fromJson(Gson.java:897) at com.google.gson.Gson.fromJson(Gson.java:846) at org.omg.sysml.JSON.deserialize(JSON.java:163) at org.omg.sysml.ApiClient.deserialize(ApiClient.java:775) at org.omg.sysml.ApiClient.handleResponse(ApiClient.java:978) at org.omg.sysml.ApiClient.execute(ApiClient.java:905) at org.omg.sysml.api.CommitApi.getCommitByProjectAndIdWithHttpInfo(CommitApi.java:168) at org.omg.sysml.api.CommitApi.getCommitByProjectAndId(CommitApi.java:144) at MainKt.main(Main.kt:43) at MainKt.main(Main.kt) ```